TActiveForm遇到的焦点问题,导致Key/MouseWheel事件无法接收

来源:互联网 发布:缓存数据怎么清除 编辑:程序博客网 时间:2024/04/28 04:53

procedure TClientX.ActiveFormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage('k=' +Char(Key));

  // SetFocus; 
end;

上面的对话框只是显示一次,分析到原因:

因为对话框显示出来后,Focus已经转到IE:Shell DocObject View窗口中了,Delphi不会自动切换回来.

解决: 加一行SetFocus() 重新设置当前焦点.

或者加一TEdit, 并设置TAcitveForm.ActiveControl:= Edit;