Delphi中限制文本框(TEdit)只能输入数字

procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
 edt: TEdit;
 str, strL, strR: string;
 p: integer;
begin
   // 获取当前文本内容, 注意要去掉选中部分(因为会被改写).
 edt := TEdit(Sender);
 str := edt.text;
 if Length(edt.SelText) <> 0 then
 begin
   strL := LeftStr(edt.text, edt.SelStart);
   strR := RightStr(edt.text, Length(edt.text) - edt.SelStart - edt.SelLength);
   str := strL + strR;
 end;
   // 限制输入数字/小数点/退格键
 if not (Key in [#8, #13, #127, '.', '-', '0'..'9']) then Key := #0;
   //限制只能输入一个小数点
 if Key = '.' then
 begin
   p := Pos('.', edt.Text);
   if p > 0 then Key := #0;
 end;
   //限制只能在第一位输入且只能输入一个'-'号
 if Key = '-' then
 begin
   if edt.SelStart > 0 then Key := #0;
   p := Pos('-', edt.Text);
   if p > 0 then Key := #0;
 end;
end;

//要uses StrUtils单元
如果程序里有很多的TEdit要做此限制,当然不必给每个控件写代码,把事件指定到同一个过程就行了。

原文地址:https://www.cnblogs.com/m0488/p/3526758.html