Définition d'évènement pour des controls générés dynamiquement [Résolu]

Signaler
-
 Saiylar -
Bonjour,

Objectif : Je génère trois labels dynamiquement contenant le nom d'une personne. Je souhaite, après un clic sur un des noms générés, afficher une info-bulles de plusieurs lignes avec des informations sur cette personne (Age, Sexe, ...)

Problème : Je n'arrive pas à générer une info-bulle à plusieurs lignes. La commande ToolTipText des labels ne me sert à rien puisque apparemment, on ne peux écrire que sur une seule ligne

Je génère mes labels de la façon suivante après un click sur un bouton de mon form :

Private Sub Command1_Click()

Dim Tabl(3) As String

Tabl(0) = "Pierre"
Tabl(1) = "Marie"
Tabl(2) = "Michel"

For i = 1 To 3 Step 1
    Load Me.Label1(i)
    Label1(i).Visible = True
    Label1(i).Top = i * 1000
    Label1(i).Caption = Tabl(i - 1)
Next

End Sub

PS: J'ai un Label(0) sur mon form en masqué

Et maintenant je suis bloqué sur l'apparitions des infobulles ... J'ai essayé d'utiliser la fonction AddHandler mais VB6 ne reconnait pas la fonction :/ (peut etre qu'elle fonctionne uniquement sur des versions plus récentes ..)

AddHandler event, AddressOf eventhandler


Donc voila, si quelqu'un pouvait me filer un coup de main pour faire apparaitre ces infos-bulles, ca serait simpa ^^

Merci :)

5 réponses

Messages postés
14756
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
9 janvier 2021
151
Bonjour,

En général, en VB6, on préfères indexer les contrôles, c'est plus facile pour gérer les évènements.
Sinon, en création dynamique, j'avais essayer, il y a longtemps, et j'avais abandonné.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Bonjour Saiylar.

Je vous invite à lire sur internet
Prise en charge des info-bulles pour les utilisateurs de Visual Basic 6.0

Cordialement

Étant illettré, je signe d'une croix : ×
Vous pouvez également lire sur le net
Utilisation de P/Invoke pour appeler des API non gérées à partir de vos classes gérées


Étant illettré, je signe d'une croix : ×
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Nous sommes ici dans la section :
Forum > Visual Basic 6

Je rejoins alors TOTALEMENT l'avis donné par NHenry. Elle est de très loin, sous VB6, la solution la plus agile.




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Grace à vos réponses j'ai pu résoudre mon problème :D

J'ai fais comme ça :

Private Sub Label1_Click(Index As Integer)
  Select Case Index
  Case 1:
    If Label2.Visible = False Then
        'Positionnement du label
        Label2.Left = Label1(Index).Left + Label1(Index).Width + 200
        Label2.Top = Label1(Index).Top
        'Renseignement des informations
        Label2.Caption = "Age : 29 ans" & Chr(10) & "Sexe : Femme"
        'Affichage du label
        Label2.Visible = True
    Else
        'Masquage du label
        Label2.Visible = False
    End If
  Case 2:
  'ect ....
  End Select
End Sub


Merci ! ^^