Kursor nie powraca do oryginalnego kształtu przy szybszych ruchach

0

Chodzi o to, że mam sobie w okienku obiekt typu Image i po najechaniu na ten obrazek kursor zamienia się w rączkę (crHandPoint) a po opuszczeniu powraca do crDefault. W tej chwili nie mam dostępu do tego kodu, ale ogólnie chodzi o to, że w zdarzeniu MouseMove mamy warunek że dla X i Y większych od 0 oraz mniejszych od odpowiednio width i height mamy Screen.Cursor:=crHandPoint a w każdym innym przypadku Screen.Cursor:=crDefault. No i ogólnie działa tak jak powinno, ale problem w tym, że gdy się kursor przesunie nad obrazek a potem go opuści zbyt szybko, to nie powraca do formy domyślnej i już zostaje jako taka rączka, tak jakby nie dostrzegał że wyszedł poza obszar obrazka. Trudno trochę zakładać że użytkownik za każdym razem będzie ostrożnie przesuwał kursor, dlatego chciałbym wiedzieć czy Delphi daje jakąś możliwość szybszego rozpoznawania ruchu kursora?

3

Przekombinowałaś jakie MouseMove do takich rzeczy służy CM_MOUSEENTER i CM_MOUSELEAVE np:

type
  TImage = class(ExtCtrls.TImage)
  private
    procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  end;

  TForm1 = class(TForm)
    Image1: TImage;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TImage.CMMouseEnter(var Msg: TMessage);
begin
  inherited;
  Screen.Cursor:= crHandPoint;
end;

procedure TImage.CMMouseLeave(var Msg: TMessage);
begin
  inherited;
  Screen.Cursor:= crDefault;
end;
0

Podziękował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1