Création dynamique d'object et evenements associes en 2 methodes (add et index)

Soyez le premier à donner votre avis sur cette source.

Vue 7 861 fois - Téléchargée 769 fois

Description

Bonjour à tous c'est la première source que je dépose.
Le but étant de créer dynamiquement 2 boutons et d'y attribuer un évènement click pour faire apparaitre le nom du bouton.

Source / Exemple :


Option Explicit
'déclaration des évènements par méthode .ADD
Private WithEvents bouton As CommandButton

Private Sub Form_Load()

'====================== CREATION DYNAMIQUE PAR ADD ========================

'pour faire 2 147 483 647 controles maximums  ;=)
Dim i As Long
   
'faire 3 controles
For i = 0 To 2
   'création dynamique
   Set bouton = Controls.Add("VB.CommandButton", "nom_du_bouton" & i)
   'propriétés des boutons
   With bouton
      .Visible = True
      .Width = 4000
      .Caption = "Bouton crée dynamiquement avec .ADD " & i
      .Top = 500 + 1000 * i
      .Left = 1000
   End With

Next i

'affiche le nom des controls dans fenetre debug
For i = 0 To Me.Controls.Count - 1 Step 1
    Debug.Print Me.Controls(i).Name
Next

'====================== CREATION DYNAMIQUE PAR INDEX =======================

'un controls label1(0) est placé initialement sur la feuille
Dim j As Long
 
'creation de 2 boutons en plus du premier crée manuellement
For j = 1 To 2
    Load Me.Label1(j)
    Me.Label1(j).Left = Me.Label1(j - 1).Left
    Me.Label1(j).Top = Me.Label1(j - 1).Top + 1000
    Me.Label1(j).Caption = "Label1(" & Trim(CStr(j)) & ") crée par INDEX" 'suppression des espaces pour le nom
    Me.Label1(j).Visible = True
Next j
 
End Sub

'problème l'évènement ne porte que sur le dernier bouton crée et c'est ça mon problème
'y a t il une solution en VB6 (je sais qu'on peut le faire en VB.net)
Private Sub bouton_Click()

MsgBox (bouton.Name)

End Sub

'pas de problème pour l'évènement gérer par index
Private Sub Label1_Click(Index As Integer)

MsgBox (Label1(Index).Name)

End Sub

Conclusion :


Je n'arrive pas à créer un événement distinct pour chaque bouton par la méthode ADD
Merci de faire des commentaire afin d'améliorer la cette source ;=)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Baquardie Messages postés 1 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 17:14
Ce qui importe à l'employeur n'est pas le code utilisé mais bien le résultat et le temps utilisé pour l'obtenir. La méthode par index a donc parfaitement répondu à mon besoin et à la réalité d'entreprise. Vite et efficace. Merci :-)
AmonRa94 Messages postés 4 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 8 juin 2008
9 janv. 2006 à 11:28
Avec la premiere méthode il faut utiliser cette méthode pour récuperer toute les propriétées des boutons ainsi que les évenements

Form1.Controls("bouton " & i).Text par exemple
arnaud_vb6 Messages postés 15 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 7 juin 2005
26 janv. 2005 à 16:02
Salut mythic_kruger

je te remercie

la création par index est vraiment bien et ça marche pour tout les éléments (bouton, image, flexgrid...)

en plus c plus facile à utiliser que l'autre méthode
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005
26 janv. 2005 à 00:44
:) Arnaud j' ai mis 10 j' aime bien ta CREATION DYNAMIQUE PAR INDEX sans la méthode Add.
Le code marche impec pour les images aussi!!
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
28 avril 2004 à 12:41
Oui mais les API, c'est encore du trop haut niveau pour moi, il vaut mieux travailler en plus bas niveau encore : en assembleur !
(je voulais dire la seule méthode "normale" de récupération des événements, c'est-à-dire du code propre, réutilisable, portable, pérenne, compréhensible, ... enfin du vrai code quoi !)
Afficher les 10 commentaires

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.