[0.9.31] StringGrid et Hint sur cellules
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 :
Code:
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; |
Je ne comprends pourquoi lorsque je balaye à la souris une ligne de la StringGrid
- 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).
Une explication ou une autre méthode ?
Merci Gilles.