程序级的自定义热键问题(50分)

J

jieson

Unregistered / Unconfirmed
GUEST, unregistred user!
谁写过自定义热键的功能?我说的不是系统级的热键,是当程序有焦点时才有的
比如,我有两个按纽1和2,
1的功能为showmessage('1')
2的功能为showmessage('2')
做一个功能,能定义按哪个键就触发按纽1或2,讨论一下,呵呵
 
把Button和Action联系起来。
 
拿一个actionlist控件上来,新建一个action: action1
把button里的事件写在action1里。然后可以给这个action1设置快捷键。(有这个属性)

然后把这个action1赋给button的ation。
 
楼上你能不能说明白点?
联系起来就能设置热键里吗?
 
真不好意思,我没找到这个属性啊,能不能说明白点啊,呵呵
 
能给段代码就更好了[:D][:D]
 
自己搞定了,不过我还是想听听大家的意见,因为我觉得自己的办法不太好用。
 
没有人对这个问题感兴趣吗?
 
薄荷已经讲得很清楚了
 
给快捷键我也会给,也不一定要用actionlist,关键是自定义的快捷键功能怎么提供
用户定义好之后保存在什么地方,怎么读出来,冲突了怎么办,没有这么简单吧?》
 
procedure MyKeyDown(Key:Word);
begin
case Key of
VK_F1: Main.fmMain.ToolButton1.Click;
VK_F2: Main.fmMain.ToolButton2.Click;
VK_F3: Main.fmMain.ToolButton3.Click;
VK_F4: Main.fmMain.ToolButton4.Click;
VK_F5: Main.fmMain.ToolButton5.Click;
VK_F6: Main.fmMain.ToolButton6.Click;
VK_F7: Main.fmMain.ToolButton7.Click;
VK_F8: Main.fmMain.ToolButton8.Click;
VK_F9: Main.fmMain.ToolButton9.Click;
end;
end;
 
楼上,key要自定义啊,让用户输入,不能是死的,我写的是不是不太明白让大家误会了?
 
那你定义一张功能表,shotkey对相应的组件名.
 
那你说hotkey怎么保存呢?格式?
怎么读?
 
for i:=0 to ComponentCount-1 do
begin
if Components.Name is ComponentsName then
 
呵呵,我不是说组建怎么读,我是说热键怎么读,你保存起来的热键是什么?shift?
 
VK_F1 = 112;
{$EXTERNALSYM VK_F2}
VK_F2 = 113;
{$EXTERNALSYM VK_F3}
VK_F3 = 114;
{$EXTERNALSYM VK_F4}
VK_F4 = 115;
{$EXTERNALSYM VK_F5}
VK_F5 = 116;
{$EXTERNALSYM VK_F6}
VK_F6 = 117;
{$EXTERNALSYM VK_F7}
 
倒,难道我的表达能力就这么差?
我说的不是这个啊
 
ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble
不可以用string var表示吗?
 
比如用户想要你实现两个功能:
1 弹出对话筐,上面写着一个"1"
2 弹出对话筐,上面写着一个"2"
人家希望自己设键弹出“1”或“2”
因为不同的克户可能有不同的需求,用户1想alt+1显示“1”,用户2想ctrl+shift+a显示
"1",这样你就得提供让用户设置热键的功能,而不是你给他设置好。
这么说,明白我意思了吗?
 
顶部