Używam Łazarza 0.9.30.Jak uzyskać bardziej płynne wskazówki dla komórek w TStringGrid?
Mam standardowy TStringGrid
w formularzu i chcę pokazać inną wskazówkę, gdy przesuję wskaźnik myszy nad tytułem kolumny. Używam tego kodu, aby to zrobić i to działa, ale często trzeba kliknąć komórkę, aby uzyskać podpowiedź do zmiany, kiedy naprawdę chcę, aby to się zmieniło, gdy przesunie się nad nią wskaźnik myszy. Mam wszystkie wskazówki przechowywane w kolekcji, którą przeszukuję, używając indeksu kolumny jako klucza. Czy istnieje sposób na sprawniejsze wyświetlanie wskazówek?
procedure TTmMainForm.SgScoutLinkMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
R, C: Integer;
begin
R := 0;
C := 0;
SgScoutLink.MouseToCell(X, Y, C, R);
with SgScoutLink do
begin
if (R = 0) then
if ((C >= 3) and (C <= 20)) then
begin
SgScoutLink.Hint := FManager.ScoutLinkColumnTitles.stGetColumnTitleHint(C-3);
SgScoutLink.ShowHint:= True;
end; {if}
end; {with}
end;
I Myślę, że wywołanie SgScoutLink.MouseToCell nie będzie działać zgodnie z oczekiwaniami. Oczekuje współrzędnych względem kontrolki TGrid, ale te w CursorPos są absolutnymi współrzędnymi ekranu. Dlatego SgScoutLink.ScreenToClient powinien zostać wywołany jako pierwszy. – dummzeuch
@dummzeuch 'THintInfo.CursorPos' zawiera względne współrzędne klienta w obrębie' THintInfo.CursorRect', a nie współrzędne ekranu –