代码:unit UnitMain;interfaceuses
  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'
请教各位了,谢谢!

解决方案 »

  1.   

    你的N11Click定义在那里,我只看到N1Click
      

  2.   

    不好意思,是下面的,刚刚的写错了,只写了N11的事件!unit UnitMain;interfaceuses
      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.
      

  3.   

    N11.OnClick := N11Click(Sender);
      

  4.   

    把CreateMenu放到FormMain中,作为FormMain的Private过程
      

  5.   

    [Error] Undeclared identifier: 'N0405Click'
    [Error] Unsatisfied forward or external declaration: 'TFormMain.CreateMenu'
      

  6.   

    unit UnitMain;interfaceuses
      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.
      

  7.   

    代碼太亂了...你的 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;
      

  8.   

    谢谢几位了,不过好象重点是在写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.