0

我编写了一个 TEdit OnKeyDown 处理程序来进行自定义Ctrl+BkSp处理。在我的示例中,我删除了最后 2 个字符。看到不良行为:在我的代码“方形”字符附加到文本之后。如何不“添加”这样的正方形?

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;
4

1 回答 1

3

这是一种简单的方法 make Ctrl+ BkSpremove 最后两个字符:

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;
于 2013-05-30T22:48:01.163 回答