Evenements sur objets dynamiques

Résolu
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 4 mars 2008 à 16:52
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010 - 6 mars 2008 à 09:14
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

Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
4 mars 2008 à 18:09
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é
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 mars 2008 à 14:20
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
0
pulpul74 Messages postés 77 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 septembre 2010
6 mars 2008 à 09:14
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!
0
Rejoignez-nous