这里有很多类似的问题,但我无法找到问题的答案。
我有一个TRichEdit
,并希望在用户按 Tab 时实现一些自定义行为。我将富编辑的WantTabs
属性设置为True
并尝试在OnKeyDown
中添加我的自定义行为,这很正常,但不幸的是,之后也会执行“正常”标签行为(在编辑中插入制表符)。我尝试在事件处理程序中将Key
设置为0
,但这没有帮助。
如何防止执行“正常”标签行为?
答案 0 :(得分:6)
改为使用OnKeyPress
事件:
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = chr(VK_TAB) then
begin
beep;
Key := #0;
end;
end;
或者,如果您确实需要使用OnKeyDown
事件,只需删除关键信息:
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
msg: TMsg;
begin
if Key = VK_TAB then
begin
beep;
while PeekMessage(msg, RichEdit1.Handle, WM_KEYFIRST, WM_KEYLAST,
PM_REMOVE) do;
end;
end;