单价和数量输入完后,在数量单元格往任何方向移动(上下左右),金额都能自动计算。如何实现?
解决方案 »
- 关于多页面时IDHTTP的COOKIE处理的问题
- 谁能告诉我TThreadList的属性及用法。
- 快中秋节了,提前向各位坛友发送节日祝福,合家团圆!
- 用wise 制做安装程序的问题
- 用DBGRID如何实现量的添加啊,比如说,点“添加”后,在DBGRID中出行一空行,添加完一行后,出行下一行,最后统一保存,谢谢
- 请问动态创建子窗体的方法有哪几种?
- 在Delphi中怎样永久保存值到变量中?
- ADOTable如何在Post后再更新而不必Close再Open?
- 如何在PB中调用DELPHI的COM组件?急
- 关于程序自动运行的各种方法
- 可以使用任何字体的gvim for win32
- delphi自带的indy demo 无法正确下载邮件,大小总是-1,并且附件总是第一次打开的邮件的附件。
procedure CalcMoney(Sender: TField);
begin
if (DataSet.State in dsEditModes) and (not DataSet.FieldByName('Qty').IsNull) and (not DataSet.FieldByName('Price').IsNull)
then
DataSet.FieldByName('Money').AsCurrency := DataSet.FieldByName('Qty').AsFloat * DataSet.FieldByName('Price').AsCurrency;
end;然后在数据集的AfterOpen和BeforeClose事件中添加如下代码:
AfterOpen:
DataSet.FieldByName('Qty').OnChange := CalcMoney;
DataSet.FieldByName('Price').OnChange := CalcMoney;
BeforeClose;
DataSet.FieldByName('Qty').OnChange := Nil;
DataSet.FieldByName('Price').OnChange := Nil;
begin
if (Sender.DataSet.State in dsEditModes) and (not Sender.DataSet.FieldByName('Counts').IsNull)
and (not Sender.DataSet.FieldByName('Price').IsNull)
then
Sender.DataSet.FieldByName('Money').AsCurrency := Sender.DataSet.FieldByName('Counts').AsFloat * Sender.DataSet.FieldByName('Price').AsCurrency;
end;改成这个之后,编译时提示:
E2009 Incompatible types:'method pointer and regular procedure'
begin
if (Sender.DataSet.FieldByName('Counts').IsNull) then
Sender.DataSet.FieldByName('Counts').AsFloat := 0;
if (Sender.DataSet.FieldByName('Price').IsNull) then
Sender.DataSet.FieldByName('Price').AsCurrency := 0;
if (Sender.DataSet.State in dsEditModes) and (not Sender.DataSet.FieldByName('Counts').IsNull)
and (not Sender.DataSet.FieldByName('Price').IsNull)
then
Sender.DataSet.FieldByName('Money').AsCurrency := Sender.DataSet.FieldByName('Counts').AsFloat * Sender.DataSet.FieldByName('Price').AsCurrency;
end;我试了,这样可以实现。