Newsgroup: it.comp.appl.access
Titolo: problema gestione tag sottomaschera

Ciao a tutti,
Ho realizzato una maschera di immisione dei dati..
Nella maschera ho anche inserito una sottomaschera con dei controlli sempre
relativi ad un unica tabella principale (iscritti).
Nella maschera principale ho aggiunto dei pulsanti per spostarsi fra i
record, i pulsanti di modifica annulla nuovo etc..
Premendo "modifica" abilito alla modifica dei dati (ctl.locked e ctl.enabed
= true)..
Anulla, annulla la digitazione appena fatta e salva, salva il record appena
inserito.
Ho messo la function nel codice:
Function setTag(f As Form, pColor As Long, bBool As Boolean)
Dim ctl As Control
     For Each ctl In f.Controls
           If ctl.Tag = "blocca" Then
             ctl.Enabled = Not bBool
             ctl.Locked = bBool
             Select Case ctl.ControlType
                Case acTextBox, acComboBox, acListBox
                   ctl.BackColor = pColor
                Case acSubform
                   ctl.Locked = bBool
                   ctl.Enabled = Not bBool
             End Select
           End If
     Next ctl
End Function
Sul pulsante modifica, su pulsante nuovo ho messo il richiamo alla function
cosi:
Call setTag(Me, 16777215, False)
 If Me.Figlio.Visible = True Then
     Call setTag(Me!Figlio.Form, 16777215, False)
 Else
  Exit Sub
Su annulla invece:
Private Sub cmdAnnulla_Click()
On Error GoTo Err_cmdAnnulla_Click
    If Me.NewRecord Then
               Me.RecordsetClone.MoveLast
               Me.Bookmark = Me.RecordsetClone.Bookmark
               Me.Undo
               Screen.PreviousControl.Undo
               Me.cmdFirst.Enabled = True
               Me.cmdLast.Enabled = True
               Me.cmdPrev.Enabled = True
               Me.cmdNext.Enabled = True
               Me.cmdElimina.Enabled = True
               Me.cmdNew.Enabled = True
               Me.cmdModifica.Enabled = True
 
    Else
            If Me.Dirty Then
               Me.Undo
               Screen.PreviousControl.Undo
            End If
    End If
 
   Call setTag(Me, 16119285, True)
   If Me.Figlio.Visible = True Then Call setTag(Me!Figlio.Form, 16119285, True)
 
Exit_cmdAnnulla_Click:
    Exit Sub
Err_cmdAnnulla_Click:
    MsgBox Err.Description
    Resume Exit_cmdAnnulla_Click
End Sub
Sull evento form load della maschera principale ho impostato il richiamo
alla function in modo che la modifica sia bloccata..
Ho inserito sia function che richiamo anche nella sottomaschera..
Qquando la sottomaschera è visibile, premo il pulsante modifica, tutto ok mi
si abilitano i controlli, ma quando vado a modificare 1 controllo e poi
premo il pulsante annulla, mi dice:
impossibile disattivare il controllo che ha correntemente lo stato attivo
(stessa avviso con il pulsante salva)..
xo strano xke io su evento dopo aggiornamento della sottomaschera ho messo:
parent!tessera.setfocus in modo tale che il focus si spostasse su questo
controllo x ovviare a questo problema..(in testa ad ogni codice su evento
click dei pulsanti citati sopra inserivo me.tessera.setfocus)
Altro punto è che nei controlli della maschera principale, se modifico e
premo annulla, la digitazione viene annullata..mentre x i controlli della
sottomaschera (che fanno riferimento alla stessa tabella) non funzionano..
Come potrei fare?
grazie mille x l'aiuto sperando di non essere stato troppo confusionario
nell esporre il mio problema..
ciao ludo..
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ciao ludo..
Ho tagliato tutto perchè molto lungo...!
Non sono certo di aver capito bene, ma dai un'occhiata a questo Demo:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=155
Ciao
@Alex


Mi son spiegato malissimo.
La maschera che uso e la sottomaschera hanno come origine la tabella
iscritti..
L'abilitazione alla modifica dei controlli della maschera e sottomaschera
funzionano bene.
Il mio problema è:
Nel caso in cui la sottomaschera è nascosta e vado ad annullare le
digitazioni nei controlli con il pulsante annulla, tutto funziona
perfetttamente, mi annulla le digitazioni fatte..
Se però la sottomaschera con relativi controlli è visibile e faccio la
stessa operazione di annullamento, non mi annulla le digitazioni fatte nei
controlli della sottomaschera e in piu mi da l'avviso :impossibile
disattivare il controllo che ha correntemente lo stato attivo.
