Ich habe in einer meiner Komponenten das verwendet:
Delphi-Quellcode:
procedure TForm1.PopUpMyDropDownMenu;
var atp:TPoint; Msg:TMsg;
begin
atp := ClientToScreen(Point(0, Height));
MyDropDownMenu.Popup(atp.x,atp.y);
while PeekMessage(Msg, 0, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) do; //warten damit falls nicht in menü sondern in irgend andere Control geklickt wird, unten gedrückt wieder entfernt wird
MouseUp(mbLeft,[],1,1);
end;
Erkärung:
MyDropDownMenu ist ein TPopupMenu;
Du rufst einfacht in dein Programm PopUpMyDropDownMenu anstatt MyDropDownMenu.Popup;
Die Prozedur PopUpMyDropDownMenu öffnet das Menü und wartet bis irgendwas gewählt ist.