Newsgroup: it.comp.appl.access
Titolo: Come togliere il fuoco da tutti i controlli di una sottomaschera?

La situazione e' la seguente.
Ho una form che contiene una sottomaschera. All'interno della
sottomaschera sono presenti diverse textbox. All'apertura, la
proprieta' Enabled viene settata a False per tutti i controlli.
Nella form e' presente un pulsante sul cui evento on click fa
partire del codice che verifica lo stato dei controlli della
sottomaschera. Se Enabled = True, allora setta Enabled a False
per tutti i controlli e viceversa. 
Il tutto funziona correttamente tranne che in un caso: se, dopo 
aver settato a True la proprieta' Enabled di tutti i controlli
della sottomaschera clicco su uno di essi(dandodogli dunque lo 
stato attivo), solo per tale controllo NON posso piu' modificare
la proprieta' Enabled. 
Anche settando il fuoco sull'oggetto che contiene i controlli
(la subform), il problema non si risolve perche' rimane memorizzato
da qualche parte che in quella subform una textbox aveva lo stato
attivo. Solo chiudendo e riaprendo la maschera tutti i controlli
perdono lo stato attivo, ma tale soluzione e' assolutamente impraticabile
per me.
Il mio problema allora e': come posso togliere lo stato attivo
da TUTTI i controlli della subform dopo che uno di essi ha gia'
acquisito tale stato?
 

 ha scritto nel messaggio
news:eEKBe.70063$h5.29...@news3.tin.it...

Sposta il fuoco su un controllo della maschera principale che non sia il
controllo sottomaschera.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel messaggio 
news:eEKBe.70063$h5.29...@news3.tin.it...

Invece di ciclare sui controlli della sottomaschera è sufficiente abilitare 
o disabilitare l'intera sottomaschera:
If Me.TuaSottomaschera.Enabled = False Then
Me.TuaSottomaschera.Enabled = True
Else
Me.TuaSottomaschera.Enabled = False
End If
Ciao, Carlo

 controllo sottomaschera.
grazie roberto, ma purtroppo non funge perche' access tiene in memoria da qualche parte
che il controllo taldeitali della subform e' attivo anche se togli il fuoco passandolo
ad un controllo della maschera principale.
se voglio adottare questa soluzione, devo proprio trovare il modo di togliere
lo stato attivo dall'ultimo controllo della subform che lo ha avuto.
altrimenti mi sfruttero' la proprieta' locked e giocero' con il colore di sfondo dei
controlli per far comprendere all'utente quando un record e' in modalita' solo
lettura od in modalita' modifica.

 End If
se la sottomaschera ha enabled = false, poi come faccio eventualmente
a scorrermi i record?

Pippo ha scritto:


Prova a fare prima un requery della maschera e poi spostare il fuoco su un
controllo della maschera principale come suggerisce Roberto.
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:hTVBe.167148$75.71...@news4.tin.it...

Sì hai ragione.
Nell'esempio seguente uso un pulsante "Comando151" che ha la caption 
impostata su "Disabilita" e si trova nella maschera principale:
Private Sub Comando151_Click()
Call DisabilitaControlli
End Sub
Private Sub AbilitaControlli()
On Error Resume Next
Dim ctr As Control
If Me.Comando151.Caption = "Abilita" Then
    Me.Comando151.Caption = "Disabilita"
For Each ctr In Me.TuoNomeSottomaschera.Controls
    With ctr
        If .ControlType = 109 Or .ControlType = 106 Or .ControlType = 111 
Then
        .Locked = False
        End If
        End With
Next
Else
Call DisabilitaControlli
End If
End Sub
Private Sub DisabilitaControlli()
On Error Resume Next
Dim ctr As Control
If Me.Comando151.Caption = "Disabilita" Then
    Me.Comando151.Caption = "Abilita"
For Each ctr In Me.TuoNomeSottomaschera.Controls
    With ctr
     If .ControlType = 109 Or .ControlType = 106 Or .ControlType = 111 Then
     .Locked = True
     End If
    End With
Next
Else
Call AbilitaControlli
End If
End Sub
Così funziona alla grande.
Ciao, Carlo