ActionList中Action的快捷鍵

ActionList中Action的快捷鍵nbsp 本文的目的是說明 這里的快捷鍵是如何被觸發的 nbsp nbsp nbsp nbsp nbsp 從控件自身來看 快捷鍵的進入點是在 TWincontrol IsMenuKey 在分析 IsMenuKey 之前 我們先看一下 IsMenuKey 是哪里被調用的 nbsp nbsp nbsp nbsp 搜索 Controls Pas 可以發現 他是在 CNKeyDown 事件里被觸發的 如下 Line13 varMask Integer b

 

本文的目的是說明,這里的快捷鍵是如何被觸發的。

 

    從控件自身來看,快捷鍵的進入點是在TWincontrol.IsMenuKey。在分析IsMenuKey之前,我們先看一下IsMenuKey是哪里被調用的?

    搜索Controls.Pas,可以發現,他是在CNKeyDown事件里被觸發的,如下(Line 13):

 

那么,CNKeyDown又是如何響應的呢?這就要從消息進入的源頭查找——Application.IsKeyMsg,其實現如下:

  

SendMessage(Wnd, CN_BASE + Message, WParam, LParam)預先讓控件處理此類消息,然后繼續派送WM_XXXX

 

    OK,回到IsMenuKey這個觸發快捷鍵的關鍵部位。先看其代碼:

    

取得Form := GetParentForm(Self);然后Form.IsShortCut(Message) ;

IsShortCut實現過程就不貼代碼了(避免篇幅太長),自己看一下代碼就了解了。

 

但這里要注意GetParentForm,假設有兩個formABB嵌入A,這時,我們這樣GetParentForm(Self);取得B上面的控件的父窗口是誰,最終會是A(這里有個前提:嵌入的方式是指定Parent)。

所以,若A中有快捷鍵和BAction的快捷鍵有沖突,那么B的快捷鍵就不會被觸發(因為被A給處理了)。

下面是GetParentForm做法,這是D5的實現方式,雖然之后的版本有所改動,但結果是一樣的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176428.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:57
下一篇 2026年3月26日 下午9:57


相关推荐

  • 文件句柄数_系统文件句柄

    文件句柄数_系统文件句柄内核参数fs.file-max指定了系统范围内所有进程可打开的文件句柄的数量限制。合理值计算方法:取决于内存,每1M内存可增加100个。默认情况下,不要将超过10%的内存用于文件。将文件句柄数设置太大的危害是,当大量的文件句柄都为sockets时,会占用大量的内存,这些内存都是不可交换的。要记得的是网络套接字连接符也是文件。对于百万级连接数的进程来说,要设置单个进程可打开的文件句柄数为百万个。比如256G内存,应该配置的值为:256*0.1*1024*100=2621440设置方式:vi/et

    2022年10月17日
    4
  • OpenClaw一键部署全攻略:从桌面到云端,零门槛养“龙虾”指南

    OpenClaw一键部署全攻略:从桌面到云端,零门槛养“龙虾”指南

    2026年3月12日
    3
  • 比b站更好的二次元网站_二次元搜索

    比b站更好的二次元网站_二次元搜索公众号关注“GitHubDaily”设为“星标”,每天带你逛GitHub!大家好,我是小G。作为一个经常泡在B站追番的资深二次元用户,我一直想寻找一款能满足个人需求且用户体验好…

    2022年8月23日
    9
  • 工作流引擎Activiti入门-01

    工作流引擎Activiti入门-01工作流引擎 Activiti 入门工作流引擎工作流 BPMBPMNActiv 集成 Activiti 新建数据库新建项目 log4j 的配置 mysql 的配置生成 mysql 表流程操作 Activitibpmn 流程定义流程存储 部署流程启动任务查询任务处理工作流引擎工作流是指业务过程的部分或整体在计算机应用环境下的自动化 工作流主要解决的主要问题是 为了实现某个业务目标 利用计算机在多个参与者之间按某种预定规则自动传递文档 信息或者任务 BPMBPM BusinessProc

    2025年6月14日
    5
  • C语言必背18个经典程序,2022年C语言必背100代码大全

    C语言必背18个经典程序,2022年C语言必背100代码大全对于c语言来说,要记得东西其实不多,基本就是几个常用语句加一些关键字而已。你所看到的那些几千甚至上万行的代码,都是用这些语句和关键词来重复编写的。只是他们逻辑功能不一样,那如何快速的上手C语言代码,建议多看多写,下面是小编整理的C语言必背18个经典程序。

    2022年6月17日
    102
  • 解决pycharm换国内源仍然安装失败

    解决pycharm换国内源仍然安装失败如果你换了国内的源仍然很慢 那么这篇博客可以解决你的问题

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号