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 694 fois - Téléchargée 748 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
Messages postés
1
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
20 août 2007

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 :-)
Messages postés
4
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
8 juin 2008

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
Messages postés
15
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
7 juin 2005

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
Messages postés
241
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

:) 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!!
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

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.