Delphi7,在DBGrid里,不要按回车,修改了数量或单价后金额自动计算,每按下一个数字后金额立即显示出来(200)

  • 主题发起人 主题发起人 xhqing
  • 开始时间 开始时间
X

xhqing

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi7,在DBGrid里,不要按回车,修改了数量或单价后金额自动计算,每按下一个数字后金额立即显示出来dbgrid中有三列:数量、单价、金额,请问dbgrid能否实现这样的功能,[red]不按回车键[/red],修改了数量或单价后金额自动计算我在哪个按键事件里,都不管用。在DBGrid1KeyPress提交保存,在 ADOQuery1BeforePost 计算。能算出金额,但是要按回车,但我想不要按回车能立即算出并显示,因为是别人用的一个程序,有时忘了按回车呢?用计算字段也要按回车或移动到别的一列。procedure TForm_XiaoShouDan.DBGrid1KeyPress(Sender: TObject; var Key: Char);begin if (ADOQuery1.Modified = true) then begin if (dbgrid1.SelectedField.FieldName = 'SalePrice') or (dbgrid1.SelectedField.FieldName = 'ShuLiang') then begin try AdoQuery1.Edit; AdoQuery1.Post; except AdoQuery1.Cancel; end; end; end;end;procedure TForm_XiaoShouDan.ADOQuery1BeforePost(DataSet: TDataSet);begin try if (AdoQuery1['SalePrice'] <> null) and (AdoQuery1['ShuLiang'] <> null) then AdoQuery1['ZongJia'] := FormatFloat('0.##',myRound(AdoQuery1['SalePrice'] * AdoQuery1['ShuLiang'])) //then AdoQuery1['ZongJia'] := myRound(AdoQuery1['SalePrice'] * AdoQuery1['ShuLiang']) else AdoQuery1['ZongJia'] := null; except end; end;做到这一点,对我来说,很重要,因为要求金额、收现金要有默认值(实际操作时才快得到),而提交保存前又要能修改默认值,因为有时现金可能要欠1元或2元,如果每按下一个数字后金额立即显示出来,我就不必在保存前重新计算。现在我是在保存前重新计算默认值,这又变得不能修改默认值,如不重新计算再保存,又会使得默认值与数量不对应。敬请大家帮忙,十分感谢!
 
在DBGrid的onkeypress里做点文章即可
 
请skyccf说具体些,详细些,我试过很多方法,都不能实现。问题变得实际上是,读取DBGrid正在编辑的单元格的内容,即还没退出编辑状态,就要取出单元格的内容。
 
昏天黑地是onvalide 事件中写!
 
实现复杂交互界面的,不能用DB控件。
 
使用自定义字段吧!我以前用过,很好,时间很长了,具体代码忘了!
 
在谁的onvalide 事件中写? 哪个组件的onvalide 事件?
 
建议你用tms,这个怎么操作都行。
 
要不先定义个过程或函数,只要cell有改动,就自动调用。
 
可以滴,利用dbgrid的父类属性,可以立刻抓到输入的内容,在很早以前做医院mis的时候,就做跟踪帮助,就是客户每打一个字符,相应的药品就要弹出来就是这样做的。快给分
 
请psynet123能不能写出具体代码?
 
帮顶下。
 
有没人知道啊?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
542
import
I
后退
顶部