快捷键编程(特别是F10如何处理?)(100分)

  • 主题发起人 主题发起人 xzhxu2006
  • 开始时间 开始时间
X

xzhxu2006

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了这样一个程序,大家帮忙看看!
新建一个工程Project1.exe,File Name为Unit1.Pas,窗体Name为Form1;
在Form1上添加Label1,Label2,Label3,它们的Visible均为False;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
Begin
Case Key of
VK_F9:
begin
Label1.Visible := True;
Label2.Visible := False;
Label3.Visible := False;
end;
VK_F10:
Begin
Label1.Visible := False;
Label2.Visible := True;
Label3.Visible := False;
end;
VK_F11:
Begin
Label1.Visible := False;
Label2.Visible := False;
Label3.Visible := True;
end;
End;
End;


编译运行后,问题来了
按下F9,Lable1显示出来了;按下F10,Label2显示出来了;再按下F11,Label3就不显示出来了,还是显示的Label2;如果用鼠标单击一下窗体,再按下F11,Label3就又能够显示出来;总之,再按下F10之前,(F1-F9,F11,F12都可以切换自如);但按下F10后,必须用鼠标单击一下窗体,按下其它键才有效
不知道大家有没有遇到这样的问题,请高手指教!
 
SendMessage(Form1.Handle,___________,0,0);
横线上填什么呢,表示鼠标在Form1上单击??
 
F10是系统的热键,用来激活菜单的,你可以用一个ActionList来代替你上面的功能
ActionList里加入3个Action,将其ShortCut分别设置为F9,F10,F11,然后在每个Action的OnExecute事件里写代码来执行各自的功能
 
在我的思想下,如何屏蔽它的系统热键呢?
 
hongxing_dl說的沒錯,用ActionList這個最好
 
用actionlist就绕过去了,很好用.
 
ActionList好象不可以用到其他窗体中吧
就是说,当窗体切换到同一程序中的其他窗体时,此时快捷键就失效了
有没有其他更好的控件啊
 
楼主这好象没有必要用到其他窗体上吧?
你的keydown里面照样不行的啊,如果要用到其他窗体甚至当程序焦点移开都可以用的话,那就等用热键了,得用全局原子或者钩子来实现了
 
注册热键
 
全局原子或者钩子来实现了 ??
 
多人接受答案了。
 
后退
顶部