thesebinou
Messages postés21Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 2 février 2005
-
27 nov. 2004 à 23:31
thesebinou
Messages postés21Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 2 février 2005
-
29 nov. 2004 à 11:13
Bonjour,
Est-il possible de réunir plusieurs groupes de labels dans un même groupe ?
Par exemple j'ai ce code dans une form
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Affichage_Numero.Caption = Label1(Index).Index
End Sub
Private Sub Label2_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Affichage_Numero.Caption = Label2(Index).Index
End Sub
Private Sub Label3_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Affichage_Numero.Caption = Label3(Index).Index
End Sub
est-il possible de faire un groupe du genre TousLesLabel et d'écrire un code du genre:
Private Sub TousLesLabel_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Affichage_Numero.Caption = TousLesLabels(Index).Index
End Sub
Je sais que ce doit être possible avec les collection mais je bloque...
cs_clafouti
Messages postés78Date d'inscriptionsamedi 16 mars 2002StatutMembreDernière intervention 7 septembre 2006 28 nov. 2004 à 08:49
J'ai pas essayé, mais ceci devrais marcher :
Plutôt que nommer tes labels LABEL1, LABEL2, LABEL3, ... nomme un label LABELX, et recopie-le (copier-coller) sur ta forme, VB va te demander si tu veux créer un groupe de contrôles. Clique 'oui' et c'est bon.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 28 nov. 2004 à 10:27
calfouti : tu n'as pas du comprendre (ou alors je n'ai pas compris moi même... ;) ) : il veut créer un groupe de contrôle à partir de groupes déjà crées.
En effet, tu peux passer par des collections, mais cela risque prendre pas mal de place si tu as beaucoup de labels !
Ce que tu peux faire par contre, c'est rediriger quelques événements de chaque groupes vers une fonction qui puisse traiter ces événements. Par exemple :
Private Sub Private Sub TousLesLabel_MouseMove(Control As Label, Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Affichage_Numero.Caption = TousLesLabels(Index).Index
End Sub
Et dans chaque événement MouseMove de tes groupes de Labels :
Par contre, il te faudras alors passer tes labels par référence à la fonction, mais ca devrait être faisable à gérer.
_______________________________________
thesebinou
Messages postés21Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 2 février 2005 28 nov. 2004 à 11:14
Bonjour,
En effet, calfouti n'a pas bien compris ce que je voulais...
Par contre, pour ta solution Dark Sidious, c'est interressant mais je recherche justement à ne pas créer d'événement pour chaque groupes de labels mais plutôt de ne créer qu'un seul événement mouse_move pour tous les labels de ma form...
Pour info, j'ai 10 groupes de labels !!! et je recherche simplement de quoi réduire mon code.
Vu que pour l'événement mouse_move je répéte 10 fois le même événement.
À la différence que je change juste le nom du groupe.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 28 nov. 2004 à 12:10
il suffit de jouer sur les indices, par exemple premier Groupe de 0 à 19, deuxième Groupe de 20 à 29, troisième Groupe de 30 à 39, etc..., bien sûr tous les Labels ont le même nom et rien ne t'empêche de commencer le deuxième groupe à 30, voire même à 100, suivant le nombre que tu as besoin dans chaque groupe.
Private Sub Label1_Click(Index As Integer)
Dim G As Integer
Dim i As Integer
G = Index \ 20
i = Index Mod 20
MsgBox = "Groupe= " & G & " Index= " & i
End Sub
Daniel
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 28 nov. 2004 à 12:11
Ben oui, mais je ne vois pas comment faire autrement à moins de ne faire qu'un seul groupe de contrôle, mais en définissant les index de façon à pouvoir savoir dans quel groupe tu te trouve : index de 1 à 100 pour le premier groupe, index de 100 à 200 pour le deuxième, etc. par exemple.
_______________________________________
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 28 nov. 2004 à 20:13
thesebinou > Je pense aussi qu'il n'y a pas d'autre solution que celle que tu as adopté. Mais si je veux me permettre, une petite piste pour regrouper tout ça.
Dim c As Control
For Each c In Me.Controls
If InStr(LCase(c.Name), "label") Then
On Error Resume Next ' au cas ou c pas un groupe
MsgBox c.Name & " " & c.Index
on error goto 0 ' on remet l'erreur à 0
End If
Next