我动态创建了几个菜单,我想写它的事件,不知道怎么写?
我有一个想法不知行不行,就是当按下菜单时,判断是按下的ID,根据ID选择事件,不知行不行,如果行,怎么写,希望有一个例子。

解决方案 »

  1.   

    procedure MainMenu1Click(Sender: TObject);
    begin
        if sender = ID的值 then
        ...
    end创建动态的
    procedure ButtonClick(Sender: TObject);
    var
        newmenu: TMainMenu;
    begin
        newmenu := TMainMenu.Create(Self);
        newmenu.caption := '123';
    end;
      

  2.   


    k:=10;for i:=0 to k do
    begin
      mymenu:=Tmenuitem.Create(nil);
      mymenu.Caption:='aa'+inttostr(i);//
      mymenu.Name:='mn'+inttostr(i);
      mymenu.OnClick:=mymenuitemclick;
      n1.Add(mymenu);//作为n1的子菜单
    end;procedure mymenuitemclick(sender: Tobject);
    var ename:string;
    begin
      ename:=(Sender as Tmenuitem).name;  //这里你已经得到了名称 名称为mn+序号
      //用copy取出序号
      //case 序号 
      //选择要执行的过程
    end;
      

  3.   

    procedure MainMenuClick(Sender: TObject);
    var i:integer;
    begin
      i:=(sender as TMenuItem).tag;
      case i of
        1: ...
        2: ...
        3: ...
      ...
      end;  
    end;
    动态创建菜單項
    procedure Button1Click(Sender: TObject);
    var
        menuitem1: TMenuItem;
    begin
      menuitem1 := TMenuItem.Create(Self);
      menuitem1.caption := '123';
      menuitem1.parent:=MainMenu1;
      menuitem1.tag:=1;(或其它)
      menuitem1.ONClick:= MainMenuClick; 
    end;
      

  4.   

    delphi中预留的TAG属性是专门用来区分不同的控件用的,最好用TAG吧
    create时:
    menuitem.tag:=指定特殊值;
    menuitem.OnClick:=OnClick;在OnClick取出该值,可根据需要处理:i:=(sender as TMenuItem).tag;