按钮使用的问题(在线等待)(100分)

  • 主题发起人 主题发起人 玄成
  • 开始时间 开始时间

玄成

Unregistered / Unconfirmed
GUEST, unregistred user!
在按钮上按方向键,就会将焦点移出该按钮,如何屏蔽这个功能
怎样接收按下的方向键??好像在keydown,keypress,中不响应,在keyup事件中
只有焦点没离开时才响应,这该怎么解诀?????
在线等待。。。。。。。
 
不能直接在Button中处理onkey...事件,是得不到,
即使将 form的keyrpeview 置为true ,也无法捕捉
button上的方向键。
因为Button上的方向键不触发OnKey...事件。

所以只能在更低层的消息处理中来实现,我在
Application.OnMessage事件中得到成功处理。

首先自定义一个消息程序,截获活动控件为Button1时
的方向键:

procedure TForm1.MyProc(var Msg: TMsg; var Handled: Boolean);
begin
if activecontrol=button1 then //当前活动控件 Button1
if msg.message =WM_Keydown then
if ((msg.wparam=vk_Up) or (msg.wparam=vk_down)
or (msg.wparam=vk_left)or (msg.wparam=vk_right))
then begin
handled:=true;
end;
end;

然后在Form的 oncreate中重定向Application消息处理:

procedure TForm1.FormCreate(Sender: TObject);
begin
application.OnMessage:=MyProc;
end;

这样做一下就可以了。
 
接受答案了.
 
后退
顶部