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元,如果每按下一个数字后金额立即显示出来,我就不必在保存前重新计算。现在我是在保存前重新计算默认值,这又变得不能修改默认值,如不重新计算再保存,又会使得默认值与数量不对应。敬请大家帮忙,十分感谢!