如题

解决方案 »

  1.   

    从第一级开始MainMenu: TMainMenu;
    PopupMenu: TPopupMenu; 
       
    var
      SubMenu:TMenuItem;
    begin
      SubMenu:=TMenuItem.Create(Self);
      SubMenu.Caption:='Test';
      MainMenu.Items.Add(SubMenu);//PopupMenu一样
    //插入用MainMenu.Items.Insert(0,SubMenu);
    end;下一级用相关MenuItem的Add,Insert!
      

  2.   

    动态生成菜单(快捷菜单):
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Db, Grids, DBGrids, DBTables, Menus;type
      TSave = procedure(Sender: TObject) of Object;  TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        procedure Save(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    procedure TForm1.Save(Sender: TObject);
    var
      OpenDlg: TOpenDialog;
    begin
      OpenDlg := TOpenDialog.Create(Self);
      OpenDlg.Execute;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      myPopupMenu: TPopupMenu;
      myMenuItem: TMenuItem;
      i: integer;
      p: TPoint;
    begin
      myPopupMenu := TPopupMenu.Create(Self);
      for i := 1 to 3 do
      begin
        myMenuItem := TMenuItem.Create(myPopupMenu);
        myMenuItem.Tag := i;
        case i of
          1: myMenuItem.Caption := '新建';
          2: begin
               myMenuItem.Caption := '保存';
               myMenuItem.OnClick := Save;
             end;
          3: myMenuItem.Caption := '删除';
        end;
        myPopupMenu.Items.Add(myMenuItem);
      end;
      GetCursorPos(p);
      myPopupMenu.Popup(p.x,p.y)
    end;
    end.
      

  3.   

    动态生成菜单(主菜单):
    type 
      TTestMenuItem = class(TMenuItem)
      private
        FFormClass: string;
      public
        procedure Click; override; 
        //Example
        property FormClass: string read FFormClass write FFormClass;
      end; 
     ....
      porcedure TTestMenuItem.Click;
      begin
        if FormClass <> '' then
          //do something
      end;
      .....
    procedure Test(AOwner: TComponent);  
      var Item: TTestMenuItem;
    begin
      Item := TTestMenuItem.Create(AOwner);
      with Item do
      begin
        FormClass := 'TFormOne';
      end;
      MeinMenu.Items.Add(Item);
    end;
      

  4.   

    从第一级开始MainMenu: TMainMenu;
    PopupMenu: TPopupMenu; 
       
    var
      SubMenu:TMenuItem;
    begin
      SubMenu:=TMenuItem.Create(Self);
      SubMenu.Caption:='Test';
      MainMenu.Items.Add(SubMenu);//PopupMenu一样
    //插入用MainMenu.Items.Insert(0,SubMenu);
    end;下一级用相关MenuItem的Add,Insert!谁能补充完整,使之能加入下一级菜单!
      

  5.   

    var
      SubMenu1,SubMenu2:TMenuItem;
    begin
      SubMenu1:=TMenuItem.Create(Self);
      SubMenu1.Caption:='Test';
      MainMenu.Items.Add(SubMenu1);
      SubMenu2:=TMenuItem.Create(Self);
      SubMenu2.Caption:='Test';
      SubMenu1.Add(SubMenu2);
    end;
      

  6.   

    光辉兄,结贴ehom(?!)和CG1120每人五十。