动态生成菜单,却在指定事件报错!(急)

javavip 2006-04-08 03:28:27
代码:

unit UnitMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Menus, StdCtrls;

type
TFormMain = class(TForm)

procedure N1Click(Sender: TObject);{手动添加的}


private
{ Private declarations }
public
{ Public declarations }
end;

var
FormMain: TFormMain;

{--------------------------------------------}
MainMenu: TMainMenu;
N01: TMenuItem;
N11: TMenuItem;

{--------------------------------------------}

procedure CreateMenu();

implementation


{$R *.dfm}




procedure TFormMain.N1Click(Sender: TObject);
begin
ShowMessage('N1');
end;



procedure CreateMenu();
begin
try
MainMenu := TMainMenu.Create(nil);

N1 := TMenuItem.Create(MainMenu);
N1.Caption := '菜单一';
MainMenu.Items.Add(N1);

N11 := TMenuItem.Create(MainMenu);
N11.Caption := '退出';
N1.Add(N11);
N11.OnClick := N11Click;

FormMain.Menu := MainMenu;
except
ShowMessage('创建菜单出错!');
end;
end;


procedure TFormMain.FormCreate(Sender: TObject);
begin
CreateMenu();
end;




end.



总在指定菜单N11的点击事件(N11.OnClick := N11Click;)那里报错:

[Error] Undeclared identifier: 'N11Click'


请教各位了,谢谢!
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javavip 2006-04-08
  • 打赏
  • 举报
回复
谢谢几位了,不过好象重点是在写CreateMenu();那里,要在前面加上TFormMain,即:如下

type
TFormMain = class(TForm)

procedure N11Click(Sender: TObject);{手动添加的}
procedure CreateMenu();

private
{ Private declarations }
public
{ Public declarations }
end;

var
FormMain: TFormMain;

{--------------------------------------------}
MainMenu: TMainMenu;
N01: TMenuItem;
N11: TMenuItem;

{--------------------------------------------}

implementation


{$R *.dfm}




procedure TFormMain.N11Click(Sender: TObject);
begin
ShowMessage('N1');
end;



procedure TFormMain.CreateMenu();
begin
...
end;

end.
Frank.WU 2006-04-08
  • 打赏
  • 举报
回复
代碼太亂了...

你的 N01,N1,N11,哪個是哪個都搞不清楚...看得好暈啊...

type
TFormMain = class(TForm)

procedure CreateMenu();//這個放這裡
private
{ Private declarations }

public
{ Public declarations }
end;

...

procedure TFormMain.N11Click(Sender: TObject);//這個改為這樣
begin
ShowMessage('N1');
end;
mzdot 2006-04-08
  • 打赏
  • 举报
回复
unit UnitMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Menus, StdCtrls;

type
TFormMain = class(TForm)

procedure N11Click(Sender: TObject);{手动添加的}


private
{ Private declarations }
procedure CreateMenu;
public
{ Public declarations }
end;

var
FormMain: TFormMain;

{--------------------------------------------}
MainMenu: TMainMenu;
N01: TMenuItem;
N11: TMenuItem;

{--------------------------------------------}


implementation


{$R *.dfm}




procedure TFormMain.N11Click(Sender: TObject);
begin
ShowMessage('N1');
end;



procedure TFormMain.CreateMenu();
begin
try
MainMenu := TMainMenu.Create(nil);

N1 := TMenuItem.Create(MainMenu);
N1.Caption := '菜单一';
MainMenu.Items.Add(N1);

N11 := TMenuItem.Create(MainMenu);
N11.Caption := '退出';
N1.Add(N11);
N11.OnClick := N11Click;

FormMain.Menu := MainMenu;
except
ShowMessage('创建菜单出错!');
end;
end;


procedure TFormMain.FormCreate(Sender: TObject);
begin
CreateMenu();
end;




end.
javavip 2006-04-08
  • 打赏
  • 举报
回复
第一次用DELPHI,哎!
javavip 2006-04-08
  • 打赏
  • 举报
回复
[Error] Undeclared identifier: 'N0405Click'
[Error] Unsatisfied forward or external declaration: 'TFormMain.CreateMenu'
mzdot 2006-04-08
  • 打赏
  • 举报
回复
把CreateMenu放到FormMain中,作为FormMain的Private过程
javavip 2006-04-08
  • 打赏
  • 举报
回复
还是不行
frankzhenglei 2006-04-08
  • 打赏
  • 举报
回复
N11.OnClick := N11Click(Sender);
javavip 2006-04-08
  • 打赏
  • 举报
回复
不好意思,是下面的,刚刚的写错了,只写了N11的事件!

unit UnitMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, Menus, StdCtrls;

type
TFormMain = class(TForm)

procedure N11Click(Sender: TObject);{手动添加的}


private
{ Private declarations }
public
{ Public declarations }
end;

var
FormMain: TFormMain;

{--------------------------------------------}
MainMenu: TMainMenu;
N01: TMenuItem;
N11: TMenuItem;

{--------------------------------------------}

procedure CreateMenu();

implementation


{$R *.dfm}




procedure TFormMain.N11Click(Sender: TObject);
begin
ShowMessage('N1');
end;



procedure CreateMenu();
begin
try
MainMenu := TMainMenu.Create(nil);

N1 := TMenuItem.Create(MainMenu);
N1.Caption := '菜单一';
MainMenu.Items.Add(N1);

N11 := TMenuItem.Create(MainMenu);
N11.Caption := '退出';
N1.Add(N11);
N11.OnClick := N11Click;

FormMain.Menu := MainMenu;
except
ShowMessage('创建菜单出错!');
end;
end;


procedure TFormMain.FormCreate(Sender: TObject);
begin
CreateMenu();
end;




end.
frankzhenglei 2006-04-08
  • 打赏
  • 举报
回复
你的N11Click定义在那里,我只看到N1Click

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧