var
 mymainmenu:tmainmenu;
myitem:array[0..2] of tmenuitem;
begin
mymainmenu:=tmainmenu.Create(self);for i:=0 to 2 do
myitem[i]:=tmenuitem. Create(self);
myitem[0].caption:='Text' ;
mymainmenu.Items.Add(myitem[0]) ;

解决方案 »

  1.   

    var
      Form1: TForm1;
      MyMainMenu: TMainMenu;
      MyPopUpMenu: TPopUpMenu;
      MySubItem1,MySubItem2 : TMenuItem;
      MySubItems: array[0..3] of TMenuItem;
      MyPopUpItems: array[0..3] of TMenuItem;
    implementation{$R *.DFM}procedure TForm1.MyPopupHandler(Sender: TObject);
    begin
      with Sender as TMenuItem do begin
        ShowMessage(Caption);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      MyMainMenu:= TMainMenu.Create(Self);
      Button4.Enabled := true;
      ShowMessage('MainMenu created but no items' + #13+
                  'are added so it does not show.');
      Button1.Enabled := False;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      MyPopUpMenu := TPopUpMenu.Create(self);
      Button3.Enabled := true;
      ShowMessage('PopUpMenu created.');
      Button2.Enabled := False;
    end;procedure TForm1.Button7Click(Sender: TObject);
    begin
      MyPopUpMenu.Popup(Form1.Left + 60, Form1.Top + 140);
      Button9.Enabled := true;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
      i: Integer;
    begin
      for i := 0 to 3 do begin
        MyPopUpItems[i] := TMenuItem.Create(Self);
        MyPopUpItems[i].Caption := 'New item ' + IntToStr(i);
        MyPopUpMenu.Items.Add(MyPopUpItems[i]);
      end;
      Button7.Enabled := true;
      Button3.Enabled := False;
    end;
    procedure TForm1.Button4Click(Sender: TObject);
    var
      MyItem: array[0..2] of TMenuItem;
      i: Integer;
    begin
      for i := 0 to 2 do begin
        MyItem[i] := TMenuItem.Create(Self);
        MyItem[i].Caption := 'New item ' + IntToStr(i);
        MyMainMenu.Items.Add(MyItem[i]);
        end;
      Button4.Enabled := False;
      Button5.Enabled := true;
    end;
    procedure TForm1.Button5Click(Sender: TObject);
    var
      i: Integer;
    begin
      for i := 0 to 3 do begin
        MySubItems[i] := TMenuItem.Create(Self);
        MySubItems[i].Caption := 'New item ' + IntToStr(i);
        MySubItems[i].OnClick := MyPopUpHandler;
        MyMainMenu.Items[0].Add(MySubItems[i]);
      end;
      Button6.Enabled := true;
      Button8.Enabled := true;
      Button5.Enabled := False;
    end;
    procedure TForm1.Button6Click(Sender: TObject);
    begin
      MySubItems[3].Break := mbBarBreak;
    end;procedure TForm1.Button8Click(Sender: TObject);
    begin
      MySubItems[2].Caption :='-';
    end;procedure TForm1.Button9Click(Sender: TObject);
    var
      i: Integer;
    begin
      for i := 0 to 3 do begin
        MyPopUpItems[i].OnClick := MyPopupHandler;
      end;
    end;end.
      

  2.   

    谢谢各位这个问题我已经解决了。我的做法是:
    初始化一个TTMenuItem.然后主要参考TTreeView的LoadFromFile(即TTreeString的LoadFromFile,文件格式我也是参考SaveToFile后的文件格式。
    采用的方法主要是将“添加一个菜单项’依附于ATreeNode的添加树形结点的做法。树加一个结点我就加一个菜单项。
    这样作不受层次(LEVEL)的限制,每层的数量也不限,效果还可以。最后感谢大家的帮助。