É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.
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.
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
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
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
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
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 ;)