Odwrotne działanie wzg. OnMouseMove

0

Witam,

Mam problem, a mianowicie np: Jak mamy na Form-ie Button-a, dodałem zdarzenie OnMouseMove, gdzie gdy kursor znajdzie się nad Form-ą Button zostanie wyświetlony. Teraz jest pytanie jak zrobić zdarzenie odwrotne, a mianowicie, aby gdy kursor znajdzie się poza zasięgiem Form-y , Button został schowany. Nie znalazłem z zakładce Events niestety ani OnMouseOut ani czegoś o podobnym działaniu.

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
button1.Show;
end;

Pozdrawiam i proszę o pomoc,
Multi

0

Hmm, z braku deplhi nie sprawdzę ale sugerowałbym coś takiego:

1.OnCreate: Testujesz czy mysz znajduje się nad formą i odpowiednio ustawiasz widoczność przycisku
2.OnMouseMove: Testujesz czy mysz znajduje się nad formą i odpowiednio ustawiasz widoczność przycisku

Edit:
Wygogliłem takie cuś:
http://www.delphipages.com/forum/showthread.php?t=168117

0

hmm, w timerze albo w osobnym wątku pobierać położenie myszki za pomocą
CetCursorPos(p:TPoint);
i sprawdzać czy jest w obrzarze okna ALBO założyć hooka na myszke i sprawdzac położenie w pętli...

1

onmouseenter i onmouseleave

0
procedure TForm1.WndProc(var Message: TMessage);
begin
  if (Message.Msg = CM_MOUSELEAVE) then
  begin
    Caption:='mysz poza formą';
  end;
  if (Message.Msg = CM_MOUSEENTER) then
  begin
    Caption:='mysz nad formą';
  end;
  inherited WndProc(Message);
end;

0

Dziękuję wszystkim za pomoc. ;)

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