我的DBGRID现有3列有计算关系:A*B=C,我想在A或B内输入时自动计算显示C,在C输入时又能自动计算显示A
现在我在DataSet的字段A和C的onchange()中写了计算代码,但是会引起循环计算;
如果写在dataset的onbeforepost()中也不行,因为用户要求实时显示,不能最后计算。
如何实现好呢?
现在我在DataSet的字段A和C的onchange()中写了计算代码,但是会引起循环计算;
如果写在dataset的onbeforepost()中也不行,因为用户要求实时显示,不能最后计算。
如何实现好呢?
解决方案 »
- Delphi Services 里面Findwindow 问题
- 提示我不能在对象“Pub_Btype”中插入重复键
- 在无窗口程序中自定义消息
- 用delphi写个组件给dotnet用?...该什么弄...
- 急!!!!!从TMemoryStream.Read读取到的是乱码
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 因为毕业答辩 急需各位高手滴帮助 有谁愿意帮我完成一个关于超市销售商品的界面呢 拜托!偶是菜鸟 万分感
- 哪有好的SQL语言教程的电子版下载?
- 一段简单的代码,但是有问题
- 请教F1Book,如何交换两行的内容?(格式完全一样)
- adoquery.SQL问题
- 在DataSet的事件中处理错误合理吗?困惑中!
- 怎么计算是每个月的一号是星期几,然后在计算星期六日的方法
我的本意是不让循环的。即只要满足A*B=C,或者A=C/B即可。
循环是系统本身造成的,所以,只要加个限制条件,不让循环,即能满足我的需要。
babydog01:
具体如何操作呢?
dataset.FieldbyName('B').OnValidate := datasetAValidate;
dataset.FieldbyName('C').OnValidate := datasetCValidate;
在show的事件里面写名类似这样的代码。tb_datasetAValidate这是一个过程,在过程里面可以写C栏位的计算方式,但是在这个里面要先把dataset.FieldbyName('C').OnValidate := nil,最后再加上dataset.FieldbyName('C').OnValidate := datasetCValidate;
以免造成循环,在datasetCValidate里面就写A栏的计算方式,同样要把A的dataset.FieldbyName('A').OnValidate :=nil,最后再加上dataset.FieldbyName('A').OnValidate := datasetAValidate;
不知道我这样写你是否看得明白