当焦点是Button时,窗体的OnKeyDown事件为什么不能触发?(50分)

  • 主题发起人 主题发起人 76liujing
  • 开始时间 开始时间
7

76liujing

Unregistered / Unconfirmed
GUEST, unregistred user!
比如用tab键把焦点放到一个button上,
再按回车,但是不能触发form的Onkeydown事件。

请有知道的朋友正面回答我的问题,为什么不能触发form的Onkeydown事件,
我不需要知道其它实现方式。
 
因为你没有打开窗体的KeyPreview属性
 
KeyPreview已经设置为true了,但是还是不行
 
我试了一下,就是回车被过滤了
其他的都行
 
不是吧~~
你别的地方肯定写事件了,不介意将源码发给我。
或者我发给你个Demo,OK?给我你的邮箱地址~~
 
这恐怕是个固有的特性
 
不可能吧...把代碼貼上來看看,
 
procedure TForm1.FormKeyDown(Sender: TObject
var Key: Word;
Shift: TShiftState);
begin
ljShowMsg('ok',ljDtWarning,[ljOk]);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
ljShowMsg('btn1',ljDtWarning,[ljOk]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
self.KeyPreview:=true;
end;
 
就这个,加个button到窗体上,
大家可以试试
 
to wqhatnet:
对,我就是问回车的事情!
 
应该是因为回车触发的是TWinControl.CNKeyDown而不是TWinControl.WMKeyDown,至于为什么触发的是TWinControl.CNKeyDown则请参看TApplication.IsKeyMsg。
要触发窗体的OnKeyDown则要触发TWinControl.DoKeyDown,而这由WMKeyDown等等触发。
 
感谢shenloqi的回答,非常准确!
 
后退
顶部