![]() |
Menüs zur Laufzeit ok, aber wie anwählen?
Hi Leute,
ich erstelle Menüs (ist jetzt nur ein Test) zur Laufzeit. Wie kann ich aber eine Prozedur schreiben, in der ich die Menüs auch anwählen kann. Mein Code sieht bis jezt so aus:
Delphi-Quellcode:
Wäre cool, wenn ihr mir helfen könnt!
var fav:TMenuItem;
a : Integer; begin for a:=0 to 20 do begin fav:=TMenuItem.Create(Self); fav.Caption:=Edit1.Text+' '+(inttostr(a)); MainMenu1.Items.Items[0].Add(fav); |
Re: Menüs zur Laufzeit ok, aber wie anwählen?
Was meinst du denn mit Anwählen? Anklicken?
Delphi-Quellcode:
procedure MenueClick(Sender: TObject);
... fav.OnClick := MenueClick; |
Re: Menüs zur Laufzeit ok, aber wie anwählen?
Delphi-Quellcode:
type
TForm1 = class(TForm) MainMenu1: TMainMenu; Button1: TButton; mnuFile: TMenuItem; procedure Button1Click(Sender: TObject); procedure MyMenuItemOnClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.MyMenuItemOnClick(Sender: TObject); begin case (Sender as TMenuItem).Tag of 0: ShowMessage((Sender as TMenuItem).Caption); 1: ShowMessage((Sender as TMenuItem).Caption); 2: ShowMessage((Sender as TMenuItem).Caption); 3: ShowMessage((Sender as TMenuItem).Caption); 4: ShowMessage((Sender as TMenuItem).Caption); end; end; procedure TForm1.Button1Click(Sender: TObject); var NewItem: TMenuItem; i: Integer; begin for i := 0 to 4 do begin NewItem := TMenuItem.Create(Form1); NewItem.Caption := IntToStr(i); NewItem.Tag := i; NewItem.OnClick := MyMenuItemOnClick; mnuFile.Add(NewItem); end; end; |
Re: Menüs zur Laufzeit ok, aber wie anwählen?
Du könntest auch dem Name Property etwas zuweisen und dann aufgrund des Namens die auszuführende Action wählen...
Dann könntest Du den Tag nach Belieben auch nochanderweitig verwenden.
Delphi-Quellcode:
type
TForm1 = class(TForm) MainMenu1: TMainMenu; Button1: TButton; mnuFile: TMenuItem; procedure Button1Click(Sender: TObject); procedure MyMenuItemOnClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.MyMenuItemOnClick(Sender: TObject); begin if (Sender is TMenuItem) then case StrToIntDef(TMenuItem(Sender).Name,-1) of 0: ShowMessage((Sender as TMenuItem).Caption); 1: ShowMessage((Sender as TMenuItem).Caption); 2: ShowMessage((Sender as TMenuItem).Caption); 3: ShowMessage((Sender as TMenuItem).Caption); 4: ShowMessage((Sender as TMenuItem).Caption); end; end; procedure TForm1.Button1Click(Sender: TObject); var NewItem: TMenuItem; i: Integer; begin for i := 0 to 4 do begin NewItem := TMenuItem.Create(Form1); NewItem.Caption := IntToStr(i); NewItem.Name := IntToStr(i); NewItem.OnClick := MyMenuItemOnClick; mnuFile.Add(NewItem); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz