Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

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

AW: Problem: Panel.OnMouseLeave wenn Chldcomponente bemaust wird

  Alt 29. Apr 2013, 17:19
Wenn das Panel das Edit kennt, dann wäre das ein Ansatz:
Delphi-Quellcode:
procedure TodPanelCourt.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  ...
  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;
  ...
  GetCursorPos(pt);
  H := WindowFromPoint(pt);
  if (H = Handle) or (H = BitBtnCancel.Handle) then
    Exit;
  BitBtnCancel.Visible := False;
end;
Ansonsten kann man noch prüfen, ob sich die Maus noch über dem Panel befindet:
Delphi-Quellcode:
function IsMouseOverControl(const ctrl: TControl): boolean;
var
  sr: TRect;
begin
  sr := Rect(ctrl.ClientToScreen(Point(0, 0)), ctrl.ClientToScreen(Point(ctrl.Width, ctrl.Height)));
  result := PtInRect(sr, Mouse.CursorPos);
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat