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

Salve,
stò utilizando la funzione esposta su Sitocomune 3.56 che
blocca e sblocca tutti i controlli di una form.
Mi suggerite come modificarla affinchè mi agisca su
tutti i controlli ad eccezzione di Combo1, Combo3 e Combo5 ?
In pratica tutto deve essere bloccato in apertura della form
ad eccezzione delle ComboBox indicate che servono per
ricercare il record da mostrare.
Grazie......

 ha scritto nel messaggio 
news:6717fe17-b770-465b...@h16g2000yqj.googlegroups.com...


Grazie......
Nell'ultimo ciclo inserisci un if dove sblocchi le tre combo
' blocca anche ogni sottomaschera
For Each ctl In Forms(mask).Controls
    'Debug.Print ctl.Name
    If ctl.ControlType = acSubform Then
        Forms(mask).Form(ctl.Name).Locked = valore
    End If
    if ctl.controlname = "combo1" or .... combo2 .... or then 
Forms(mask).Form(ctl.Name).Locked = valore
    end if Next ctl
Ciao-- Roberto da Parma 

Errore di compilazione!
' blocca anche ogni sottomaschera
For Each ctl In Forms(mask).Controls
    'Debug.Print ctl.Name
    If ctl.ControlType = acSubform Then
        Forms(mask).Form(ctl.Name).Locked = valore
    End If
    If ctl.ControlName = "CasellaCombinata385" Or
"CasellaCombinata373" or Then
Forms(mask).Form(ctl.Name).Locked = valore
    End If
Next ctl
Comunque anche correggendolo così,
    If ctl.ControlName = "CasellaCombinata385" Or
"CasellaCombinata373" Then
non funziona!
In apertura della Form Le combo rimangono bloccate

In apertura della Form Le combo rimangono bloccate
Puoi usare la proprietą TAG del controllo combo. nel loop per rendere locked i controlli aggiungi
if ctl.tag = "blocca" then
........blocca........
end if
nelle 3 che vuoi lasciare 'sbloccate' non metti nulla e il loop non le tocca
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 In apertura della Form Le combo rimangono bloccate
If ctl.ControlName = "CasellaCombinata385" Or _
   ctl.ControlName = "CasellaCombinata373" Or _
   ctl.ControlName = "CasellaCombinataXYZ" Then
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 - Nascondi testo citato -
Io devo mantenere "sbloccate" le combo, "non bloccate"!

 - Nascondi testo citato -
Anche così le combo continuano ad essere bloccate!
' blocca anche ogni sottomaschera
For Each ctl In Forms(mask).Controls
    'Debug.Print ctl.Name
    If ctl.ControlType = acSubform Then
        Forms(mask).Form(ctl.Name).Locked = valore
    End If
    If ctl.ControlName = "CasellaCombinata385" Or _
    ctl.ControlName = "CasellaCombinata373" Or _
    ctl.ControlName = "CasellaCombinata375" Then
End If
Next ctl
Uso Access 2003

 wrote:
---cut---
hai dimenticato:
    If ctl.ControlName = "CasellaCombinata385" Or _
    ctl.ControlName = "CasellaCombinata373" Or _
    ctl.ControlName = "CasellaCombinata375" Then
'==================================
Forms(mask).Form(ctl.Name).Locked = valore
'=================================
End If
Next ctl
Uso Access 2003
-- 
Ciao
Geppo 

 Geppo
Adesso è pomerigio:
Vediamo se a stomaco pieno si ragiona meglio!
Usato così:
'------------------------------
' blocca anche ogni sottomaschera
For Each ctl In Forms(mask).Controls
    'Debug.Print ctl.Name
    If ctl.ControlType = acSubform Then
    Forms(mask).Form(ctl.Name).Locked = valore
End If
    If ctl.ControlName = "CasellaCombinata385" Or _
    ctl.ControlName = "CasellaCombinata373" Or _
    ctl.ControlName = "CasellaCombinata375" Then
    Forms(mask).Form(ctl.Name).Locked = valore
End If
Next ctl
'---------------------------------------
le ComboBox rimangono sempre "BLOCCATE"
Vorrei invece fossere "SEMPRE SBLOCCATE"
Ciao
Princ..

Karl Donaubauer ha scritto:

Aspetta il codice che ti ho dato io č solo un suggerimento. Chiaramente va gestito tutto il resto. Per es, se nelle proprietŕ delle combo hai impostato BLOCCATA č ovvio che resta bloccata all'apertura.....
devi impostare tutto a bloccato=falso e poi usare la proprietŕ TAG, per esempio con BLOCCA dove vuoi che blocchi, SBLOCCA nelle altre (anche 1 e 2 se vuoi...). Poi con il ciclo prendi su solo i controlli con il tag che ti interessa......e non hai piů bisogno di utilizzare i nomi. Se cosě aggiungi un'altra casella basta il tag e il codice non lo devi toccare piů


 - Nascondi testo citato -
Grazie Fair97,
Il tuo esempio l'avevo capito ma non l'ho applicato perchè nella mia
Form sono presenti molti controlli (circa 80), vedo dispersivo
reimpostare la proprietà TAG in tutti i controlli di questa e di
eventuali altre Form.
Penso sia più logico in Apertura della Form Bloccare tutto a tappeto
ad eccezzione delle 3  Combo che userò per cercare i record da
caricare.
Comunque al momento non riesco a farla funzionare.
Spero che mi aiuterete come d'altronde avete sempre fatto!
--
Saluti
By Princ...

 ha scritto nel messaggio 
news:ab7ec6a9-a190-45d0...@p20g2000yqi.googlegroups.com...
---cut--
Adesso č pomerigio:
Vediamo se a stomaco pieno si ragiona meglio!
Se con la seguente blocchi i controlli, allora devi sostituire "valore" con 
"false" nella parte delle combo, perchč "valore" č sicuramente "true" in 
quanto blocchi gli altri controlli:
Usato cosě:
'------------------------------
' blocca anche ogni sottomaschera
For Each ctl In Forms(mask).Controls
    'Debug.Print ctl.Name
    If ctl.ControlType = acSubform Then
    Forms(mask).Form(ctl.Name).Locked = valore
End If
    If ctl.ControlName = "CasellaCombinata385" Or _
    ctl.ControlName = "CasellaCombinata373" Or _
    ctl.ControlName = "CasellaCombinata375" Then
'==============================
    Forms(mask).Form(ctl.Name).Locked = false
'===================================
End If
Next ctl
'---------------------------------------
le ComboBox rimangono sempre "BLOCCATE"
Vorrei invece fossere "SEMPRE SBLOCCATE"
Ciao
Princ..
-- 
Ciao
Geppo 

By Princ...
e allora metti il tag SOLO alle tre combo.......
if ctl.tag <> "lascia cosě com'č" then
     ctl.locked=true
end if


 - Mostra testo citato -
Geppo, non capisco il tuo ragionamento!
Fair87, mi faresti un esempio pratico con il mio codice che trovi
sopra?
Grazie a tutti.

Grazie a tutti.
allora, questo è il tuo codice
' blocca anche ogni sottomaschera 
For Each ctl In Forms(mask).Controls 
'Debug.Print ctl.Name 
If ctl.ControlType = acSubform Then 
Forms(mask).Form(ctl.Name).Locked = valore 
End If 
If ctl.ControlName = "CasellaCombinata385" Or 
ctl.ControlName = "CasellaCombinata373" Or 
ctl.ControlName = "CasellaCombinata375" Then 
Forms(mask).Form(ctl.Name).Locked = valore 
End If 
Next ctl 
Se tu hai una form con un sacco di controlli (combo, caselle di testo, caselle di controllo) tu metti sulle 3 che ti servono attive TAG = 1, in struttura metti TUTTE le caselle locked=true
il tuo codice diventa
    Dim Ctl As Control
    ' blocca anche ogni sottomaschera
    For Each Ctl In Me
    ' esegui il controllo sul TIPO di controllo, solo combo, testo....
    'niente etichette, x es
    If Ctl.Tag = "1" Then
    Ctl.Locked = False
    End If
    Next Ctl
L'ho provato su un pulsante e funziona perfettamente. Se al cntrollo aggiungi il tipo sub o quello che vuoi, basta avere il TAG = 1 e il codice non lo tocchi +
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 wrote:
---cut---
Geppo, non capisco il tuo ragionamento!
Se con la routine che hai postato blocchi i controlli vuol dire che la 
variabile "valore" restituisce "true", giusto?
Per questo, nella parte di codice dove vuoi non bloccare le combo la 
variabile "valore" deve restituire "false", ecco perchè ti ho detto di 
provare a scrivere "false" al posto della variabile "valore".
    If ctl.ControlName = "CasellaCombinata385" Or _
    ctl.ControlName = "CasellaCombinata373" Or _
    ctl.ControlName = "CasellaCombinata375" Then
'==============================
    Forms(mask).Form(ctl.Name).Locked = false 'valore
'===================================
End If
-- 
Ciao
Geppo