怎么样限制数据的输入格式,例如在dbedit中限制输入的数据小数点前面只能输入6位整数,小数点后面只能输入2位数,在输入多的就输不进去。除了maskedit外,对dbedit怎么限制啊?我得dbedit对应得是adoquery中相应得字段。

解决方案 »

  1.   

    可以在keypress事件中判断输入的数是否满足要求
    procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
    begin
      ...
    end;
      

  2.   

    你可以在数据集的beforePost事件里面作数据校验,进行错误处理。
    同时你注意一下数据集的UpdateError时间。这些东西可以结合着使用
      

  3.   

    {键盘输入控制}
    procedure KeyControl(Keyset:Char);
    var
      handle:HWND;
     flagNum,flagXX,flagDX:boolean;
    beginflagNum:=((Keyset>'9') or (Keyset<'0'));
    flagXX:=((Keyset>'z') or (keyset<'a'));
    flagDX:= ((Keyset>'Z') or (keyset<'A'));
    if (flagNum and flagXX and flagDX and (Keyset<>#8) and (Keyset<>'.')) then
         begin
           messagebox(handle,pchar('该按键此处禁用!'),pchar('信息'),mb_ok);
          Abort;
          end;
    end;
    然后可以在其中用copy来对字符串进行校验,如果copy(string,7,1)<>'.'那么。如果lenght(string)>9那么。
    时间有限自己搞吧!
      

  4.   

    谢谢楼上得各位,如果在keypress中设定,请问怎么 写,能给个例子吗,我是菜鸟。
      

  5.   

    setfocus(脸谱) 的放在KeyPress中不行吗? 我想可以
      

  6.   

    嗯~~我已经做过,在edit的keypress事件中处理
      

  7.   

    to wanderung(杨青)
       能给个例子吗,我现在处理得还有点困难,谢谢。
      

  8.   

    还有,我想限制dbgrid中数据的输入方式,像修改或者添加一条记录的时候,也要限制它的格式,请问怎么限制啊??
    麻烦各位帮帮小弟一把。
      

  9.   

    小数点可以通过COPY(FLOATTOSTR(数值),开始,结束) 来控制
    不让输入可以在KEYPRESS事件里 
    IF NOT KEY IN['0'..'9'] THEN KEY:=#0;刘刘
    限制DBGRID可以通过ROWCOUNT来控制增加,减少
      

  10.   

    to hyh128(小黄):
       谢谢你的帮忙,我这就去试试。
      

  11.   

    可是在dbgrid的属性中,没找到ROWCOUNT呀??
    这是怎么回事啊?
      

  12.   

    输入判断大家都讲的差不多了,我来试试小数点的判断
     其实就是判断DBEdit1.Text与Round(DBEdit1.Text,-2)是否相等
      

  13.   

    谢谢楼上的各位,我现在很想知道怎么样同样限制dbgrid中的数据呢?
      

  14.   

    就是在与DBGrid相连的DataSet的BeforePost事件中判断就可以了
      

  15.   

    楼上的各位,我用了你们的方法好像都是当数据输入过多后给出提示,而数据能在继续往里输阿,我是想当数据输入大于限定格式后,dbgrid中的光标就不再往下移动了。请问这个怎么解决阿?
      

  16.   

    procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
    var 
    i:integer;
    len:integer;
    begin
    len:=7;
    for i:=0 to len do
     begin
    if not (key in ['0'..'9',#9,#8,#13]) then
      begin
        key:=#0;
        showmessage('请输入数字');
      end;
     end; 
      ...
    end;
      

  17.   

    pdbird(老巢) 说的很正确!
      

  18.   

    谢谢老巢,可我想在dbgrid中完成数据格式的限制,请问怎么限制呢?