Cześć,
zaczęło mnie nurtować kolejne zagadnienie związane z onMouseMove. Działanie jest proste i oczywiste, natomiast zauważyłem, że zdarzenie jest wywoływanie wewnątrz obecnie aktywnej kontrolki. Czyli gdy mam Image i StatusBar to mogę zrobić tak, że znam pozycję kursora, gdy w Image.onMouseMove wpiszę:
StatusBar1.Panels.Items[0].Text := 'X: ' + IntToStr(X) ;
StatusBar1.Panels.Items[1].Text := 'Y: ' + IntToStr(Y);
Natomiast nie mam możliwości zrobienia tak, żeby to StatusBar jakby sam odświeżał się gdy zachodzi onMouseMove dla Image. Przykład jest prosty, żeby wprowadzić w moje rozumowanie. Dokładnie chcę to zastosować tak, że w konstruktorze własnej klasy tworzę komponent typu TImage i przypisuje mu onMouseMove, a szukam rozwiązania jak pobrać to z poziomu StatusBar. Chodzi mi o samo zagadnienie, ponieważ praktycznie łatwiej jest przekazać do klasy uchwyt do StatusBar i tak tym zarządzać.
Zacząłem szukać czy jest coś na zasadzie "globalnego MouseMove" trafiłem na TControl.SetCaptureControl() i nie umiem do końca użyć. Nie mogę napisać:
StatusBar.SetCaptureControl(Image);
lecz musi być samo
SetCaptureControl
Szukałem też w TMouse. Sprawdzałem jak działają akcje i czy jest coś na zasadzie wyzwalaczy (takie powiadomienie push od klasy do StatusBar). I tutaj w sumie powinienem się zatrzymać i wrócić do pierwotnych założeń.
Pytanie brzmi czy w Delphi można zrobić tak, że StatusBar odświeża się nawet gdy obecnie poruszamy myszą po innym komponencie?
Zastanawia mnie to, ponieważ MouseMove jednak pobiera parametr Sender: TObject;