【问题标题】: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 控件,这在您的情况下可能不太正确。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2010-09-24
      相关资源
      最近更新 更多