【问题标题】:Managed VCL.Arrow keys and Tab key托管 VCL.箭头键和 Tab 键
【发布时间】:2012-05-18 06:25:39
【问题描述】:
我正在使用托管 VCL 在 Delphi 表单上托管我的 .net 用户控件。
但我有一个问题:tab 键、箭头键和特定键(HOME、INSERT)不起作用。
我尝试了托管 VCL 论坛上写的所有内容。
1) 我试图将我的用户控件放到更高级别的用户控件中并在那里覆盖 ProcessDialogKey。但这没有帮助。
2)我尝试将 DLGC_WANTTAB 或 DLGC_WANTALLKEYS 添加到 TClrCustomControl.WMGetDlgCode 的消息结果中,但这也没有帮助。
谁能帮我解决这个问题?
【问题讨论】:
标签:
c#
delphi
keyboard-events
【解决方案1】:
我遇到了类似的问题。我通过拦截主机表单上的 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 控件,这在您的情况下可能不太正确。