4

我正在使用托管 VCL 在 Delphi 表单上托管我的 .net 用户控件。但我有一个问题:tab 键、箭头键和特定键(HOME、INSERT)不起作用。

我尝试了托管 VCL 论坛上写的所有内容。
1)我试图将我的用户控件放到更高级别的用户控件并覆盖 ProcessDialogKey 那里。但这没有帮助。
2)我尝试将 DLGC_WANTTAB 或 DLGC_WANTALLKEYS 添加到 TClrCustomControl.WMGetDlgCode 的消息结果中,但这也对我没有帮助。

谁能帮我解决这个问题?

4

1 回答 1

0

我有一个类似的问题。我通过拦截主机表单上的 tab 键并且不允许它处理击键来解决它。以下代码适用于我的情况:

procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
...
procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
  if Message.CharCode = VK_TAB then
    // ignore tabs and allow the TClrControl to handle them
  else
    inherited;
end;

在我的例子中,TClrControl 是客户端对齐的并覆盖整个表单,因此如果您混合使用 VCL 和 .NET 控件,这在您的情况下可能不太正确。

于 2017-05-04T14:07:45.930 回答