請問動態MENU,如何動態產生、呼叫相對應的Function or Event |
答題得分者是:huwk
|
JBLpower
一般會員 發表:17 回覆:6 積分:4 註冊:2003-04-09 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus; type TForm1 = class(TForm) Button1: TButton; MainMenu1: TMainMenu; N1: TMenuItem; procedure Button1Click(Sender: TObject); procedure MenuItem1Click(Sender: TObject); // MenuItem1 的 OnClick Event procedure MenuItem2Click(Sender: TObject); // MenuItem2 的 OnClick Event private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.MenuItem1Click(Sender: TObject) begin ShowMessaeg('MenuItem 1 click!'); end; procedure TForm1.MenuItem2Click(Sender: TObject) begin ShowMessaeg('MenuItem 2 click!'); end; // 這裡動態產生 procedure TForm1.Button1Click(Sender: TObject); var mi: TMenuItem; begin mi := TMenuItem.Create(self); mi.Name := 'MenuItem1'; mi.Caption := 'MenuItem 1'; mi.OnClick := MenuItem1Click; // 指定 MenuItem 1 的 OnClick Event MainMenu1.Items.Add(mi); mi := TMenuItem.Create(self); mi.Name := 'MenuItem2'; mi.Caption := 'MenuItem 2'; mi.OnClick := MenuItem2Click; // 指定 MenuItem 2 的 OnClick Event MainMenu1.Items.Add(mi); end; end.發表人 - hagar 於 2005/01/19 19:53:28 |
huwk
資深會員 發表:26 回覆:340 積分:323 註冊:2002-04-03 發送簡訊給我 |
哇去寫個code才一回頭己經被版主回了~
不過倒覺得他要期用事件...應改寫一下
而把每個cretae出來的menu都指到同一個
procedure TForm1.MenuItem1Click(Sender: TObject) var s :String; begin if not (sender is Tmemuitem) then exit; s := tmenuitem(sender).name; if s = 'MenuItem1' then ShowMessaeg('MenuItem 1 click!') else if s = 'MenuItem2' then showmessgae('MenuItem 2 click!') end; 引言:unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus; type TForm1 = class(TForm) Button1: TButton; MainMenu1: TMainMenu; N1: TMenuItem; procedure Button1Click(Sender: TObject); procedure MenuItem1Click(Sender: TObject); // MenuItem1 的 OnClick Event procedure MenuItem2Click(Sender: TObject); // MenuItem2 的 OnClick Event private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.MenuItem1Click(Sender: TObject) begin ShowMessaeg('MenuItem 1 click!'); end; procedure TForm1.MenuItem2Click(Sender: TObject) begin ShowMessaeg('MenuItem 2 click!'); end; // 這裡動態產生 procedure TForm1.Button1Click(Sender: TObject); var mi: TMenuItem; begin mi := TMenuItem.Create(self); mi.Name := 'MenuItem1'; mi.Caption := 'MenuItem 1'; mi.OnClick := MenuItem1Click; // 指定 MenuItem 1 的 OnClick Event MainMenu1.Items.Add(mi); mi := TMenuItem.Create(self); mi.Name := 'MenuItem2'; mi.Caption := 'MenuItem 2'; mi.OnClick := MenuItem2Click; // 指定 MenuItem 2 的 OnClick Event MainMenu1.Items.Add(mi); end; end.-- 世界上為什麼會有貧窮?因為大部分人都不想和別人分享自己所擁有的 -- Mother Teresa
------
熊的學習 http://huwk.blogspot.com |
JBLpower
一般會員 發表:17 回覆:6 積分:4 註冊:2003-04-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |