Soyez le premier à donner votre avis sur cette source.
Vue 7 660 fois - Téléchargée 747 fois
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
Form1.Controls("bouton " & i).Text par exemple
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
Le code marche impec pour les images aussi!!
(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 !)
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.