码迷,mamicode.com
首页 > 其他好文 > 详细

Host+DLL模式下快捷键的使用

时间:2014-11-22 09:15:13      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   使用   sp   for   on   div   

 

   最近在做一个 Host+DLL 的插件系统,每个DLL模块都继承一个基类模块TBaseForm , 然后再基类模块里定义了增F1、删F2、改F3、查F4等功能,每个功能定义了一个快捷键,

在主程序这边通过PageControl来加载每个DLL模块,问题来了,当我打开多个模块时,按下 F1 时,系统调用的不是我当前激活的 TabSheet 模块,而是第一个打开的模块的新增

功能,原来快捷键被第一个模块注册后,后面打开的模块再注册就无效了。后来想到一个方法,就是再  TabSheet的 OnHide 事件里把当前模块的快捷键取消,在 onShow 事件里

再把当前模块的快捷键关联起来,经过测试成功!!!,以下是部分代码:

 1 procedure TBaseForm.bidingshortcut;       //绑定快捷键
 2 begin
 3   al_new.ShortCut:=TextToShortCut(F5);
 4   al_edit.ShortCut:=TextToShortCut(F6);
 5   al_delete.ShortCut:=TextToShortCut(F7);
 6   al_refdata.ShortCut:=TextToShortCut(F8);
 7   al_query.ShortCut:=TextToShortCut(F3);
 8   al_report.ShortCut:=TextToShortCut(F2);
 9   al_export.ShortCut:=TextToShortCut(F10);
10   al_import.ShortCut:=TextToShortCut(F4);
11   al_gridset.ShortCut:=TextToShortCut(F9);
12 end;
13 
14 procedure TBaseForm.unbidingshortcut;     //解除绑定快捷键
15 begin
16   al_new.ShortCut:=TextToShortCut(none);
17   al_edit.ShortCut:=TextToShortCut(none);
18   al_delete.ShortCut:=TextToShortCut(none);
19   al_refdata.ShortCut:=TextToShortCut(none);
20   al_query.ShortCut:=TextToShortCut(none);
21   al_report.ShortCut:=TextToShortCut(none);
22   al_export.ShortCut:=TextToShortCut(none);
23   al_import.ShortCut:=TextToShortCut(none);
24   al_gridset.ShortCut:=TextToShortCut(none);
25 end;

然后在Host程序中的onHide和onShow分别调用unbidingshortcut和bidingshortcut即可。

这里有一个基类的转换过程,因为我事先在tabsheet的tag里保存了当前窗体,所以只要做以下转换:

TBaseForm(TabSheet.tag).bidingshourtcut 就可以了。

 

Host+DLL模式下快捷键的使用

标签:style   blog   color   os   使用   sp   for   on   div   

原文地址:http://www.cnblogs.com/lpq21314/p/4114680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!