Evenements sur objets dynamiques

[Résolu]
Signaler
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010
-
Bonjour,
Je créé dynamiquement des label dans un form, jusque là, tout va bien. Seulement, je veux maintenant gérer des evenements (un click souris en l'occurence) sur ces labels. J'ai eu beau chercher sur internet ou ici, les techniques que j'ai vu n'ont pas fonctionnées (surement que je les ai mal utilisées, ca se pourrai bien! '-_-). Voici mon code  de création des objets:

Set my_object = Me.Controls.Add("vb.Label", "Lbl_sortie" & i, Frm_details_liste)
        With my_object
            .Alignment = 2
            .Caption = Data_frm_details.Recordset!Date_sortie
            .Font = "Lucida Sans"
            .Font.Size = 11
            .Top = 1200 + i * 360
            .Left = 720
            .Visible = True
            .Height = 255
            .Width = 1815
        End With

voila si quelqu'un pourrait m'aider?merci d'avance

3 réponses

Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Impossible de gérer les evt sur un controle créé de cette façon.
Une solution : faire un groupe de controle
1- ajoute un label sur ta form
2- fixe sa propriété Visible à false
3- fixe sa propriété Index à 0
4- ajoute un label comme ca :
Private LblCount As Long

...

lblCount = LblCount + 1
Load Label1(LblCount)
With Label1(LblCount)
.Alignment = 2
.Caption = ...
.Font = ...
.Top = ...
.Left = ...
....
.Visible = True
End With
5- Gères les EVTs click dans la sub Label1_click() : son argument Index t'indique le label clické
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

oulaaaa Kristof_Koder,
même si les contrôles indéxés sont à préférer (bien plus pratique à maintenir niveau code), ce n'est pas pour autant que c'est impossible !!

Option Explicit
Private WithEvents my_object As Label

Private Sub Form_Load()
'    Set my_object =
Me.Controls.Add("vb.Label", "Lbl_sortie" & i,
Frm_details_liste)
    Set my_object = Me.Controls.Add("vb.Label", "Lbl_sortie", Frm_details_liste)
        With my_object
            .Alignment = 2
            .Caption = "CAPTION" 'Data_frm_details.Recordset!Date_sortie
            .Font = "Lucida
Sans"
            .Font.Size = 11
            .Top = 200 '1200 + i *
360
            .Left = 720
            .Visible = True
            .Height = 255
            .Width = 1815
        End With
End Sub

Private Sub my_object_Click()
    MsgBox "CLICK"
End Sub

c'est aussi possible en plus compliqué avec l'objet Extender qui renvoie un évènement de type EventInfo

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
77
Date d'inscription
jeudi 11 octobre 2007
Statut
Membre
Dernière intervention
27 septembre 2010

Ok merci pour vos réponses.


J'ai gardé la technique de Kristof_Koder, elle est assez simple, par contre, pour la technique des objets dynamiques, rien à faire, rien ne se passe lors du click, alors je sais pas d'où ca vient, peut etre le "Private WithEvents my_object As Label" qui est mal placé, ou une référence que j'ai pas ajouté... je sais pas, bon enfin j'ai quand même trouvé une solution, même si ce problème d'objets dynamiques me chagrine...

Merci!