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.
效果图:
用另一方法实现同一效果, 似乎更有逻辑.
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.