Newsgroup: it.comp.appl.access
Titolo: Blocca Sblocca

Ho appena visionato il codice per bloccare e sbloccare
maschera e sottomaschera, ma se ho una casella combinata
dove seleziono i record da ricercare , questa perde la sua
funzionalità, si riabilita solo quando premo lo sblocca.
 C'è un modo per farla funzionare mantenendo
 i record della mia maschera e sottomaschera bloccati?
Fred.

 ha scritto nel messaggio
news:Ytxmb.65275$vO5.2...@twister1.libero.it...

Se le cose stanno così, invece di bloaccare la maschera devi bloccare i
singoli controlli della maschera, naturalmente esclusi quelli che vuoi
lasciare sbloccati.
Se quindi dovessi bloccare tutti le caselle di testo e i controlli
sottomaschera, dovresti ciclare sututti i controlli della maschera e se i
controlli sono del tipo che ti interessa bloccarli.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Grazie per la risposta ho capito quello che mi vuoi dire,
ma non so metterlo in pratica.
Sto iniziando adesso ad interessarmi al vb.
Ciao e grazie.



Riprendendo l'esempio del Sito Comune,  se modifichi la funzione bloccaon
nel modo seguente:
Public Function bloccaon(mask)
Dim ctl As Object
' blocca ogni sottomaschera ed ogni casella di testo
For Each ctl In Forms(mask).Controls
    If ctl.ControlType = acSubform Or _
    ctl.ControlType = acTextBox Then
        Forms(mask).Form(ctl.Name).Locked = True
    End If
Next ctl
End Function
Così invece di bloccare la maschera bloccherai solo le caselle di testo e le
sottomaschere, ma le caselle combinate resteranno sbloccate.
Naturalmente modificherai anche la funzione sbloccamask che potrebbe
diventare:
Public Function sbloccamask(mask, prompt As Boolean)
Dim ctl As Object
' sblocca ogni sottomaschera ed ogni casella di testo
For Each ctl In Forms(mask).Controls
    If ctl.ControlType = acSubform Or _
    ctl.ControlType = acTextBox Then
        Forms(mask).Form(ctl.Name).Locked = False
    End If
Next ctl
End Function
Naturalmente dovrai modificare le due funzioni a seconda dei tipi di
controllo che dovrai bloccare e sbloccare.
-- 
Roberto


...

Roberto oggi provo il tutto e ti faccio sapere se ho risolto.

...

Oggi provo se funziona
grazie!

...

 Ho digitato il codice che mi hai suggerito ,ma mi riconosce variabile
non definita e mi evidenzia la stringa acTextBox.
Come devo agire?
Fred.

 ha scritto nel messaggio
news:f3bb4d49.03102...@posting.google.com...

Onestamente non so cosa dirti: per scrupolo ho provato la soluzione ch ti ho
suggerito ed a me funziona senza errori, d'altra parte acTextBox è una
costante figurativa e non va definita preventivamente.
Visto però che acTextBox ha il valore 109, prova così:
Public Function bloccaon(mask)
Dim ctl As Object
' blocca ogni sottomaschera ed ogni casella di testo
For Each ctl In Forms(mask).Controls
    If ctl.ControlType = acSubform Or _
    ctl.ControlType = 109 Then
        Forms(mask).Form(ctl.Name).Locked = True
    End If
Next ctl
End Function
e
Public Function sbloccamask(mask, prompt As Boolean)
Dim ctl As Object
' sblocca ogni sottomaschera ed ogni casella di testo
For Each ctl In Forms(mask).Controls
    If ctl.ControlType = acSubform Or _
    ctl.ControlType = 109 Then
        Forms(mask).Form(ctl.Name).Locked = False
    End If
Next ctl
End Function
-- 
