繁体   English   中英

在Delphi应用程序中托管时,ActiveX控件无法正确处理箭头键

[英]ActiveX control not processing arrow keys correctly when hosted in Delphi application

我的应用程序中托管了一个ActiveX控件。 使用Delphi Import组件菜单导入控件。

ActiveX控件包含用于用户输入的编辑框。 当我在自己的沙盒应用程序(而不是Delphi应用程序)中运行控件时,箭头键按预期工作,在编辑控件中移动光标。
但是,当我运行我的Delphi应用程序时,箭头键行为似乎发生了变化。 它似乎更像是一个tab键。

我认为这是因为VCL处理击键的方式。 任何想法如何解决这个问题?

控件应该处理WM_GETDLGCODE并在结果中包含至少DLGC_WANTARROWS

此外,如果ActiveX控件是用Delphi编写的并且在其ControlStyle使用csReflector ,则应该使用WM_KEYDOWNWM_KEYUP (以及任何其他必需的)消息处理程序将其TReflectorWindowAxCtrls单元中的TReflectorWindow类,以将消息委托给VCL。控制:

procedure TReflectorWindow.WMKeyDown(var Message: TMessage);
begin
  Message.Result := FControl.Perform(Message.Msg, Message.WParam, Message.LParam);
end;

procedure TReflectorWindow.WMKeyUp(var Message: TMessage);
begin
  Message.Result := FControl.Perform(Message.Msg, Message.WParam, Message.LParam);
end;

这似乎足以在我使用D2007的测试中工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM