Compléments pour Microsoft Access

http://access.fr.free.fr/

Verrouiller les contrôles (Formulaire)

Description 
Cette fonction permet de verrouiller un type de contrôle bien précis ou la totalité des contrôles d'un formulaire. Cette fonction retournera True si elle c'est exécuté correctement.
 
Synthaxe 

Variable_Boolean = LockedControls(strForm[, ControlType])

La synthaxe de la fonction LockedControls comprend les éléments suivants :

ElémentsDescription
strFormExpression de chaîne contenant le nom du formulaire dont on souhaite verrouiller les contrôles. Si l'argument strForm est une chaîne de longueur Null (""), la fonction LockedControls sera annulée et retournera la valeur False.
ControlType

Facultatif. Valeur numérique indiquant le type de contrôle que l'on souhaite verrouiler. Si elle est omise, tous les types de contrôles du formulaire seront verrouillés. Reportez-vous à la section Valeurs.

Section Valeurs :
L'argument ControlType prend les valeurs suivantes

ConstanteValeurDescription
acBoundObjectFrame108Cadre d'objet dépendant
acCheckBox106Case à cocher
acComboBox111Zone de liste modifiable
acCommandButton104Bouton de commande
acCustomControl119Contrôle ActiveX (personnalisé)
acImage103Image
acLabel100Etiquette
acLine102Trait
acListBox110Zone de liste
acObjectFrame114Cadre d'objet indépendant ou graphique
acOptionButton105Bouton d'options
acOptionGroup107Groupe d'options
acPage124Page
acPageBreak118Saut de page
acRectangle101Rectangle
acSubform112Sous-formulaire / Sous-tata
acTabCtl123Onglet
acTextBox109Zone de texte
acToggleButton122Bouton bascule

 
Exemple 

Si l'on souhaite verrouiller tous les contrôles du formulaire "Form1" et récupérer le résultat de la fonction dans une variable, on procèdera de la manière suivante :

Dim blnResultat as Boolean
blnResultat = LockedControls ("Form1")

Si par contre on avait souhaité verrouiller uniquement les zones de texte de ce même formulaire, on aurait procédé de la manière suivante :

Dim blnResultat as Boolean
blnResultat = LockedControls ("Form1", acTextBox)

Dans ces 2 exemples, si la fonction se déroule normalement, la variable blnResultat retournera True.

 

 
Code de la fonction 


Public Function LockedControls(strFrm As String, _
    Optional ControlType As AcControlType) As Boolean
 

Dim frm As Form
Dim ctl As Control

If IsNull(strFrm) Or strFrm = "" Then Exit Function

DoCmd.Echo False
DoCmd.OpenForm strFrm, acDesign

Set frm = Forms(strFrm)
For Each ctl In frm.Controls
    If IsMissing(ControlType) = True Then
        If ctl.ControlType <> 100 And ctl.ControlType <> 104 Then
            ctl.Locked = True
        End If
    Else
        If ctl.ControlType = ControlType Then
            ctl.Locked = True
        End If
    End If
Next

DoCmd.Close acForm, strFrm, acSaveYes
LockedControls = True
DoCmd.Echo True

End Function