0

カスタム ハンドリングを作成するために、TEdit OnKeyDown ハンドラを作成しCtrl+BkSpました。私の例では、最後の 2 文字を削除します。悪い動作が見られます: 私のコードの後に​​ "square" char がテキストに追加されました。そのような正方形を「追加」しない方法は?

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

Ctrlこれは、make +BkSp最後の 2 文字を削除する簡単な方法です。

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 に答える