TMainMenu 类[三] - 手动建立菜单(5) : 给菜单项添加事件


unit Unit1;



interface



uses

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

  Dialogs, Menus;



type

  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);

    procedure Proc(Sender: TObject); {声明将要被调用的方法}

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



var

  MyMenu: TMainMenu;

  Item: TMenuItem;



{实现将要被调用的方法}

procedure TForm1.Proc(Sender: TObject);

begin

  if Sender is TMenuItem then

    ShowMessage(TMenuItem(Sender).Caption);

end;





procedure TForm1.FormCreate(Sender: TObject);

var

  Itemd: TMenuItem;

begin

  MyMenu := TMainMenu.Create(Self);

  MyMenu.AutoHotkeys := maManual;

  Self.Menu := MyMenu;



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'AA';

  MyMenu.Items.Add(Item);



    Itemd := TMenuItem.Create(MyMenu);

    Itemd.Caption := 'A&1';

    Itemd.OnClick := Proc; {调用方法}

    Item.Add(Itemd);



    Itemd := TMenuItem.Create(Item);

    Itemd.Caption := 'A&2';

    Itemd.OnClick := Proc; {调用方法}

    Item.Add(Itemd);

end;



end.


 
   
效果图:

TMainMenu 类[三] - 手动建立菜单(5) : 给菜单项添加事件

不过, 菜单事件一般是使用 ActionList 的, 添加一个 ActionList 同时添加一个方法, 实现和上面同样的功能:

unit Unit1;



interface



uses

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

  Dialogs, Menus, ActnList;



type

  TForm1 = class(TForm)

    ActionList1: TActionList;

    Action1: TAction;

    procedure FormCreate(Sender: TObject);

    procedure Action1Execute(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



var

  MyMenu: TMainMenu;

  Item: TMenuItem;





procedure TForm1.Action1Execute(Sender: TObject);

begin

  if Sender is TMenuItem then

    ShowMessage(TMenuItem(Sender).Caption);

end;





procedure TForm1.FormCreate(Sender: TObject);

var

  Itemd: TMenuItem;

begin

  MyMenu := TMainMenu.Create(Self);

  MyMenu.AutoHotkeys := maManual;

  Self.Menu := MyMenu;



  Item := TMenuItem.Create(MyMenu);

  Item.Caption := 'AA';

  MyMenu.Items.Add(Item);



    Itemd := TMenuItem.Create(MyMenu);

    Itemd.Caption := 'A&1';

    Itemd.OnClick := Action1Execute; {调用方法}

    Item.Add(Itemd);



    Itemd := TMenuItem.Create(Item);

    Itemd.Caption := 'A&2';

    Itemd.OnClick := Action1Execute; {调用方法}

    Item.Add(Itemd);

end;



end.


 
   

你可能感兴趣的:(main)