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要做此限制,当然不必给每个控件写代码,把事件指定到同一个过程就行了。
|
请发表评论