我有一個TEdit(VisualCLX組件),我想覆蓋onKeyPress事件中TAB鍵的行爲,但是如果我嘗試在KeyPress事件中攔截TAB鍵它不起作用,因爲在TEdit上按Tab鍵時事件未被觸發。在CLX TEdit的KeyPress事件中攔截TAB鍵
如何攔截TEdit控件的KeyPress事件上的TAB鍵?
我有一個TEdit(VisualCLX組件),我想覆蓋onKeyPress事件中TAB鍵的行爲,但是如果我嘗試在KeyPress事件中攔截TAB鍵它不起作用,因爲在TEdit上按Tab鍵時事件未被觸發。在CLX TEdit的KeyPress事件中攔截TAB鍵
如何攔截TEdit控件的KeyPress事件上的TAB鍵?
編輯事件不適用於導航鍵Tab
,因爲它們不會觸發鍵盤事件。唯一指出這一事實的地方。 Delphi Help TCustomForm.KeyPreview
要測試把3 TEdit(CLX)放在窗體上和TMemo。
標籤順序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;
按shift標籤
備註1顯示
Edit1KeyUp
Edit1KeyUp
壓片
Memo1顯示
Edit2KeyUp
壓片
Edit2.SetFocus;
Memo1顯示
Edit3KeyUp
所以用TAB鍵選擇用戶永遠可以離開EDIT2
例如:在Edit3KeyUp事件中,你可以在#9添加到Edit2.Text。
if Key = VK_TAB then begin
Edit2.SetFocus;
Edit2.Text := Edit2.Text+#9+'<- a Tab here';
end;
我從來沒有使用過CLX。 CLX和VCL之間的關鍵行爲有什麼不同? –
@ felipe.zkn:沒有與「CLX」合作,所以我不知道確切的區別。但TAB由應用程序管理! –
要實現它呢? –
我想覆蓋選項卡的默認行爲... – aleroot