同上

解决方案 »

  1.   


    procedure TForm1.Edit1Exit(Sender: TObject);
    var
      i:integer;
    begin
      try
        i:=strtoint(edit1.Text);
        if i<1000 then
            raise ERangeError.Create('');
      except
                 ShowMessage('必须输入4位数');
                 Edit1.SetFocus;
      end;
    end;
      

  2.   

    楼上的应该是失去焦点的时候代码。
    而楼主要表达的好像是,焦点在edit中的时候,就是在edit在编辑状态的时候,不过这个好像有些问题啊还是楼主表达的不准确?
      

  3.   

    在焦点上的时候,一般用onchange来判断比较好,但是这样的话,输入一个就会有运行代码来判断,少于四位会提示3次,这是个问题。而且获得焦点的时候却无法判断已经存在于edit中的数值的位数。
    而不且onchange而用onedit的话,像也会有问题。
      

  4.   

    begin
    if (length(edit3.Text)<>15) and (length(edit4.Text)<>18)    then
    begin
    messagedlg('请输入正确的身份证号码!',mterror,[mbok],0);
    exit;
    end;
    我这样也会出错,大家帮我看看
      

  5.   

    AND跟and 还有区别的啊?改一下大小写就OK了?
      

  6.   

    begin 
    if (length(edit3.Text) <>15) and (length(edit4.Text) <>18)    then 
    begin 
    messagedlg('请输入正确的身份证号码!',mterror,[mbok],0); 
    exit; 
    end; 按理说,如果你edit3的text=15,或者edit4的等于18就不会出错。
    在delphi中,大写和小写是没有区别的。
    messagedlg有个讨厌的地方,就是按钮是英文的。
    不如用messagebox(0,'提示内容','提示标题',mb_error+mb_topmost)这个东东帮助里讲的比messagedlg详细。
      

  7.   


    begin 
    if (length(edit3.Text) <>15) and (length(edit4.Text) <>18)    then 
    begin 
    messagedlg('请输入正确的身份证号码!',mterror,[mbok],0); 
    exit; 
    end; 按理说,如果你edit3的text=15,或者edit4的等于18就不会出错。 
    在delphi中,大写和小写是没有区别的。 
    messagedlg有个讨厌的地方,就是按钮是英文的。 
    不如用messagebox(0,'提示内容','提示标题',mb_error+mb_topmost)这个东东帮助里讲的比messagedlg详细