比如以下代码:
procedure TMainForm.ShowInfo(Sender: TObject);
begin
  MessageBox(MainForm.Handle, 'Menu Test OK!', 'Menu', MB_OK);
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
  NewMenu: TMenuItem;begin
  NewMenu := TMenuItem.Create(Self);
  NewMenu.Caption := 'New Menu';
  NewMenu.OnClick := ShowInfo;
  MainMenu1.Items.Add(NewMenu);
end;用户单击菜单的信息怎样知道,换句话我动态建立了若干个菜单项,每个都用这一个,在这个procedure TMainForm.ShowInfo(Sender: TObject);, 里怎样通过Sender区分用户到底单击的是那个MenuItem.请不要笑我,Delphi新手。

解决方案 »

  1.   

    如果Caption一样的话,可以为每个TMenuItem指定一个不同的Tag来区分。case (Sender as TMenuItem).Tag of
      

  2.   

    设置每个NewMenu的tag属性作为标识即可
      

  3.   

    procedure TMainForm.Button1Click(Sender: TObject);
    里面的Sender应该是对Button1对象的引用吧!(Sender as TMenuItem)应该是不可以的:)
      

  4.   

    晕,原来是procedure TMainForm.ShowInfo(Sender: TObject);里的Sender,偶搞错了。