[Access] Disabilitare con una funzione i pulsanti in una sottomaschera

Anonimo
2010-02-04T11:13:11+00:00

Per preservare i dati in una maschera ho scritto questa funzione che usa il classico metodo del ciclare tra i

controlli per cambiarne le proprietà, nello specifico vengono bloccati (Locked) i campi o disabilitati 

(Enabled) alcuni pulsanti quando viene trovata nel loro Tag la dicitura rispettivamente "lock" o "disable". Tutto funziona correttamente nella maschera principale, dove richiamo questa funzione con un pulsante.

Il problema è che ho la necessità di disabilitare alcuni pulsanti in una sottomaschera. Per i campi non ci sono problemi in quanto ho il Tag "lock" nel controllo che la contiene, ma questo funzione non mi intercetta con il Tag "disable" i pulsanti contenuti nella sottomaschera e non riesco a trovare il modo di individuarli dalla funzione.

Come posso fare?

Public Function DisabilitaMask(mask, prompt As Boolean)

Dim risposta, valore As Boolean

Dim ctl As Object

If prompt = True Then

    risposta = MsgBox("Vuoi uscire dalla modalità modifica dati?", vbExclamation + vbYesNo, "Modifica")

    Select Case risposta

        Case vbNo

        Exit Function

        Case vbYes

    End Select

End If

For Each ctl In Forms(mask).Controls

    If ctl.Tag = "lock" Then ctl.Locked = True

Next ctl

For Each ctl In Forms(mask).Controls

    If ctl.Tag = "disable" Then ctl.Enabled = True

Next ctl

End Function

Massimo.

PS: non posso diabilitare il controllo sottomaschera ma solo bloccarlo, per permettere le ricerche ed il copia/incolla dei dati.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-02-04T12:28:23+00:00

Ciao,

Cambia la dichiarazione della function così:


Public Function DisabilitaMask(ByRef mask AS Form, ByVal prompt As Boolean)


e queste righe così


 For Each ctl In mask.Controls

      If ctl.Tag = "lock" Then ctl.Locked = True

Next ctl

 For Each ctl In mask.Controls

    If ctl.Tag = "disable" Then ctl.Enabled = True

 Next ctl


Poi dal tuo pulsante richiamerai la function sia per la maschera principale sia per la sottomaschera


DisabilitaMask Me,True

DisabilitaMask Me.NomeSottomaschera.Form,False


Ciao

Giorgio Rancati

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-02-06T10:21:55+00:00

    Scusa per il ritardo nella risposta ma sono stato un po' impegnato.

    Visto che nella function facevo svariate cose per evitare conflitti alla fine ho optato per una doppia variabile:

    Public Function DisabilitaMaskSub(ByRef mask As Form, ByRef submask As Form, ByVal prompt As Boolean)

    che richiamo con :

    DisabilitaMaskSub Me, Me.sottomaschera.Form, False

    e tutto funziona come deve.

    Grazie Giorgio, sei stato fondamentale per il funzionamento del codice.

    Massimo.

    La risposta è stata utile?

    0 commenti Nessun commento