Plusieurs Groupes de contrôle dans un groupe

thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005 - 27 nov. 2004 à 23:31
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Derniè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...

Merci d'avance

8 réponses

cs_clafouti Messages postés 78 Date d'inscription samedi 16 mars 2002 Statut Membre Derniè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.

Auteur de PrestoNotes, LE célèbre logiciel freeware de post-its développé en VB.
Découvrez-le sur http://users.chello.be/cr41007/index.html
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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 :

Call TousLesLabel_MouseMove(Label1(0), Index, Button, Shift, X, Y).

Par contre, il te faudras alors passer tes labels par référence à la fonction, mais ca devrait être faisable à gérer.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Derniè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.

Voilà voilà...
Merci

Seb
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
28 nov. 2004 à 13:35
Ok ok, merci pour vos réponse mais je crois cependant que je vais rester sur la solution de faire un événement par groupe...

Bye et merci à tous
Seb
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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

Et tu peux en faire une function.

Si ça peux t'aider........

Cordialement, CanisLupus
0
thesebinou Messages postés 21 Date d'inscription mercredi 5 novembre 2003 Statut Membre Dernière intervention 2 février 2005
29 nov. 2004 à 11:13
Merci CanisLupus, je vais étudier ta solution...

Bye
Seb,
0
Rejoignez-nous