Bonjour,
Je voudrais afficher des Hints sur certaines cellules d'une StringGrid lors de leur survol à la souris, avec un affichage de la bulle d'aide sans trop de latence. J'ai essayé de modifier la vitesse des Hint mais je me heurte au déclenchement de l'affichage de la bulle lors du saut d'une ligne à une autre ou d'une colonne à une autre.
La solution la plus satisfaisante que j'ai trouvée est la combinaison d'un TStaticText avec la TStringGrid :
Je ne comprends pourquoi lorsque je balaye à la souris une ligne de la StringGrid
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 procedure TFormMain.FormCreate(Sender: TObject); begin StaticTextHint.Parent := StringGrid1; end; [...] procedure TFormMain.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var aCol,aRow : integer; sMess : string; begin StringGrid1.MouseToCell(X, Y, aCol, aRow); if (aCol > 4) and (aCol < 8) and (aRow > 0) then begin sMess := IntToStr(aCol) + ',' + IntToStr(aRow); StaticTextHint.Left := X; //A cet emplacement pour assurer la fluidité StaticTextHint.Top := Y; //de l'affichage if StaticTextHint.Caption <> sMess then begin StaticTextHint.Caption := sMess; if not StaticTextHint.Visible then StaticTextHint.Visible := True; end; StaticTextHint.Refresh; //Obligatoire sinon superposition des caractères dans le TStatic ? end else StaticTextHint.Visible := False; end;
Une explication ou une autre méthode ?
- de gauche à droite, la fluidité de la bulle est saccadée,
- alors que si je balaye la même ligne de droite à gauche, la fluidité est "normale" (et ceci sans avoir lu une première fois la ligne de gauche à droite).
Merci Gilles.
Partager