OnKeyPressif not(Key in [#1..#31, '0'..'9','.','-']) then Key:= #0;
procedure Torm1.edit1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['.',#8,'0','1','2','3','4','5','6','7','8','9']) then Key := #0; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9','.']) then Key:=#0; end;
if not(Key in '0'..'9','.']) then Key:= #0; 在onkeypress里面
tform1.edit1keypress if not (Key in ['.',#8,'0'..'9']) then Key := #0;
应该这样 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var s:set of char; begin s:=['.',#8,'0'..'9'];//可输入的字符 if pos('.',edit1.text)>0 then s:=s-['.']; if not (Key in s)then Key := #0; end;
在 onexit 事件中处理,速度快,不用每一次按键都触发事件. const number=['0','1','2','3','4','5','6','7','8','9','.']; var i,flag:integer; msg:ansistring; begin msg:=edit1.Text; flag:=0; for i:=1 to length(msg) do begin if not (msg[i] in number) then begin flag:=1; showmessage('您输入的不是数字,请输入数字.'); break; end; end; if(flag=1) then edit1.SetFocus;
这个帖子居然讨论得这么热烈,奇怪了!是不是因为分高?楼上好多位没有考虑 负数的 “-” 号。还有一个办法,这个办法用这并不方便,但是可以琢磨一下 在OnChange事件里面写 try if (Edit1.Text <> '') then StrToFloat(Edit1.Text); Edit1.ClearUndo; except if (Edit1.CanUndo) then Edit1.Undo; end;
Key:= #0;
begin
if not (Key in ['.',#8,'0','1','2','3','4','5','6','7','8','9']) then
Key := #0;
end;
begin
if not (key in ['0'..'9','.']) then
Key:=#0;
end;
也要把它给key:=#0;这样才不会出现24.3...4这样的数啊
代码你自己想想就知道的,很简单啊
在edit的KeyPresss事件中处理
if not((key in 数字)or(key in 小数点)) then
key:=#0;
begin
if not (Key in ['.',#8,'0'..'9']) then
Key := #0;
end;
if pos('.',(sender as tedit).text)>0 then key:=#0;
if not (key in['0'..'9','.',#8]) then
key:=#0;
if pos('.',(sender as tedit).text)>0 then key:=#0;
if not (key in['0'..'9','.',#8]) then
key:=#0;
begin
if not (key in ['0'..'9','.']) then
Key:=#0;
end;
Key:= #0;
在onkeypress里面
if not (Key in ['.',#8,'0'..'9']) then
Key := #0;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
s:set of char;
begin
s:=['.',#8,'0'..'9'];//可输入的字符
if pos('.',edit1.text)>0 then
s:=s-['.'];
if not (Key in s)then
Key := #0;
end;
const number=['0','1','2','3','4','5','6','7','8','9','.'];
var
i,flag:integer;
msg:ansistring;
begin
msg:=edit1.Text;
flag:=0;
for i:=1 to length(msg) do
begin
if not (msg[i] in number) then
begin
flag:=1;
showmessage('您输入的不是数字,请输入数字.');
break;
end;
end;
if(flag=1) then
edit1.SetFocus;
在OnChange事件里面写
try
if (Edit1.Text <> '') then
StrToFloat(Edit1.Text);
Edit1.ClearUndo;
except
if (Edit1.CanUndo) then
Edit1.Undo;
end;