【发布时间】:2014-03-22 08:50:51
【问题描述】:
我隐藏了一个字段,以便在显示时(选中复选框)执行特定计算。
procedure TForm1.cxCheckBox1Click(Sender: TObject);
var
C:TcxGridDBColumn;
begin
if ABSTable1.FieldByName('CENIK_IME').AsString = 'PAK' then begin
C := cxGrid2dbtableview1.GetColumnByFieldName('TT');
if Assigned(C) then C.Visible := not C.Visible;
ABSQuery2.Edit;
ABSQuery2.FieldByName('TOTAL').AsCurrency := (ABSQuery2.FieldByName('TOTAL').AsCurrency) + (ABSQuery2.FieldByName('TT').AsCurrency);
ABSQuery2.Refresh;
end;
end;
问题是每次我选中或取消选中复选框时,我的 TOTAL 都会变得越来越大。有什么方法可以防止复选框每次被选中或取消选中时求和?
我在查询的计算字段上也有这个;
procedure TForm1.ABSQuery2CalcFields(DataSet: TDataSet);
begin
ABSQuery2.FieldByName('TT').Value:= (ABSQuery2.FieldByName('DAYS').AsCurrency) * 1.01 ;
end;
这一切都是在临时表上完成的,该表仅用于这种场合。内容一直被删除....
【问题讨论】:
-
保留一个表明您是否已将 TT 添加到 TOTAL 的字段。
-
隐藏/取消隐藏列与事物有什么关系? (是什么决定了该列是否应该可见/不可见?)我也不确定 OnCalcFields 中代码的意图 -
Days将如何仅仅因为复选框被选中/取消选中而改变?
标签: delphi