首页 > php教程 > php手册 > 正文

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

php中文网
发布: 2016-06-13 09:20:32
原创
1147人浏览过

host+dll模式下快捷键的使用,hostdll模式快捷键

 

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

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

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

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

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

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

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

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

 

.dll文件大全
.dll文件大全

.dll文件缺失怎么办?.dll文件在哪下载?不用担心,这里为大家提供了所有的.dll文件下载,无论用户丢失的是什么.dll文件,在这里都能找到。用户保存后,在网盘搜索dll文件全称即可查找下载!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号