Textbox "virtuels" ( controls.add ) avec gestion d'evenements keypress

Contenu du snippet

Code a insérer dans n'importe quel Formulaire.
Permet de gérer l'évènement Keypress de zones de texte qui initialement n'existent pas et sont crées via la commande Controls.Add !

Source / Exemple :


' tout en code !

Option Explicit
Dim x As Byte
Dim nom_obj(6) As Object
Dim nom_obj_txt
'

Private Sub Form_Activate()
Me.KeyPreview = True
nom_obj_txt = Array("z0", "z1", "z2", "z3", "z4", "z5") ' nom des objets textbox 'virtuels'
For x = 0 To 5
    Set nom_obj(x) = Me.Controls.Add("VB.textbox", "z" & x, Me)  
   ' creation de 5 zones de texte "z0", "z1", "z2","z3","z4","z5"
    With nom_obj(x) ' définition des propriétés
        If x > 2 Then
            .Text = "Ajout routine zone texte n°" & x
        Else
            .Text = "Ajout routine zone texte n°" & x & "  - Supression appui touches alphabétiques"
        End If
        .MaxLength = 255
        .Tag = nom_obj(x).Name
        .Top = (1000 * x) + 500
        .Left = 1000
        .Visible = True
        .Width = 5000
        .Enabled = True
        .Locked = False
        ' etc........
    End With
Next x
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
' teste les evenements Keypress sur les champs z0,z1,z2
' pour info créer un évenement Private Sub z0_keypress(KeyAscii As Integer) ne fonctionne pas.. pour VB, le champ z0 n'existe pas
' et on ne peut pas ecrire Private Sub controls("z0")_Keypress(KeyAscii As Integer)

For x = 0 To 2 ' supression appui touches alpha sur champs "z0","z1","z2"
    If Me.ActiveControl.Tag = nom_obj_txt(x) Then KeyAscii = suppr_lettre(KeyAscii)
Next x
End Sub

Public Function suppr_lettre(Key) As Integer   ' suppression des lettres
If (Key < Asc(0) Or Key > Asc(9)) And Key <> 8 Then
    suppr_lettre = 0
Else
    suppr_lettre = Key
End If
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.