在相应的TField的OnSetText中写校验函数。有错误的引发例外。

解决方案 »

  1.   

    这是我昨天写的
    procedure TGS_Main_Form.DBGrid4ColExit(Sender: TObject);
    begin
        if DBGrid4.selectedindex=3 then
        begin
          if DBGrid4.Fields[3].Text<>'' then
          begin
            if Application.messagebox(Pchar('是否自动按:'+#13+#10+'(出资比例=出资额/注册资金)'+#13+#10+'计算出资比例?'),'自动填充',MB_YESNO+MB_ICONINFORMATION)=6 then
            begin
              showmessage(DBGrid4.Fields[3].Text);
              if not (GS_DBAction_form.TmpAQ.state in [dsinsert,dsedit]) then
                GS_DBAction_form.Tmpaq.edit;
              DBGrid4.Fields[4].Text:=floattoStr(Strtofloat(Trim(DBGrid4.Fields[3].Text))/Strtofloat(Trim(Edit11.Text))*100)+'%';
            end;
          end;
        end;
    end;
    ---------
    DBGrid4.selectedindex可求出选中的列,然后写在onexit事件中
      

  2.   

    用ColExit时有漏洞,如果采用上下箭头移动记录,不会触发这个事件。
      

  3.   

    对啊,ColExit时此列没有失去焦点!!
      

  4.   

    在TField 的 onValide 里面写检验可靠
      

  5.   

    在相应的TField的OnSetText中写校验函数。有错误的引发例外。 
      

  6.   

    同意flysky66(蓝色的天) 
    例如
    procedure TForm_DM.ADODPatient_AgeValidate(Sender: TField);
    begin
      if ADODPatient_Age.Value > 200 then
        raise Exception.Create('年龄不应该这么大。');
    end;