Infobulle et survol de la souris + listview [Résolu]

djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 14:26 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 16 déc. 2005 à 09:44
Langage utilisé VB .NET (2003)

Bonjour,

je dispose d'un contrôle Listview, et j'y ai appliqué un tooltip aussi appelé infobulle.
Seulement voilà, le texte de l'infobulle, je voudrais le faire dynamique, et plus précisemment je souhaite récupérer la valeur d'un champ de la ligne que je survole.
En clair, sur l'évènement Mousemove (ou un autre évènement s'il y a une meilleure solution), je voudrais pouvoir retrouver l'indice de la ligne dans ma listview.
Encore dit autrement (du point de vue utilisateur), je voudrais que quand ma souris survole une ligne, j'affiche dans mon infobulle les infos de la ligne concernée.

De cette manière je pourrais ensuite aller rechercher des infos dans une Bdd pour remplir mon infobulles d'infos complémentaires qui ne sortent pas dans ma listview mais qui concernent les mêmes enregistrements.

-------------------------------------------------------------------------------

Pourquoi faire simple quand on peut faire compliqué?????
Afficher la suite 

12 réponses

djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 16 déc. 2005 à 08:05
+3
Utile
Bon après avoir fait n'importequoi hier soir (j'ai tatonné dans le vent sans voir mon erreur idiote), la nuit à porté conseil et ce matin j'ai solutionné mon problème en 20 min (problème qui était tout con en fait, si j'avais réfléchi un peu j'aurais pu trouver lol.

Voici ce que j'ai fait :


Dim texte
As
String = "Pas de données Tiers à afficher"



Dim stiers
As
String = ""



Dim tbinfo(3)
As
String



Dim j
As
Integer



'Me.LvTiers.HoverSelection = True



Dim elem
As ListViewItem



'Dim castlistview As ListView



Dim iTM
As ListViewItem



Dim iTMcompare
As ListViewItem



'castlistview = sender



For j = 0
To LvTiers.Items.Count - 1



If LvTiers.Items(j)
Is LvTiers.GetItemAt(e.X, e.Y)
Then


texte = LvTiers.Items(j).SubItems(1).Text



End
If



Next



Me.ToolTip1.SetToolTip(
Me.LvTiers, texte)

Et ça marche nickel... il me reste plus qu'à faire les traitements dont j'ai besoin sur ma Bdd pour récupérer les infos de l'item survolé.

Merci de votre aide!!!!

---------------------------------------------------

Pourquoi faire simple quand on peut faire compliqué?????That is the question
Cette réponse vous a-t-elle aidé ?  
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 déc. 2005 à 14:58
0
Utile
utilises la méthode HitTest, qui renvoie un Item d'après les coordonnées d'un point

Renfield
Admin CodeS-SourceS - MVP Visual Basic
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 15:23
0
Utile
euh je la trouve où cette méthode???
Merci pour la rapidité de ta réponse.
-----------------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 déc. 2005 à 15:41
0
Utile
euh.... c'est une méthode du ListView...
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 16:03
0
Utile
Heu, et bien j'ai beau chercher cette méthode, elle n'existe pas pour les Listview, en tout cas pas dans VB .NET 2003... :( (c'est d'ailleurs pour ça que je posais la question lol)

Pourquoi faire simple quand on peut faire compliqué?????That is the question
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 déc. 2005 à 16:05
0
Utile
existe dans VB6 et VB2005

étrange que ca aies disparu entretemps

Renfield
Admin CodeS-SourceS - MVP Visual Basic
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 16:21
0
Utile
j'ai même cherché dans l'aide de VB et j'ai pas trouvé...

c'est lié à une référence particulière???

j'avoue être perplexe sur ce point, ça m'étonne aussi...

j'essaie de faire autrement mais je galère grandement...

Pourquoi faire simple quand on peut faire compliqué?????That is the question
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 15 déc. 2005 à 16:27
0
Utile
As tu acces a une methode nommée GetItemAt ?

Renfield
Admin CodeS-SourceS - MVP Visual Basic
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 16:39
0
Utile
oui d'ailleurs j'essaie de l'utiliser mais apparemment je dois me planter qqch...

et pis je reprends le boulot de quelqu'un d'autre et j'arrive plus à utiliser le débugger en mode pas à pas avec des points d'arrêts...

Une petite idée???


J'avoue être plutôt un débutant dans l'environnement.

Pourquoi faire simple quand on peut faire compliqué?????That is the question
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 16:44
0
Utile
j'ai essayé ça mais ça plante systématiquement :


Private
Sub LvTiers_MouseMove(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles LvTiers.MouseMove

Try



Dim texte
As
String = "Pas de données Tiers à afficher"



Dim j
As
Integer



For j = 0
To LvTiers.Items.Count - 1



If LvTiers.SelectedItems.Item(j)
Is LvTiers.GetItemAt(e.X, e.Y)
Then


texte = "yoyo"



End
If
'



Next




Me.ToolTip1.SetToolTip(
Me.LvTiers, texte)



Catch ex
As Exception


MsgBox(ex.Message)



End
Try



End
Sub

J'obtiens le message d'erreur suivant à l'exécution : L'argument spécifié n'était pas dans les limites de la plage des valeurs valides. nom du paramètre : index.
comme je peux pas suivre en pas à pas, je vois pas trop d'où ça pourrait venir...

Pourquoi faire simple quand on peut faire compliqué?????That is the question
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 15 déc. 2005 à 16:44
0
Utile
j'ai essayé ça mais ça plante systématiquement :


Private
Sub LvTiers_MouseMove(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles LvTiers.MouseMove

Try



Dim texte
As
String = "Pas de données Tiers à afficher"



Dim j
As
Integer



For j = 0
To LvTiers.Items.Count - 1



If LvTiers.SelectedItems.Item(j)
Is LvTiers.GetItemAt(e.X, e.Y)
Then


texte = "yoyo"



End
If
'



Next




Me.ToolTip1.SetToolTip(
Me.LvTiers, texte)

Catch ex
As Exception


MsgBox(ex.Message)



End
Try



End
Sub

J'obtiens le message d'erreur suivant à l'exécution : L'argument spécifié n'était pas dans les limites de la plage des valeurs valides. nom du paramètre : index.
comme je peux pas suivre en pas à pas, je vois pas trop d'où ça pourrait venir...

Pourquoi faire simple quand on peut faire compliqué?????That is the question
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 déc. 2005 à 09:44
0
Utile
ah oui, ok, tu itérait sur

If LvTiers.SelectedItems.Item(j)

et non :

If LvTiers.Items(j)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.