Delphi CLX TEdit按键事件中的Intercept TAB键

Delphi CLX TEdit按键事件中的Intercept TAB键,delphi,delphi-7,clx,Delphi,Delphi 7,Clx,我有一个TEdit(VisualCLX组件),我想覆盖onKeyPress事件中TAB键的行为,但如果我试图在KeyPress事件中截获TAB键,它将不起作用,因为在TEdit上按下TAB键时不会触发事件 如何截获TEdit控件按键上的TAB键事件?编辑事件不适用于导航键TAB,因为这些不会触发键盘事件。唯一指向这一事实的地方 要测试,请在表单和TMemo上放置3个TEdit(CLX)。 选项卡顺序为Edit1、Edit2、Edit3 唯一可以使用的事件是KeyUp事件 procedure TF

我有一个TEdit(VisualCLX组件),我想覆盖onKeyPress事件中TAB键的行为,但如果我试图在KeyPress事件中截获TAB键,它将不起作用,因为在TEdit上按下TAB键时不会触发事件


如何截获TEdit控件按键上的TAB键事件?

编辑事件不适用于导航键
TAB
,因为这些不会触发键盘事件。唯一指向这一事实的地方

要测试,请在表单和TMemo上放置3个TEdit(CLX)。
选项卡顺序为Edit1、Edit2、Edit3
唯一可以使用的事件是KeyUp事件

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit1KeyUp');
end;

procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit2KeyUp');
end;

procedure TForm1.Edit3KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    Memo1.Lines.Add('Edit3KeyUp');
    if Key = VK_TAB then begin
       Edit2.SetFocus;
    end;
end;
  • 将光标放在Edit2输入字段中
  • 按shift键

    • 光标移动到字段edit1
    • 备忘录1显示

      Edit1KeyUp
      编辑1keyup

  • 按tab键

    • 光标移动到字段edit2
    • 备忘录1显示

      编辑2KEYUP

  • 按tab键

    • 光标尝试移动到字段edit3
    • 使用命令
      Edit2.SetFocus
      我们将光标发送回edit2
    • 备忘录1显示

      编辑3keyup

因此,使用TAB键,用户永远无法离开edit2

例如:在Edit3KeyUp事件中,可以向Edit2.Text添加#9

    if Key = VK_TAB then begin
       Edit2.SetFocus;
       Edit2.Text := Edit2.Text+#9+'<- a Tab here'; 
    end;
如果Key=VK\u选项卡,则开始
Edit2.SetFocus;

Edit2.Text:=Edit2.Text+#9+'您想用它实现什么?我想覆盖选项卡外的默认行为…我从未使用过CLX。CLX和VCL之间的关键行为有什么区别?@felipe.zkn:我没有使用过“CLX”,所以我不知道确切的区别。但是选项卡是由应用程序管理的!!