Class et gestion d'évenement

Résolu
nowhere_man Messages postés 5 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 mai 2020 - 21 juin 2011 à 15:42
nowhere_man Messages postés 5 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 mai 2020 - 26 juin 2011 à 12:30
Bonjour,

Étant novice dans le domaine de la programmation, je rencontre un petit soucis concernant les "class".

voilà j'ai créé une class qui insère dynamiquement des labels. Ainsi, je peux ajouter autant de labels que je veux là où je clic, en utilisant un truc du genre :

Set obj = FormPrincipal.Controls.Add("label", "labelnumero" & i)
dans une méthode de ma class

Le problème que je rencontre, c'est pour récupérer un événement clic sur les labels créé dynamiquement.

J'ai compris qu'habituellement, quand ont construit visuellement l'interface au préalable il faut utiliser quelque chose comme :

sub label1_click()
MsgBox "clic sur le label1"
end sub

mais là, je met quoi ??
sub ???_click()
je sais pas à l'avance combien l'utilisateur va creer de label !?
comment creer une méthode au sein de ma class qui renvoie le nom du label cliqué?

est ce que c'est quelque chose du genre ?
sub obj_click()


Excuser moi de pas forcément utiliser le bon vocabulaire, et merci pour vos réponses.






Doute de toi même, avant de douter des autres .

8 réponses

pacifikateur Messages postés 4 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 21 juin 2011
21 juin 2011 à 16:07
Salut,

Ton problème est plus un problème de compréhension que de code.
La fonction généré par l'editeur qui est lier au click sur un label est lier a ce label dans la partie de code généré automatiquement de ton interface (le form1.g.vb si je ne m'abuse)

toi tu cree dynamiquement ton control tu doit donc faire toutes les ligne de code a la mains (dimensionnement, positionnement, couleur,.....).

j'envoi ce code plus au moins au hazard mais le resultat final devrai y ressemblé :
Set obj as label = FormPrincipal.Controls.Add("label", "labelnumero" & i)

addHandler obj.onClick , AdressOff mafonctionClickSuLabel

private sub  mafonctionClickSuLabel(sender as Object, e as eventArg)
messageBox.show("coucou")
end sub


le addHandler abonne une fonction sur l'evenement click du label.
voila ton probleme devrai etre résolut.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2011 à 23:16
Bonjour,

Pour un novice en développement, evite de te compliquer la vie.
VB6 (si tu développes bien sous VB6 et non VBA d'office) :
- sait gérer les groupes de contrôles indexés

regarde ce que fait ceci :
Un nouveau projet
sur un Form :
- un contrôle label nommé Label1
- mets 0 (zéro) à la propriété Index de ce label

et ce code exemple):

Private Sub Form_Activate()
  Label1(0).Move 0, 0, 1000, 1000
  For I = 1 To 3
    Load Label1(I)
    Label1(I).Caption = "monlab N° " & I
    Label1(I).Visible = True
    Label1(I).Move Label1(0).Width * I
  Next
End Sub


Private Sub Label1_Click(Index As Integer)
  MsgBox "tu as cliqué sur le label label1(" & Index & ")" & _
  " dont le caption est " & Label1(Index).Caption
End Sub

Lance ===>> tu as maintenant 4 labels indexés
Clique sur l'un d'entre eux et regarde.

Tu comprendras vite
Plus simple, non ?



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
3
Utilisateur anonyme
22 juin 2011 à 22:46
Bonsoir,
Étant novice dans le domaine de la programmation

C'est dommage de débuter avec un langage obsolète
Bonne nuit.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 juin 2011 à 23:20
Bonjour, banana32
C'est dommage de débuter avec un langage obsolète

Lorsque (personnellement) je passerai à autre chose, ce ne sera en aucun cas pour aller vers VB.Net (que j'estime lourd et lent)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

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

Posez votre question
Utilisateur anonyme
23 juin 2011 à 13:23
Bonjour ucfoutu,
VB.Net (que j'estime lourd et lent)

C'est aussi ce que je me suis dit en passant de vb6 à vb.net mais après avoir observé l'explorateur d'objets qui dévoile les possibilités offertes par le framework, l'intellisense qui aide énormément grâce à la suggestion de syntaxe et enfin l'aide des cours de Mr Plasserre, je me suis dit que ça valait le coup d'essayer.
Tu penses migrer vers quel langage ?
Bonne après-midi
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 juin 2011 à 13:30
Tu penses migrer vers quel langage ?

Après ce que j'ai compris des buts (à peine cachés) de Microsoft ? ===>> n'importe quoi (y compris JAVA) qui ne soit pas Microsoft.
Mais à chacun son regard posé sur les choses, hein ! Le mien est celui d'un vieux singe et d'un non-maso.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
nowhere_man Messages postés 5 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 mai 2020
26 juin 2011 à 12:17
Doute de toi même, avant de douter des autres .
merci pour ces deux possibilités bien utiles !!!
0
nowhere_man Messages postés 5 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 8 mai 2020
26 juin 2011 à 12:30
Du coup la solution de pacificateur correspond exactement à ce que j'avais en tête, mais je vais plutôt mettre en œuvre la solution d'ucfoutu finalement beaucoup plus pratique ;)

merci encore

Doute de toi même, avant de douter des autres .
0
Rejoignez-nous