为什么
var
zi_menu:tmenuitem;
...
popupmenu1.items[0].add(zi_menu);
就可以添加子菜单,而
在一个函数中:
precedure add_zi_caidan(sender:tobject;zi_menu:tmenuitem);
begin
(sender as tmenuitem).add(zi_menu);
end;
就添加不上,
真是急死我了!
非常感谢大家的帮助!

解决方案 »

  1.   

    var
      zi_menu:tmenuitem;procedure add_zi_caidan(sender:TPopupMenu;zi_menu:tmenuitem);
    begin
      Sender.Items.add(zi_menu);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      zi_menu := TMenuItem.Create(nil);
      zi_menu.Caption := 'aaaa';
      add_zi_caidan(PopupMenu1,zi_menu);
    end;
      

  2.   

    precedure add_zi_caidan(sender:tobject;zi_menu:tmenuitem);
    begin
    zi_menu := tmenuitem.create(nil);
    (sender as tmenuitem).add(zi_menu);
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
      PMM : TMenuItem;
    begin
      for I:= 0 to 3 do
      begin
        PMM := TMenuItem.Create(Self);
        PMM.Caption := IntToStr(I);
    //    PMM.OnClick := YourProcedure; //定义响应事件
        PopupMenu1.Items.Add(PMM);
      end;
    end;
      

  4.   

    这个是加子菜单
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
      PMM,ZMM: TMenuItem;
    begin
      for I:= 0 to 3 do
      begin
        PMM := TMenuItem.Create(Self);
        PMM.Caption := IntToStr(I);
        ZMM := TMenuItem.Create(PMM);
        ZMM.Caption := IntToStr(I);
        PMM.Add(ZMM);
        PopupMenu1.Items.Add(PMM);
      end;
    end;