TMainMenu 类[三] - 手动建立菜单(2) : 建立子菜单项


unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus;



type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



var

  MyMenu: TMainMenu;

  Item: TMenuItem;



procedure TForm1.FormCreate(Sender: TObject);

begin

  MyMenu := TMainMenu.Create(Self);

  Self.Menu := MyMenu;



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'AA';

  MyMenu.Items.Add(Item);



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'BB';

  MyMenu.Items.Add(Item);



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'CC';

  MyMenu.Items.Add(Item);





  {在上面的基础上建立子菜单}



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'A1';

  MyMenu.Items[0].Add(Item); {此时的 MyMenu.Items[0] 指向 AA 菜单项, 现在是给 AA 添加子项}



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'A2';

  MyMenu.Items[0].Add(Item);





  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'A21';

  MyMenu.Items[0][1].Add(Item); {此时的 MyMenu.Items[0][1] 指向 A2 菜单项, 现在是给 A2 添加子项}



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'A22';

  MyMenu.Items[0][1].Add(Item);

end;



end.


 
   
效果图:

TMainMenu 类[三] - 手动建立菜单(2) : 建立子菜单项

用另一方法实现同一效果, 似乎更有逻辑.

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus;



type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



var

  MyMenu: TMainMenu;

  Item: TMenuItem;



procedure TForm1.FormCreate(Sender: TObject);

var

  Itemd: TMenuItem;

begin

  MyMenu := TMainMenu.Create(Self);

  Self.Menu := MyMenu;



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'AA';

  MyMenu.Items.Add(Item);



    Itemd := TMenuItem.Create(MyMenu); {为了不破坏 Item 的指向, 用 Itemd 建立新对象}

    Itemd.Caption := 'A1';

    Item.Add(Itemd); {此时的 Item 指向 AA 菜单项, 现在是给 AA 添加子项}



    Itemd := TMenuItem.Create(Item);

    Itemd.Caption := 'A2';

    Item.Add(Itemd);



      Itemd := TMenuItem.Create(Item);

      Itemd.Caption := 'A21';

      Item[1].Add(Itemd); {此时的 Item[1] 指向 A2 菜单项, 现在是给 A2 添加子项}



      Itemd := TMenuItem.Create(Item);

      Itemd.Caption := 'A22';

      Item[1].Add(Itemd);



  {给 AA 添加子菜单项结束}





  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'BB';

  MyMenu.Items.Add(Item);



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'CC';

  MyMenu.Items.Add(Item);

end;



end.


 
   

你可能感兴趣的:(main)