我编写了一个TEdit OnKeyDown处理程序来进行自定义 Ctrl + BkSp 处理。在我的例子中,我删除了最后2个字符。看到不良行为:在我的代码“square”字符附加到文本后。如何不“添加”这样的广场?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=vk_back) and (shift=[ssCtrl]) then
begin
with edit1 do
begin
if text<>'' then
text:= Copy(text, 1, length(text)-2);
selstart:= length(text);
end;
key:= 0;
Exit
end;
end;
答案 0 :(得分:3)
这是一个简单的方法,使 Ctrl + BkSp 删除最后两个字符:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #127 then
begin
Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text) - 2);
Edit1.SelStart := Length(Edit1.Text);
Key := #0;
end;
end;