folgende Funktion öffnet das Popup Menu eines bestimmten Controls.
Delphi-Quellcode:
function ShowPopupMenu(control: TControl):Longint;
begin
control.Perform(WM_CONTEXTMENU, 0, Integer(PointToSmallPoint(control.ClientToScreen(Point(2, 2)))));
end;
Beispiel:
Ein Button zeigt beim Klick auf linke Maustaste sein Kontextmenu an
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowPopupMenu(Button1);
end;
Der Unterschied zum Einfachen verwenden von bereits vorhandenen Methoden ist:
Das Popup Menu wird geöffnet, ohne dass man das Popup Menu direkt kennen müsste. Könnte auch sein, dass der Button kein Popup Menu besitzt, aber dafür das übergeordnete Control. In diesem Fall öffnet sich das Popup Menu des Parent Controls. Durch das Versenden vom WM_CONTEXTMENU wird die Arbeit, das passende Popup-Menu zu öffnen, der
VCL übertragen.
[edit=Chakotay1308]Hinweis zum Unterschied angefügt. Mfg, Chakotay1308[/edit]