使用Ctrl + BkSp从OnKeyDown上的编辑中跳过“方形字符”

时间:2013-05-30 22:12:15

标签: delphi delphi-7

我编写了一个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;

1 个答案:

答案 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;