Du könntest bei Links-Klick auf den Button ein Popupmenu aufpoppen lassen.
Und zwar an der Position, an der auch der Button liegt.
Das Popupmenu kümmert sich nicht um das Panel auf dem der Button liegt.
Ausserdem ändert es automatisch seine Position, falls es nicht vollständig auf den Screen passen würde.
Delphi-Quellcode:
procedure ShowControlPopupMenu(c: TControl; pm: TPopupMenu);
var
p: TPoint;
begin
Assert(Assigned(pm) and Assigned(c) and Assigned(c.Parent));
p := Point(c.BoundsRect.Right, c.BoundsRect.Top);
p := c.Parent.ClientToScreen(p);
pm.Popup(p.x,p.y);
end;
procedure TForm1.Button1Click(Sender:TObject);
begin
ShowControlPopupMenu(Sender as TControl, PopupMenuFuerButton1);
end;