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!
Nero Platinum Suite Bundle Angebot mit 9 Programmen gratis wie Passwort-Manager, Verschlüsselung, VPN, PDF-Bearbeitung und auch Games für Zwischendurch