Einzelnen Beitrag anzeigen

Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Panel automatisch schließen

  Alt 16. Aug 2009, 00:53
Probier mal SetCapture.

Starthilfe:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Visible := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Visible := true;
  SetCapture(Panel1.Handle);
end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Pnt: TPoint;
  Rct: TRect;
begin
  GetCursorPos(Pnt);
  GetWindowRect(Panel1.Handle, Rct);
  if not PtInRect(Rct, Pnt) then
    Panel1.Visible := false
  else
    SetCapture(Panel1.Handle);
end;
Das ist nun zunächst mal ein Rundumschlag, der dir den systemweiten Mouseinput sichert, bis ein MouseUp oder -Down eintrifft. Den Feinschliff kannst du vielleicht mit PtInRect durchführen.

Guido.

Edit:
Beispiel-Code verbessert.
  Mit Zitat antworten Zitat