全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2159
推到 Plurk!
推到 Facebook!

請問如何動態添加菜單的事件?謝謝。

答題得分者是:jimmy_wei
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-08 20:45:26 IP:58.210.xxx.xxx 訂閱
網絡上的例子大都是在一個form單元。我是把此功能放到一個公用的單元。
菜單可以加上了。但是菜單事件卻加不上,多謝各位指點。
unit Unit2;
interface
uses Forms,Menus;
var fmainmenu:TMainMenu ;
procedure CreateMenus(froms:TForm );
implementation
//
procedure CreateMenus(froms:TForm );
var Menuitems:TMenuItem;
begin
Menuitems:=TMenuItem.Create(froms);
fmainmenu:=TMainMenu.Create(froms);
Menuitems.Caption :='Fiels&F';
Menuitems.MenuIndex :=0;
fmainmenu.Items.Add(Menuitems);
end;
end.
------
The empty vessels make the greatest sound.
編輯記錄
allen-86 重新編輯於 2009-01-08 20:53:00, 註解 無‧
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-08 22:31:31 IP:123.192.xxx.xxx 訂閱
ex:

private
{ Private declarations }
procedure TextClick(Sender: TObject);


procedure TForm1.TextClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Caption);
end;





===================引 用 allen-86 文 章===================
網絡上的例子大都是在一個form單元。我是把此功能放到一個公用的單元。
菜單可以加上了。但是菜單事件卻加不上,多謝各位指點。
unit Unit2;
interface
uses Forms,Menus;
var fmainmenu:TMainMenu ;
procedure CreateMenus(froms:TForm );
implementation
//
procedure CreateMenus(froms:TForm );
var Menuitems:TMenuItem;
begin
Menuitems:=TMenuItem.Create(froms);
fmainmenu:=TMainMenu.Create(froms);
fmainmenu.OnClick:= TextClick;

Menuitems.Caption :='Fiels&F';
Menuitems.MenuIndex :=0;
fmainmenu.Items.Add(Menuitems);
end;
end.
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-09 10:02:54 IP:221.225.xxx.xxx 訂閱
報錯:[Error] Unit2.pas(27): Undeclared identifier: 'forbidden'

到網上查了一下forbidden居然沒查到是做什麽用的。呵呵。

麻煩大哥再查看一下。

===================引 用 jimmy_wei 文 章===================
ex:

private
{ Private declarations }
procedure TextClick(Sender: TObject);


procedure TForm1.TextClick(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Caption);
end;





===================引 用 allen-86 文 章===================
網絡上的例子大都是在一個form單元。我是把此功能放到一個公用的單元。
菜單可以加上了。但是菜單事件卻加不上,多謝各位指點。
unit Unit2;
interface
uses Forms,Menus;
var fmainmenu:TMainMenu ;
procedure CreateMenus(froms:TForm );
implementation
//
procedure CreateMenus(froms:TForm );
var Menuitems:TMenuItem;
begin
Menuitems:=TMenuItem.Create(froms);
fmainmenu:=TMainMenu.Create(froms);
fmainmenu.OnClick:= TextClick;

Menuitems.Caption :='Fiels&F';
Menuitems.MenuIndex :=0;
fmainmenu.Items.Add(Menuitems);
end;
end.
------
The empty vessels make the greatest sound.
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-09 11:18:19 IP:123.194.xxx.xxx 訂閱
我打的是on 連著打click := textclick;呀怎麼會變成你說的那個怪怪字??
編輯記錄
jimmy_wei 重新編輯於 2009-01-09 11:18:57, 註解 無‧
jimmy_wei 重新編輯於 2009-01-09 11:20:06, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-01-09 12:11:20 IP:118.169.xxx.xxx 訂閱
sorry,這是站上反應許久仍未解決的問題 ^_^
http://delphi.ktop.com.tw/board.php?cid=32&fid=1492&tid=90474


===================引 用 jimmy_wei 文 章===================
我打的是on 連著打click := textclick;呀怎麼會變成你說的那個怪怪字??
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-01-09 13:06:54 IP:221.225.xxx.xxx 訂閱
哦。對了應該是onclick.
但是還沒有很好的解決我想要的。呵呵。】
我的想法是onclick事件就在unit2單元本身而不是回到main窗體。
不知道可有辦法?
------
The empty vessels make the greatest sound.
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-01-09 16:18:46 IP:123.194.xxx.xxx 訂閱
unit Unit2;
interface
uses Forms, Menus, Dialogs;
var fmainmenu:TMainMenu ;
type
TOBJ = class
private
{ Private declarations }
public
{ Public declarations }
procedure CreateMenus(froms:TForm );
procedure ClickText(Sender: TObject);
end;
implementation
//
{ TOBJ }
procedure TOBJ.ClickText(Sender: TObject);
begin
ShowMessage(TMenuItem(Sender).Caption);
end;
procedure TOBJ.CreateMenus(froms:TForm );
var Menuitems:TMenuItem;
begin
fmainmenu:=TMainMenu.Create(froms);
Menuitems:=TMenuItem.Create(fmainmenu);
Menuitems.Caption :='ABC';
Menuitems.MenuIndex :=0;
Menuitems.OnClick:= ClickText;
fmainmenu.Items.Add(Menuitems);
end;

end.





unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TForm1 = class(TForm)
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
OBJ: TOBJ;
begin
OBJ:= TOBJ.Create;
OBJ.CreateMenus(Form1);
end;
end.


看看吧....其實你在做下去一定還會發現.要增加子節點等等的問題...不過你試試吧
其實剩下的部份你自己try try就可以了.....
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-01-09 18:21:10 IP:58.210.xxx.xxx 訂閱
感謝!回家試試。呵呵。
------
The empty vessels make the greatest sound.
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-01-10 18:00:02 IP:222.93.xxx.xxx 訂閱
OK.感謝 jimmy_wei兄.
我的理解是如果要調用事件必須在一個類裡面。
再次感謝 老兄. :)
------
The empty vessels make the greatest sound.
系統時間:2024-04-20 12:12:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!