Reputation: 16612
There are lot of similar questions on here, but I couldn't find an answer for my problem.
I have a TRichEdit
and want to implement some custom behaviour when the user presses Tab. I set the rich edit's WantTabs
property to True
and tried to add my custom behaviour in OnKeyDown
, which works fine, but unfortunately after that the "normal" tab behaviour is executed as well (inserting a tab character in the edit). I tried setting Key
to 0
in the event handler but that doesn't help.
How can I prevent the "normal" tab behaviour from being executed?
Upvotes: 3
Views: 2347
Reputation: 108963
Use the OnKeyPress
event instead:
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = chr(VK_TAB) then
begin
beep;
Key := #0;
end;
end;
Alternatively, if you really need to use the OnKeyDown
event, simply remove the key messages:
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;
Upvotes: 6