Question 88

Comment ajouter dynamiquement des contrôles sur un form ?

Voici une première solution employant comme méthode les contrôles indexés. Pour que cet exemple fonctionne vous devrez préalablement ajouter un contrôle d'index 0 à la feuille.

Dim i As Integer

For i = 1 To 5
    Load Command1(i)
    Command1(i).Top = Command1(i - 1).Top + Command1(i).Height
    Command1(i).Visible = True
Next

Une seconde solution consiste à ajouter vos nouveaux contrôles à la collection de contrôles de votre form. Pour récupérer les événements des contrôles ajoutés par la suite, vous devrez les déclarer dans la section générale à l'aide du mot-clé "WithEvents".

Option Explicit

Public WithEvents txtPassword As TextBox

Private Sub Form_Load()

    Set txtPassword = Me.Controls.Add("VB.TextBox", "txtPassword")
    txtPassword.Move 840, 840, 3015, 315
    txtPassword.Visible = True

End Sub

Private Sub txtPassword_Click()

    MsgBox "Vous m'avez cliqué ?", vbQuestion

End Sub

Cette seconde solution est expliquée plus en détail sur la MSDN:

Date de publication : 16 septembre 2002
Dernière modification : 16 septembre 2002
Rubriques : Contrôles, Généralités
Mots-clés : contrôles, ajouter, dynamiquement, index, WithEvents, Load