只有TEdit,Delphi中的数字

时间:2015-11-17 09:58:49

标签: delphi

如何添加仅接受数字的TEdit? 我搜索信息但没有任何帮助我。

我需要一个不接受任何字母或字符串的TEdit

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin 
  if not (Key in [#8, '0'..'9', DecimalSeparator]) then 
  begin
     ShowMessage('Invalid key: ' + Key); 
     Key := #0; 
  end 
  else 
  if (Key = DecimalSeparator) and (Pos(Key, Edit1.Text) > 0) then 
  begin 
    ShowMessage('Invalid Key: twice ' + Key); 
    Key := #0; 
  end; 
end;

2 个答案:

答案 0 :(得分:5)

在现代Delphi版本(D2009 +)中,您可以使用 TEdit.NumbersOnly财产。

  

只允许在文本编辑中输入数字。   使用NumbersOnly禁止在文本字段中输入非数字字符。但请注意,即使设置了此属性,用户也可以在文本字段中粘贴非数字字符。

另一种选择是使用TMaskEdit组件。 使用以下字符的EditMask属性可以生成有效的数字输入,包括负值。

# : Accepts an optional sign or numeric digit
0 : Accepts a numeric character
9 : Accepts an optional numeric character

答案 1 :(得分:0)

对于旧的 Delphi 版本,即 2006,(@MBo 提示后),代码可以是这样的(可以放到 Form.OnCreate 中):

CurrentStyle := GetWindowLong(Edit1.Handle, GWL_STYLE);
CurrentStyle := CurrentStyle or ES_NUMBER;
SetWindowLong(Edit1.Handle, GWL_STYLE, CurrentStyle);