Newsgroup: it.comp.appl.access
Titolo: enabled+visible

Ciao Ng
Sto cercando di impostare un ciclo for..next per impostare a tutti i
controlli che ho in una maschere a enable=false
visible=true
su caricamento ho scritto questo :
Dim ctl As Control
Dim frm As miamaschera
For Each ctl In frm.Controls
            ctl.Enabled = False
            ctl.Visible = True
 Next ctl
con l'errore del blocco with non impostato
Allora cosě:
 For Each ctl In frm.Controls
            With ctl
                .SetFocus
                .Enabled =false
                .Visible=true
            End With
    Next ctl
ma non cambia.
non capisco dove possa essere l'errore !
Grazie Ciao.

 Grazie Ciao.
Ciao Sandro,
non capisco perchè hai usato quella variabile frm as miaMaschera
se il ciclo viene effettuato sul caricamento della maschera che contiene i
controlli che vuoi disabilitare dovrebbe bastare fare così:
 Dim ctl As Control
 For Each ctl In me.Controls
              ctl.Enabled = False
              ctl.Visible = True
  Next ctl
dopodichè se l'errore persiste potrebbe essere dovuto al fatto che
sull'evento caricamneto i controlli in realtà non ci sono ancora per cui
potresti provare a spostarlo sull'evento Current e vedere cosa succede...
Facci sapere!
Cinzia

 Facci sapere!
ho spostato come da tuo consiglio le istruzioni su current e poi anche su
apertura ma l'errore che incontro è proprietà o metodo non riconosciuti
dall'oggetto in entrambe i casi.
infatti entrando in debug la riga gialla è  ctl.Enabled = False e scrivendo
ctl. non compaiono tra le scelte possibile nè enabled nè visible
Ho controllato prima di postare a voi nell'Help e le istruzioni da scrivere
non si discostavano da quanto riportato anche da te quindi non so se sia
necessario utilizzare una sorta di tabledefs o querydefs riferito però agli
oggetti della maschera in teoria no, doverebbe bastare for .. next così
impostato.
Se riesco ti faccio sapere, ma nel frattempo non mi abbandonare
Ciao.

 ha scritto

senza sapere qual e' il messaggio d'errore, provo a intuito.
se al clic sul form di una maschera collego questo codice
Private Sub Corpo_Click()
    Dim ctl As Control
    For Each ctl In Me.Controls
        With ctl
            .SetFocus
            .Enabled = False
            .Visible = True
        End With
    Next ctl
End Sub
access dice che non puo' fare .setfocus sull'etichetta74.
anche in vb le etichette non hanno il .setfocus. si usa il sistema di
mettere uno shortcut sull'etichetta, (&Autore, &Titolo), per far rimbalzare
il fuoco sul controllo successivo, di solito il relativo txtbox (txtAutore,
txtTitolo).
non so in access: sempre in vb, prima di usare il setfocus, poi, e'
obbligatorio fare un me.show del form.
non tutti i controlli, infine, e' detto abbiano la propr enabled. in vb,
shape non ce l'ha, mentre il timer non avrebbe .visible.
di solito si userebbe una sintassi che verifica il tipo di controllo, es.:
    If UteEdit Or UteNew Then
        For Each c In Me.Controls
            If (TypeOf c Is TextBox) Or (TypeOf c Is ComboBox) Then
c.BackColor = vbYellow
        Next
        txtId.BackColor = &H8000000F
        txtDatains.BackColor = &H8000000F
    Else
        For Each c In Me.Controls
            If (TypeOf c Is TextBox) Or (TypeOf c Is ComboBox) Then c.Locked
= True
            If TypeOf c Is CheckBox Then c.Enabled = False
        Next
    End If
-- 
hth, ciao, j.
http://www.sundaysw.com

 Private Sub Form_Open(Cancel As Integer)
Dim ctl As Control
For Each ctl In Me.Controls
        ' Verifica se il controllo è una casella di testo
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
            ' Imposta proprietà del controllo.
            With ctl
                .Enabled = False
            End With
        End If
    Next ctl
End Sub
la cosa che però non capisco è perchè se non faccio la tolgo la if non
funziona !
Ciao

 ha scritto nel
messaggio news:cn5t1q$cip$1...@lacerta.tiscalinet.it...

Ciao Sandro,
probabilmente l'errore è dovuto al  fatto che alcuni controlli nella
maschera non hanno la proprietà Enabled (ad esempio le etichette)
per cui dovresti testare il cipo e se è una textBox o un bottone o...
esegui l'istruzione altrimenti no
For Each ctl In me.Controls
            With ctl
                if  ControlType <> acLabel
                       .SetFocus
                      .Enabled =false
                     .Visible=true
                end if
             End With
    Next ctl
Verifica però che non ci siano altri controlli oltre alle label che non
supportano la proprietà Enabled.
Saluti
Cinzia


ti mando la soluzione finale :
Dim ctl As Control
For Each ctl In Me.Controls
            With ctl
                Select Case .ControlType
                    Case acTextBox
                        .Enabled = False
                        .Visible = True
                    Case acComboBox
                        .Visible = False
                    End Select
            End With
    Next ctl
Grazie alla prossima !

 Ciao
mi sono perso, forse perche' hai riscritto e la frase risulta un po'
contorta :)
se ho capito:
se togli / non metti l'if = il check sul tipo di controllo, vb(a) cerca di
settare le proprieta' enabled e visible, nonche' il metodo setfocus, su
*tutti* i controlli del form, o come lo si chiama in access, maschera.
pero' non tutti i controlli hanno disponibili le stesse proprieta'/metodi.
al primo che non corrisponde, il check si impalla.
nel tuo caso, probabilmente un label/etichetta. ma non so cos'hai messo
nella maschera.
se crei una maschera con *solo* txt/cbo/list, probabilmente il tuo primo
codice funziona.
ripeto: _probabilmente_. non conosco abbastanza access per esserne sicuro,
ma a logica dovrebbe.
in questi casi, la cosa migliore (a parte il guardarsi guide e manuali) e'
provare con una maschera dummy, mettendo e togliendo controlli, e leggendo
attentamente i messaggi di errore.


 ha scritto nel
messaggio news:cn5k2e$5k2$1...@lacerta.tiscalinet.it...

non puoi mettere il fuoco e renderlo invisibile.
Togli il fuoco
MAssimiliano