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.