无法在 C++ Builder/Delphi with Firemonkey 中的编辑组件中键入 TAB



我想在我的应用程序中编写脚本编辑器,我在 Firemonkey 的 C++Builder 中编写脚本编辑器。当您在 TMemo(或 TEdit> 中编辑代码时,

我试图挂接到表单的 onKeyDown 和 TMemo 组件,但似乎键是在较低级别处理的,我无法捕获它。试图谷歌这个问题,但似乎没有人费心在 Firemonkey 框架中的编辑器中键入选项卡。

如何更改焦点处理器的行为,或者仅将 TMemo 组件配置为不移动到 Tab 键上的下一个组件,而是打印它?

type
  TForm1 = class(TForm)
//....
  public
    { Public declarations }
    procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); override;
  end;
//....
procedure TForm1.KeyDown(var Key: Word; var KeyChar: System.WideChar;
  Shift: TShiftState);
begin
  if (Key = vkTab) and (Focused.GetObject = Memo1) then
  begin
    KeyChar := #9;
    Focused.KeyDown(Key, KeyChar, Shift);
    Exit;
  end;
  inherited;
end;

像这样覆盖TForm.KeyDown过程,Tab键将在备忘录中正常工作。

最新更新