Newsgroup: it.comp.appl.access
Titolo: Gestione Controlli in SubForm

Un nuovo giochino, ma un problema vecchio e forse banale:
Scenario:
Form Con SubForm con SubSubForm in pratica un sistema a N° livelli
All'interno della Form Principale ho un CommandButton "cmdClass"
dal quale voglio ABILITARE/DISABILITARE tutti i controlli all'interno
dell'Oggetto principale, sfruttando la Ricorsione come si vede sotto.
La Funzione gira regolarmente, ma arrivata al Controllo SubForm
che avvia la Ricorsione(Correttamente) trova un Controllo in SubForm
con lo stato Attivo che genera errore.
Ora il problema è che il Focus lo ha il mio "cmdClass" che ho premuto
perchè anche un SubControl ha il Focus....?
Come posso secondo voi aggirare il problema....?
L'effetto Finale è che Disabilita tutti i Controlli nella Form(Principale)
mentre nelle SubForm ne rimane sempre UNO non disabilitato(quello
che vede Attivo) mentre gli altri li gestisce regolarmente.
Sono arrivato alla conclusione che la Funzione lavora in modo Corretto, e
sarebbe da trovare il metodo per rimuovere il Focus dalle SubForm.
Forse mi sfugge qualche cosa.
Questo Demo è solo un prototipo che sto realizzando per una cosa un pò più
complessa e spero utile da Pubblicare.
Grazie.
'-------------------------------------- CODICE NELLA
FORM ----------------------------
Private Sub cmdClass_Click()
   Static blValue As Boolean
   Call SetControlState(Me, blValue)
   blValue = Not blValue
End Sub
Private Function SetControlState(frm As Access.Form, Value As Boolean)
    On Error GoTo Err_ControlState
    Dim ctl As Access.Control
    For Each ctl In frm.Controls
         Select Case ctl.ControlType
               Case acTextBox, acComboBox, acListBox, acOptionGroup, _
                     acCommandButton, acOptionButton, acCheckBox,
acToggleButton
                     If ctl.Tag = "" And ctl.Name <> "cmdClass" Then
                        ctl.Enabled = Value
                     End If
               Case acSubform
                     SetControlState ctl.Form, Value
         End Select
    Next
    Exit Function
Err_ControlState:
   ' Errore che intercetta il tentativo di Disabilitare il controllo con lo
stato Attivo
   If err.Number = 2164 Then
      cmdClass.SetFocus
     ' Anche abilitando questo non funziona.
     ' ctl.Enabled = Value
      Resume Next
   End If
    MsgBox err.Number & " " & err.Description
End Function
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 Grazie.
Non ti puoi creare un controllo non associato d'appoggio?
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa1 - I° Conferenza Italiana per Sviluppatori Access Arezzo 4+5
Giugno 2005 Sono aperte le iscrizioni  Info:  
www.donkarl.com/it

 Non ti puoi creare un controllo non associato d'appoggio?
La questione è esposta anche quì:
http://www.mvps.org/access/forms/frm0048.htm
Speravo di trovare un ByPass.
La difficoltà stà nel generalizzare l'uso dei Nomi(occorre un
Controllo
giustamente non associato che funga da Focus, che non disturbi, quindi
Larghezza ed altzza=0, e colori Trasparente, messo nell'angolo di tutte
le Form), in questo caso occorre però fare attenzione che la funzione
è
ricorsiva.
Così in ogni caso funziona, mi scoccia un pò avere questo vincolo, ma
uscirà un bel giochino....!
Ciao
