Newsgroup: it.comp.appl.access
Titolo: Fuonzione ricorsiva per aggiornamento propietà controllo

Ciao a tutti
ho questa funzione che mi serve per bloccare i controlli di una form.
finchè blocco i controlli nella form e la sottomaschera tutto ok.
vorrei però che una volta individuata la sottomaschera questa funzione
blocchi i controlli presenti (se blocco la sottomaschera i pulsanti
rimangono comunque attivi).
posto il codice che magari si capisce meglio:
Public Sub BloccaOggetti(Fr As Form)
On Error GoTo ErrLock
Dim ctrl As Control, SubFr As Form
For Each ctrl In Fr
    If ctrl.Tag = "pub" Then
        Select Case ctrl.ControlType
            Case acCommandButton
                ctrl.Enabled = False
            Case acSubform
                ctrl.Locked = True
                If ctrl.Name = "SottomascheraVersamenti" Then
                     BloccaOggetti RIFSOTTOMASCHERA
                End If
            Case Else
        End Select
    End If
Next
ExtLock:
Exit Sub
ErrLock:
Select Case Err.Number
    Case 438
        MsgBox ctrl.Name
        Resume ExtLock
    Case Else
        MsgBox Err.Number & " " & Err.Description
        Resume ExtLock
End Select
End Sub
----
il mio problema è in RIFSOTTOMASCHERA, praticamente non riesco a
trovare l'espressione corretta per lanciare la routine...
esite una soluzione??
Grazie
Ciao
Nick

[CUT]
nel codice, non fate caso alla selzione if 
ctrl.name
 = "...." perchè
è una delle tante prove che ho fatto.. cmq la sostanza non cambia ;)
Ciao
Nick

 ha scritto nel messaggio 
news:1129716187....@g14g2000cwa.googlegroups.com...
[cut]
                If ctrl.Name = "SottomascheraVersamenti" Then
                     BloccaOggetti RIFSOTTOMASCHERA
---
prova con:     BloccaOggetti Fr.Form
ciao
Mat.
---
[cut]

 Nick
L'errore o l'omissione che commetti č che la funzione
giustamente essendo ricorsiva richiede come parametro
un'oggetto Form, il controllo in quel caso non lo passi
come Form, pertanto devi rendere esplicito il riferimento
cosě:
Case acSubform
         ctrl.Locked = True
         If ctrl.Name = "SottomascheraVersamenti" Then
                BloccaOggetti ctrl.Form
         End If
In ogni caso perchč devi fare una ricorsione se poi esegui
ctrl.Locked = True...?
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

"Potone" <mborroni_NO@SPAM_inwind.it> wrote in message
news:Snq5f.993$
VI2...@news.edisontel.com

Direi che non và bene.
Il riferimento nel ciclo non è Fr, ma ctrl, quindi....


 Direi che non và bene.
direi che hai ragione
ciao
Mat.


[CUT]
[quote @lex]
In ogni caso perchè devi fare una ricorsione se poi esegui
ctrl.Locked = True...?
[/quote]
attualmente ho "risolto" inserendo un altro ciclo all'interno della mia
sub:
case "acsubform"
     ctrl.locked 'blocco la sottomaschera e i controlli intesi come
tectbox, ecc
   for each ctrl2 in forms(fr).from(
ctrl.name
) 'ho cambiato il tipo di
variablie e l'ho messo come non definito (seguendo l'esempio sul
sitocomune
  ' qua controllo i pulsanti, perchè bloccando la sottomaschera i
pulsanti rimangono cmq attivi, ma alcuni io devo disabilitarli.
quello ceh volevo io era creare una funzione che indipendentemente dal
numero di sotomaschere nidificate mi bloccasse i controlli... così per
come è adesso blocca solo la prima sottomaschera (è anche vero che
non è permesso nidificare più di 3 sottomaschere se non erro... )
cmq appena torno al lavoro provo il ctrl.form.. e vi faccio sapere.
Grazie
Ciao
Nick