Odwrotne działanie wzg. OnMouseMove

Odwrotne działanie wzg. OnMouseMove
  • Rejestracja: dni
  • Ostatnio: dni
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.

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

Pozdrawiam i proszę o pomoc,
Multi

OO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 98
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

MI
  • Rejestracja: dni
  • Ostatnio: dni
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...

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
1

onmouseenter i onmouseleave

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0
Kopiuj
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;

  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuję wszystkim za pomoc. ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.