Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: OnMouseEnter bzw. -Leave-Events realisieren

  Alt 11. Dez 2012, 17:13
In der VCL habe ich das mal so gelöst:

Delphi-Quellcode:
procedure TodPanelCourt.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if not odExist(odCourt) then
    Exit;
  if not odPanelGame.Visible then
    Exit;
  BitBtnCancel.Visible := True;
  BitBtnCancel.Left := Width - BitBtnCancel.Width;
  BitBtnCancel.Top := 0;
end;

procedure TodPanelCourt.CMMouseLeave(var Message: TMessage);
var
  pt: TPoint;
  H: hwnd;
begin
  inherited;
  if not odExist(odCourt) then
    Exit;
  GetCursorPos(pt);
  H := WindowFromPoint(pt);
  if (H = Handle) or (H = BitBtnCancel.Handle) then
    Exit;
  BitBtnCancel.Visible := False;
end;
Funktioniert meistens ganz gut, aber nicht 100%ig.

Ansonsten könnte man sich mit einem Timer behelfen, der nach einer Verzögerung prüft, ob die Aktion noch relevant ist.
Die mögliche Startverzögerung der Animation wird da sicher nicht helfen, die die vermutlich nicht mehr abzubrechen ist - oder?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat