procedure TForm1.Edit1Change(Sender: TObject);
var
strTest:string;
intTest,intPos:integer;
begin
try
intpos:=pos('_',edit1.Text );
while intpos<>0 do
begin
delete(strTest,intpos,1);
intpos:=pos('_',strTest );
end;
inttest:=strtoint(strtest);
except
on E: Exception do
begin
messagedlg('只能输入数字和_!',mtError ,[mbAbort],0);
edit1.Text :='';
end;
end;
var
strTest:string;
intTest,intPos:integer;
begin
try
intpos:=pos('_',edit1.Text );
while intpos<>0 do
begin
delete(strTest,intpos,1);
intpos:=pos('_',strTest );
end;
inttest:=strtoint(strtest);
except
on E: Exception do
begin
messagedlg('只能输入数字和_!',mtError ,[mbAbort],0);
edit1.Text :='';
end;
end;
for i:=1 to length(Your_Str) do
begin
if not(Your_Str[i] in a) then
begin
showmessage('输入不合法');
//exit;
//或作出相应处理
end;
end;
...
if not (key in [#8,'0'..'9','-') then
key:=#0;
使edit只能输入数字
SetWindowLong(Edit1.Handle, GWL_STYLE,
GetWindowLong(Edit1.Handle, GWL_STYLE) or
ES_NUMBER);
2
在keypress事件判断。if not key in['0',,'9','A'..'Z','.','-',char(vk_return),char(vk_delete),char(VK_back)] Thenkey=#0
3
///////Begin Source
function IsNumber(mStr: string): Boolean; { 返回字符串是否是正确的数字表达 }
var
I: Real;
E: Integer;
begin
Val(mStr, I, E);
Result := E = 0;
E := Trunc(I);
end; { IsNumber }
因为么,想用哪 个数就用哪 个,还能BACK,DEL等代码也不多,而且最稳定
TMyStr = ('0','1','2','3','4','5','6','7','8','9','-')
var
MyStr : TMyStr;
begin
if not (yourstr in MyStr) then
begin
...
end;
end;