Popupmenü in Delphi dynamisch erstellen

Ein Popup-Menü lässt sich unter Delphi leicht dynamisch erstellen. Das vorliegende Beispiele verwendet TMS-Komponenten, aber man kann hierzu auch leicht die eingebauten Delphi – Komponenten verwenden.

Um das Beispiel nachzuvollziehen, wird ein einfaches VCL-Projekt angelegt mit einem Formular.

Auf diesen Formular werden ein TAdvGlowButton sowie ein TAdvPopupMenu platziert – beide könnte man natürlich auch dynamisch erzeugen.

Zum dynamischen Hinzufügen der Menüeinträge sollte folgender Code in das FormCreate-Ereignis aufgenommen werden:

procedure TForm1.FormCreate(Sender: TObject);
var MenuItems:Tstringlist; i:Byte;
newItem:TMenuItem;
begin
MenuItems:=TStringlist.Create;
MenuItems.Add(‚Eintrag 1‘);
MenuItems.Add(‚Eintrag 2‘);
MenuItems.Add(‚Eintrag 3‘);
MenuItems.Add(‚Eintrag 4‘);
for i := 0 to menuitems.Count-1 do
begin
NewItem:=TMenuItem.Create(AdvPopupMenu1);
NewItem.Caption:=menuitems.Strings[i];
NewItem.OnClick := PopupItemClick;
NewItem.tag:=i;
self.AdvPopupMenu1.Items.Add(newItem);
end;
menuItems.Free;
end;

Die OnClick-Routine wird dem Privat-Abschnitt der Form hinzugefügt:

private
{ Private-Deklarationen }
procedure PopupItemClick(Sender: TObject) ;

und dann im Implemenationsabschnitt hinzugefügt

procedure TForm1.PopupItemClick(Sender: TObject) ;
var x:Byte;
begin
x:=(sender as TMenuItem).tag;
showmessage(‚Sie haben Eintrag ‚+IntToStr(x+1)+‘ ausgewählt‘);
end;

Um zu wissen, welcher Menüeintrag geklickt wurde, wird die Tag – Eigenschaft des jeweiligen Menüeintrags verwendet, diese könnte dann in PopupItemClick

wie folgt ausgewertet werden:

case x of
0 : …;
1 : …;
end;

Selbstverständlich könnte man auch jedem Menüeintrag einen eigenes OnClick-Event zuweisen.

Die Stringlist ‚MenuItems‘ könnte natürlich auch aus einer Textdatei gespeist werden:

MenuItems.loadfromfile(‚Ihre Datei‘);

Jede Zeile der externen Datei enthält dann einen Menüeintrag.

Das Ganze lässt sich natürlich noch erheblich ausbauen, ist aber bereits eine vollständige Basis für ein dynamisch erstelltes Popmenü. Beispiel zum Herunterladen (Benötigt TMS Komponenten und Delphi 2009).

Viel Spaß beim Tüfteln!

Werbung & Infos:

Nero Platinum Bundle Angebot mit 9 Vollversionen GratisNero Platinum Bundle Angebot:

Nero Platinum Suite Bundle Angebot mit 9 Programmen gratis wie Passwort-Manager, Verschlüsselung, VPN, PDF-Bearbeitung und auch Games für Zwischendurch



sevdesk Online-BuchhaltungUpdate: sevdesk Black Friday Angebot 2024

Update: Bei sevdesk kann man aktuell jetzt sogar 60% sparen, sowohl bei Wahl von 12 Monaten als auch bei der Wahl von 24 Monaten. Der Rabatt gilt für alle sevdesk Tarife von sevdesk Rechnung bis sevdesk Buchhaltung Pro



Verwandte Themen: