设定主菜单的某个TMenuItem的ShortCut为Del,界面上Edit控件中按delete无法删除字符

helenhf 2008-04-16 07:04:44
焦点在Edit控件中
按Del键后会调用TMenuItem的OnClick事件
而Edit本身的OnKeyPress事件不会调用
希望能够同时调用上述的OnClick和OnKeyPress函数

不想在OnClick中手动调用OnKeyPress
因为不止Edit控件,还有Memo和ComboBox等
不想一一判断

各位大虾有啥高招没?
...全文
115 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
过客猫2022 2008-04-24
  • 打赏
  • 举报
回复
其实这个问题很简单,一般情况,楼主不要直接实现TMenuItem的Click事件,而是采用TActionList,然后在增加一个ActionDelete的TAction,设置Caption,和快捷键Del,并实现Action的Execute事件,然后在TMenuItem的Action属性设为ActionDelete.
使用Action非常方便,是典型的命令模式,除了TMenuItem,还有ToolBar的按钮,TButton,等,都可以设置同一个Action,如果我们要禁用这个功能,只需要将Action的Enabled的属性设为false,所以Action属性为这个Action的TMenuItem,TButton等,都会变是禁用的灰色,除此还有ImageIndex等属性.
helenhf 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwp3321 的回复:]
为什么不把OnKeyPress写到OnClick中去 ?
[/Quote]
因为不止Edit控件,还有Memo和ComboBox等
不想一一判断
helenhf 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwp3321 的回复:]
为什么不把OnKeyPress写到OnClick中去 ?
[/Quote]
因为不止Edit控件,还有Memo和ComboBox等
不想一一判断
helenhf 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wwp3321 的回复:]
为什么不把OnKeyPress写到OnClick中去 ?
[/Quote]
因为不止Edit控件,还有Memo和ComboBox等
不想一一判断
CACACACACA 2008-04-17
  • 打赏
  • 举报
回复
if MyForm.ActiveControl is TEdit then
begin
TEdit(MyForm.ActiveControl).OnPresss(nil);
end;
gfh_79_0 2008-04-17
  • 打赏
  • 举报
回复
枚举组件,然后根据情况做不同的事

for(int i=0;i<ControlCount;i++)
{
Str=Controls[i]->ClassName();
if(Str=="TEdit")
{
//你的代码
}
}
gfh_79_0 2008-04-17
  • 打赏
  • 举报
回复
枚举组件,然后根据情况做不同的事

for(int i=0;i<ControlCount;i++)
{
Str=Controls[i]->ClassName();
if(Str=="TEdit")
{
//你的代码
}
}
wwp3321 2008-04-17
  • 打赏
  • 举报
回复
楼主的意思是:
Edit控件-->OnKeyPress事件-->TMenuItem click事件 + 本身的OnKeyPress事件处理
其他控件-->OnKeyPress事件-->TMenuItem click事件 ?

如果是这样,写一个方法,在方法里面判断,如果是Edit控件,执行本身的OnKeyPress事件处理,否则不执行。
然后所有控件的OnKeyPress事件中调用这个方法。
wwp3321 2008-04-17
  • 打赏
  • 举报
回复
为什么不把OnKeyPress写到OnClick中去 ?
wwp3321 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 helenhf 的回复:]
不行。。
用户要求用Del做快捷键。。
自己也觉得符合习惯
只能把OnKeyPress写到OnClick中去
没有其他解决办法了吗?
[/Quote]
为什么把OnKeyPress写到OnClick中去 ?
helenhf 2008-04-17
  • 打赏
  • 举报
回复
不行。。
用户要求用Del做快捷键。。
自己也觉得符合习惯
只能把OnKeyPress写到OnClick中去
没有其他解决办法了吗?
编译失败 2008-04-16
  • 打赏
  • 举报
回复
你不能把这个快捷键改掉吗?

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧