在DELPHI中怎么让edit输入的只能是中文
还有就是输入一个身份证,怎么让edit只能输入15或18位,并切只能是数字,18位的最后一个可以是X,这最后还要可以是x啊。。。谁能写出代码的给个代码。。。...
还有就是输入一个身份证,怎么让edit只能输入15或18位,并切只能是数字,18位的最后一个可以是X,这最后还要可以是x啊。。。谁能写出代码的给个代码。。。
展开
4个回答
展开全部
只允许输入中文或删除:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ((ord(key) < 128) and (key <> #8)) then key := #0;
end;
只允许输入15或17个数字+x或猜谈则删除:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key <> #8 then begin // 允许删除键
if length(Edit1.Text) < 17 then begin // 长度小于17时只允许输入数字
if not (key in [#8, '0'..'9']) then key := #0;
end else begin // 长度=17时只允许输入x或者X
if not ((length(Edit1.Text) = 17 ) and (key in ['X','x'])) then key := #0;
end;
end;
end;
procedureTForm1.Edit1Exit(Sender: TObject); // 最后离开Edit1时需要确认侍卖文字长度
begin
if ((length(Edit1.text) <> 15) and (length(Edit1.text) <> 18)) then begin
showmessage('错误!必须输入15个数字,或者18个数字结尾必须穗棚是X');
Edit1.SetFocus; // 设定焦点
end;
end;
以测试,可用!
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ((ord(key) < 128) and (key <> #8)) then key := #0;
end;
只允许输入15或17个数字+x或猜谈则删除:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key <> #8 then begin // 允许删除键
if length(Edit1.Text) < 17 then begin // 长度小于17时只允许输入数字
if not (key in [#8, '0'..'9']) then key := #0;
end else begin // 长度=17时只允许输入x或者X
if not ((length(Edit1.Text) = 17 ) and (key in ['X','x'])) then key := #0;
end;
end;
end;
procedureTForm1.Edit1Exit(Sender: TObject); // 最后离开Edit1时需要确认侍卖文字长度
begin
if ((length(Edit1.text) <> 15) and (length(Edit1.text) <> 18)) then begin
showmessage('错误!必须输入15个数字,或者18个数字结尾必须穗棚是X');
Edit1.SetFocus; // 设定焦点
end;
end;
以测试,可用!
展开全部
这个用正迹搏塌则表达式比较好!
对于限制用户输入姿圆最好是采用正则表达式来限制。
以上的答案根本不能正确的验证银掘身份证的正确如否!
对于限制用户输入姿圆最好是采用正则表达式来限制。
以上的答案根本不能正确的验证银掘身份证的正确如否!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Keypress下写代码:
//判断长度不能大于18
if(Length(Edit1.Text) > 18)then
key := #0;
if(Length(Edit1.Text) = 18)then
if(not key in [0..9,'x','X'])then
key := #0;
在提交这次输液州桥入信息的地方,例如:提交按钮中加入如下代码:
if ((Length(Edit1.Text)<>15)or(Length(Edit1.Text) <> 18)) then
begin
showmessage('输入闹猛迹毕的长度有误!');
Edit1.Text := '';
Exit;
end;
//判断长度不能大于18
if(Length(Edit1.Text) > 18)then
key := #0;
if(Length(Edit1.Text) = 18)then
if(not key in [0..9,'x','X'])then
key := #0;
在提交这次输液州桥入信息的地方,例如:提交按钮中加入如下代码:
if ((Length(Edit1.Text)<>15)or(Length(Edit1.Text) <> 18)) then
begin
showmessage('输入闹猛迹毕的长度有误!');
Edit1.Text := '';
Exit;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在keypress下面写, if not key in [0..9] then eixt 这样基本就可以了。
追问
是只能输入中文。。不是数字。。。,数字的我现在不知道怎么规定只能输入15位或者18位,且如果是18的时候最后一位可以是x
追答
if (Ord(Key)127) then
Key:=#0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询