if (key in ['0'..'9',#46,#8]) then begin if key=#46 then begin if pos('.',edit3.Text)>0 then key:=#0; end; end else key:=#0; 可以用小数点啊 并且限制只能有一个小数点的啊 你也可以再加上小数点后的位数啊
procedure TFrm_gasstation_box.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',Chr(8),'.']) then key:=#0; end; 就是不能输入特殊字符如何解决?在集合中加入就好了,Chr(8),回删键,呵呵!
type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var fstyle: dWord; begin fstyle := GetWindowLong(Edit1.Handle, GWL_STYLE); SetWindowLong(Edit1.Handle, GWL_STYLE, fstyle or ES_NUMBER); end;
procedure TForm1.Edit1Change(Sender: TObject); var i: Integer; begin if (Sender is TEdit) and ((Sender as TEdit).Text <> ') then begin for i:=1 to Length(TEdit(Sender).Text) do if not ((Sender as TEdit).Text[i] in ['0'..'9']) then begin (Sender as TEdit).Undo(); (Sender as TEdit).ClearUndo(); Break; end; end; end;
procedure SetEnterNumberOnly(ACustomEdit: TCustomEdit); var i: Integer; begin for i := 1 to Length(Trim(ACustomEdit.Text)) do // Iterate begin try StrToInt(Copy(Trim(ACustomEdit.Text), i, 1)); except ACustomEdit.Text := Copy(Trim(ACustomEdit.Text), 0, i -1) + Copy(Trim(ACustomEdit.Text), i + 1, Length(Trim(ACustomEdit.Text))); end; end; // for