我用了3个dbedit组件 同adotable, datasource联接数据库  
   dbedit1对应的字段是‘数量’字段  dbedit2对应的字段是‘单价‘字段
   dbedit3对应的字段是‘合计’字段  现在要实现如下功能:
  在form上可以修改这dbedit1、dbedit2个字段的值,dbedit3同步显示合计值
   要求:dbedit1,dbeidt2输入的必须是数字(表中为float),并且不能为空
   dbedit3的enabled属性为false,如果dbedit1变动则dbedit3同步变动,dbedit2变动,dbedit3也同步变动,请问如何实现阿?我是这样做的?
  dbedit3:=floattostr(strtofloat(dbedit1.text)*strtofloat(dbedit2.text));
  可是一运行,就报错:''' is not a valid floating point value另一种情况:
  请问如何控制dbedit中输入的是数字,比且不能为空,
  我在dbedit1的onchange中写的:if dbedit1.text='' then showmessage('数量不能为空!')
  再编译,则不报错啦,可是还没出现主窗口,就蹦出‘数量不能为空!’的对话框!!
哎,我快疯啦,请大虾指点,谢谢!!!!!!!!!!

解决方案 »

  1.   

    dbedit3:=floattostr(strtofloat(trim(dbedit1.text))*strtofloat(trim(dbedit2.text)));还有,你的dbedit1.text和dbedit2.text是不能为空的
      

  2.   

    //将dbedit1及dbedit2的Exit事件定义为如下,即可
    procedure TForm1.DBEdit1Exit(Sender: TObject);
    begin
      if TDBEdit(Sender).Text = '' then
      begin
        MessageDlg('您所编辑的字段不能为空',
          mtInformation, [mbOk], 0);
        Abort;
      end;
      DBEdit3.Text := FloatToStr(StrToFloatDef(DBEdit1.Text, 0) *
                                 StrToFloatDef(DBEdit2.Text, 0));
    end;
      

  3.   

    如果再在Abort的前面加上一句
    TDBEdit(Sender).SetFocus;
    就更完美了
      

  4.   

    还是不行啊 这次又出现新的错误提示并且   我按你说的方法再exit中添加代码后无法实现同步更新阿,变动dbedit1或者dbedit2的值   dbedit3没有变化阿!!!!
      

  5.   

    好的问题解决拉!!!谢谢  duanhai(段海)!!!!!!怎么给你分数阿?
      

  6.   

    实现这个你最好还是用edit别用dbedit