你可以用函数strlen侧一下输入的数据然后如果大于一定的数就出提示框

解决方案 »

  1.   

    to lonelybug:
       可是,如何屏蔽掉系统的出错信息呢?
      

  2.   

    在录入框中OnChange事件中
    try
      ……
    execept 
      on EConvertError do    
      begin
        application.messagebox('录入错误','提示',MB_OK+MB_ICONERROR);
      end 
     
      

  3.   

    在OnExit事件中
    try
      strtoint(edit.text);
    except
      application.messagebox('录入错误','提示',MB_OK+MB_ICONERROR);
    end;  
      

  4.   

    如果你用的是数据敏感控健的话,非法字符应该会自动屏蔽!如果是位数太大导致数据过大
    时,你可以在Query中添加静态字段,设置她的Maxvalue的值就可以了/也可以用异常捕捉

    try
    .....
    except
       on e:exception do
      begin
         if pos('The allowed range',e.message)<>0 then
          Application.MessageBox(pchar('输入错误:'+#13+'  输入的数字太大,超过允许范围!'),'出错',Mb_ok+Mb_IconError)  end;
    end;
      

  5.   

    我在用TDBGrid时也出现类似的问题,在出现给错误时根本没有进入OnChange和OnValidate事件,TField中好象还没有Mask. 不知如何办好??
      

  6.   

    在该field的onsettext中设置也可以拦截。 http://www.csdn.net/expert/Topic/54469.shtm
      

  7.   

    to liuchen:
     我在ONSETTEXT中试过了,当录入的数据没超过整数的范围时,有效,否则,无效?!
       
      

  8.   

    to liuchen:
     我在ONSETTEXT中试过了,当录入的数据没超过整数的范围时,有效,否则,无效?!
       
      

  9.   

    在onsettext中try
      strtoint(text);
    except
      showmessage('不是整数。');
      text:='';//(最好是这样处理);
      xxxxxxx;
      xxxxxxx;
      .....
    end;
      

  10.   

    字段编辑器中有一个EDITFORMAT属型,足够你使用了。
      

  11.   

    to fly_xyz():
    EDITFORMAT属型,有用吗?怎么用?
      

  12.   

    to liuchcn:
       我试了,编译的时候报错:left side cannot be assigned to 
        指的是: text:=''  这一行?
    by the way ,你用的是delphi3 or 5?
      

  13.   

    to liuchcn(michael):
    写错了吧!应该是:
    try
      Sender.Value:=strtoint(text);
      
    except
      showmessage('不是整数。');
      Sender.Value:='';//(最好是这样处理);
      xxxxxxx;
      xxxxxxx;
      .....
    end; 只要在OnSetText中有语句,哪怕是注释,字段的内容都不变,必须你亲自赋值,当然一切系统错误都不会发生!!
    遗憾的是对于integer字段,没有公布EditMask属性,但还是能用,例:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ADODataSet1.FieldByName('tinyIntField').EditMask :='9999;0;_'
    end;可以给分了!!!
      

  14.   

    procedure TForm1.ADODataSet1RqlxbhSetText(Sender: TField;
      const Text: String);
    //^^^^^能给Text赋值,那才叫见鬼了呢!!!
      

  15.   

    to lz_0618(lz_0618):说得对应该是
    sender.AsString :='xxx';

    sender.asinteger:=xxx;
    ........
      

  16.   

    应该是:
    try
      Sender.Value:=strtoint(text);
    except
      showmessage('不是整数。');
      sender.asinteger:=xxx;//(最好是这样处理);
      xxxxxxx;
      xxxxxxx;
      .....
    end;