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.

TMainMenu 类[三] - 手动建立菜单(5) : 给菜单项添加事件的更多相关文章

  1. 第二百三十七节,Bootstrap图标菜单按钮组件

    Bootstrap图标菜单按钮组件 学习要点: 1.小图标组件 2.下拉菜单组件 3.按钮组组件 4.按钮式下拉菜单 本节课我们主要学习一下 Bootstrap 的三个组件功能:小图标组件.下拉菜单组 ...

  2. .net core3.1 abp动态菜单和动态权限(动态菜单实现和动态权限添加) (三)

    我们来创建动态菜单吧 首先,先对动态菜单的概念.操作.流程进行约束:1.Host和各个Tenant有自己的自定义菜单2.Host和各个Tenant的权限与自定义菜单相关联2.Tenant有一套默认的菜 ...

  3. 【转】Android 菜单(OptionMenu)大全 建立你自己的菜单--不错

    原文网址:http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html 菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中, ...

  4. Android 菜单(OptionMenu)大全 建立你自己的菜单

    转自:http://www.cnblogs.com/salam/archive/2011/04/04/2005329.html 菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单 ...

  5. 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))

    Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...

  6. NeuChar 平台使用及开发教程(三):使用 NeuChar 的菜单服务

    上一篇<NeuChar 平台使用及开发教程(二):设置平台账号>我们已经完成了平台账号的设置,下面就马上来体验一下自定义菜单的设置吧! 进入某个 Neural Cell 的设置界面,在右侧 ...

  7. File类三种得到路径的方法

    转: File类三种得到路径的方法 2010年11月29日 20:37:00 ssyan 阅读数:27123 标签: filemicrosoftstringexceptionwindowsunix   ...

  8. 手动建立mapping以及增加属性

    只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping 1.手动建立mappingPUT /website{ "ma ...

  9. 每日学习心得:SharePoint 2013 自定义列表项添加Callout菜单项、文档关注、SharePoint服务端对象模型查询

    前言: 前一段时间一直都比较忙,没有什么时间进行总结,刚好节前项目上线,同时趁着放假可以好好的对之前遇到的一些问题进行总结.主要内容有使用SharePoint服务端对象模型进行查询.为SharePoi ...

随机推荐

  1. Spring实战(第4版)

    第1部分 Spring的核心 Spring的两个核心:依赖注入(dependency injection,DI)和面向切面编程(aspec-oriented programming,AOP) POJO ...

  2. flyio 的请求封装

    1.安装flyio.js npm install flyio --save-dev 2.在util创建一个fly.js用于封装 import Vue from 'vue' var Fly=requir ...

  3. Acwing-287-积蓄程度(树上DP, 换根)

    链接: https://www.acwing.com/problem/content/289/ 题意: 有一个树形的水系,由 N-1 条河道和 N 个交叉点组成. 我们可以把交叉点看作树中的节点,编号 ...

  4. Serializable(转)

    最近在阅读JDK源码中的集合,看到很多集合类实现了Serializable接口,Cloneable接口.在阅读了很多关于Serializable接口的博客后,浅谈下我对Serializable接口的理 ...

  5. 解决ubuntu的screen已经处于Attached状态,无法再打开窗口

    Attached表示该窗口已经被上一登录用户使用,需要重新登录 1. 先查询窗口id screen -ls 3606.node (11/26/2019 07:31:49 PM) (Attached) ...

  6. React生命周期, 兄弟组件之间通信

    1.一个demo(https://www.reactjscn.com/docs/state-and-lifecycle.html) class Clock extends React.Componen ...

  7. toggleClass(class|fn[,sw])

    toggleClass(class|fn[,sw]) 概述 如果存在(不存在)就删除(添加)一个类.直线电机参数   参数 classStringV1.0 CSS类名 class,switchStri ...

  8. 洛谷P2622 关灯问题II

    洛谷题目链接 声明: 本篇文章不讲基础,对萌新不太友好,(我就是萌新),要学状压$dp$的请另寻,这篇文章只是便于本人查看.... 首先看到$n<=10$,就可以考虑状压了,要求最小值,所以初始 ...

  9. ubuntu安装chrome driver

    首先下载Chrome Driver(Firefox Driver的安装与该步骤相同) 链接: http://chromedriver.storage.googleapis.com/index.html ...

  10. Linux命令行学习日志-ps ax

    当我们需要查询某个运行中的进程的时候,这个命令就显得很有用了,可以查看当前进程的PID和状态(S代表睡眠,SW代表睡眠和等待,R表示运行中) ps ax //查看当前运行中的进程