zoukankan      html  css  js  c++  java
  • 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.
    
    效果图:



    不过, 菜单事件一般是使用 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.
    
  • 相关阅读:
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
    开发人员系统功能设计常用办公软件分享
    微信自定义菜单url默认80端口问题解决
    Servlet再度学习
    JSP九大内置对象
    linux下安装apache(httpd-2.4.3版本)各种坑
    Ajax原理学习
    Shell脚本了解
    生成Webservice的两种方式(Axis2,CXf2.x)
    Webservice发布
  • 原文地址:https://www.cnblogs.com/del/p/1064462.html
Copyright © 2011-2022 走看看