Msflexgrid avec info bulles

Signaler
Messages postés
22
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
23 février 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour a tous,

J'ai le problème suivant avec ma gestion d'info bulle dans une msflexgrid.
Si j'ai deux ligne de renseigner dans la msflexgrid et que je passe la souris sur le reste de le fenêtre non renseigner l'info bulle s'affiche.
Qu'elle est la solution pour que l'info bulle s'affiche que sur les lignes renseigner dans la msflexgrid.

Merci, de votre aide.

8 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Comment (ton code) et dans quel évènement ?

Ceci, dans l'évènement MouseMove, ne devrait réagir que lorsque ta souris survole une ligne et une colonne

MSFlexGrid1.ToolTipText = MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, MSFlexGrid1.MouseCol)
Messages postés
22
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
23 février 2012

Voici, le morceau de code qui gére le MouseMove.



Private Sub FlgIntegres_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Infos As String

FlgIntegres.ToolTipText = FlgIntegres.TextMatrix(FlgIntegres.MouseRow, FlgIntegres.MouseCol)

If FlgIntegres.Rows > 1 Then
If FlgIntegres.MouseRow <= iI Then
If Indice = 1 Then
Call tt.Destroy
End If
LeTitre = " "
Infos = " "
LeTitre = "INFORMATION"
Infos = Trim$(tRefInteg(FlgIntegres.MouseRow).sRefInteg)
If Infos " " Or Infos "" Then
Call tt.Destroy
Exit Sub
End If
Infos = "Double-Click on the Line to Edit the Ticket"
Call tt.Display(FlgIntegres.hwnd, LeTitre, Infos, TTIconInfo)
End If
End If

End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Peux-tu nous expliquer ou t'expliquer à toi-même la logiquer de ces étranges lignes :

LeTitre = " " 
Infos = " " 
LeTitre = "INFORMATION" 
Infos = Trim$(tRefInteg(FlgIntegres.MouseRow).sRefInteg) 
If Infos " " Or Infos "" Then 

Commence par les commenter (en regard). Ce seul travail devrait t'éclairer sur leur rôle final

En dehors du fait que LeTitre sera forcément "INFORMATION"
et que Infos sera forcément " " lorsque tu ne survoles pas une cellule ?


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
On ne voit par ailleurs pas ce que fait tRefInteg, qui paraît être une fonction utilisant comme paramètre le n° du rang survolé et qui paraît être typée selon comme une structure (que nous ne voyons pas non plus)
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
22
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
23 février 2012

Le point que tu signal dans le code, me permet de récupérer la valeur de la cellule, mais malgré ceci l'info bulle s'affiche n? importe où dans la msflexgrid.
Je viens de retirer le morceau de code.

Si tu as une solution, je suis preneur.

Cdt



Private Sub FlgIntegres_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Infos As String

If FlgIntegres.Rows > 1 Then
If FlgIntegres.MouseRow <= iI Then
If Indice = 1 Then
Call tt.Destroy
Indice = 0
End If
LeTitre = " "
Infos = " "
LeTitre = "INFORMATION"
Infos = "Double-Click on the Line to Edit the Ticket"
Call tt.Display(FlgIntegres.hwnd, LeTitre, Infos, TTIconInfo)
End If
End If

End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
1) Je t'ai montré plus haut (suffisait de tester) comment récupérer "la valeur d'une cellule" ... !
2) la répéticion du code précédemment montré ne constitue pas une réponse à ce qui t'était demandé .....
3) nous ne pourrons parler de solution qu'après que tu auras bien voulu t'y mettre (commence par commenter chaque ligne, s'il te plait, et par nous montrer la structure utilisée pour typer ta fonction, ainsi que la fonction elle-même ... me relire !)
Lorsque l'on écrit une ligne de code (quelle qu'elle soit) on sait en général pourquoi on l'écrit et on sait donc dire (en cmettant un commentaire) .... le propos de cette ligne

Nous attendons de toi tout cela ! la solution ne fera que suivre ....
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Messages postés
22
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
23 février 2012

Après tes remarques, j'ai simplifié le code et mis des commentaires.

Je synthétise ma demande:

Lors de l'affichage de 3 lignes dans ma Msflexgrid qui peut en contenir 10.
Si je passe la souris au delà des 3 lignes d'afficher (partie vide de la Msflexgrid) l'info bulle s'affiche dans la partie non renseigné de la Msflexgrid.
Comment restreindre l'affichage de l'info bulle a la partie renseigné.

Cdt



Private Sub FlgIntegres_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Infos As String

' je test si j'ai au moins une ligne d'afficher dans la msflexgrid
If FlgIntegres.Rows > 1 Then
' Initialisation du titre et message
LeTitre = " "
Infos = " "
' Chargement du titre pour l'info bulle
LeTitre = "INFORMATION"
' Chargement du message pour l'info bulle
Infos = "Double-Click on the Line to Edit the Ticket"
' appel de la fonction d'affichage de l'info bulle en passant par le module de classe cToolTip.cls
Call tt.Display(FlgIntegres.hwnd, LeTitre, Infos, TTIconInfo)
End If

End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Lignes encore non commentées bien qu'ayant fait (plus haut) l'objet d'une remarque :
LeTitre " " ' Pourquoi donc, puisqier tu en définis ensuite, de toutes manières, la valeur "INFORMATION"
Infos = " "
Infos " " ' Pourqoi donc, puisqier tu en définis ensuite, de toutes manières, la valeur  "Double-Click on the Line to Edit the Ticket" 

et maintenant (on dirait que tu y vas à tâtons !), on ne sait pas ce que fait :

__Call tt.Display(FlgIntegres.hwnd, LeTitre, Infos, TTIconInfo) 

ni d'ailleurs : la valeur du paramètre TTIconInfo
ni comment tu fais un test sur cellule, puisquie tu n'en passes point
Bien qu'on devine que te voilà maintenant passé à une fausse fonction (une siomple routine, quoi !)... dont on ne sait tpoujours pas, de surcroît, ce qu'elle peut bien faire ou ne pas faire !
Tu voudras bien m'excuser, mais :
1) je n'aime pas suivre ce qui est sans cesse modifié, sans même avoir répondu (à) et montré ce qui était demandé
2) je ne suis pas un fan du jeu du poker javanais.
Un autre voudra bien prendre mon relais, dans ce cas . Désolé

__________________Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !