让TEdit控件只接收数字输入。 在TEdit的onKeyPress事件中: if not (Key in ['0'..'9','.',#8,#13]) then Key:=#0; if Key='.' then begin if (Pos('.',TEdit(Sender).Text)<>0)or(Length(TEdit(Sender).Text)=TEdit(Sender).SelLength) or(TEdit(Sender).SelStart=0) then Key:=#0; end; 其它自已看著辦
上面个各位说得都不够完善 我给你一个最终完美的吧! ———— procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var s:integer; bj:integer; str:String; begin //第一位不能输入小数点,只能有一个小数点 if (Key = '.') and ((Length(edit1.text) = 0) or (Pos('.', edit1.text) > 0)) then Key := #0; ////第一位只能输入负号,只能有一个负号 if (Key = '-') and ((Length(edit1.text) <> 0) or (Pos('-', edit1.text) > 0)) then Key := #0; //只能输入 0到9、负号、退格、回车 if not (key in ['0'..'9','-','.',#8,#13]) then key:=#0; //限制小数点后2位 if key<>#8 then begin bj:=pos('.',edit1.text); if bj>0 then begin s:=length(edit1.Text); str:=Copy(edit1.text, bj,s-bj); if length(str)>=2 then key:=#0; end; end;end; //edit有个属性叫MAXLEANTH,缺省是0,你设定个数字如5那只能输5位
谢谢楼上各位,问题就剩缺省值了,小弟自己想吧,由于我要在很多EDIT中用下面的函数,所以我把函数该成这样:procedure TMainForm.suiEdit8KeyPress(Sender: TObject; var Key: Char); var s:integer; bj:integer; str:string; begin if not (Key in ['0'..'9','.',#8,#13]) then Key:=#0; if key<>#8 then begin bj:=pos('.',TEdit(Sender).Text); if bj>0 then begin s:=length(TEdit(Sender).Text); str:=Copy(TEdit(Sender).Text, bj,s-bj); if length(str)>=2 then key:=#0; end; end; if Key='.' then begin if (Pos('.',TEdit(Sender).Text)<>0)or(Length(TEdit(Sender).Text)=TEdit(Sender).SelLength)or(TEdit(Sender).SelStart=0) then Key:=#0; end; end;
在TEdit的onKeyPress事件中: if not (Key in ['0'..'9','.',#8,#13]) then
Key:=#0;
if Key='.' then
begin
if (Pos('.',TEdit(Sender).Text)<>0)or(Length(TEdit(Sender).Text)=TEdit(Sender).SelLength)
or(TEdit(Sender).SelStart=0) then
Key:=#0;
end;
其它自已看著辦
XP风格的,爽
我给你一个最终完美的吧!
————
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var s:integer;
bj:integer;
str:String;
begin
//第一位不能输入小数点,只能有一个小数点
if (Key = '.') and ((Length(edit1.text) = 0) or (Pos('.', edit1.text) > 0)) then
Key := #0;
////第一位只能输入负号,只能有一个负号
if (Key = '-') and ((Length(edit1.text) <> 0) or (Pos('-', edit1.text) > 0)) then
Key := #0;
//只能输入 0到9、负号、退格、回车
if not (key in ['0'..'9','-','.',#8,#13]) then key:=#0;
//限制小数点后2位
if key<>#8 then
begin
bj:=pos('.',edit1.text);
if bj>0 then
begin
s:=length(edit1.Text);
str:=Copy(edit1.text, bj,s-bj);
if length(str)>=2 then
key:=#0;
end;
end;end;
//edit有个属性叫MAXLEANTH,缺省是0,你设定个数字如5那只能输5位
我问题最大的是DBGRID网格中输入金额的问题
各位能不能帮我??
var
s:integer;
bj:integer;
str:string;
begin
if not (Key in ['0'..'9','.',#8,#13]) then
Key:=#0;
if key<>#8 then
begin
bj:=pos('.',TEdit(Sender).Text);
if bj>0 then
begin
s:=length(TEdit(Sender).Text);
str:=Copy(TEdit(Sender).Text, bj,s-bj);
if length(str)>=2 then
key:=#0;
end;
end;
if Key='.' then
begin
if (Pos('.',TEdit(Sender).Text)<>0)or(Length(TEdit(Sender).Text)=TEdit(Sender).SelLength)or(TEdit(Sender).SelStart=0) then
Key:=#0;
end;
end;