delphi TcxGrid自动计算
需求:
已知 申购数量 / 单重 = 支数,其中[支数]为自动计算列,且 [支数] 字段实际存在于数据库中
特殊情况:
当单重为0时,支数为0
当 1 > 支数 > 0时,支数=1
procedure TFraModleBase.TV申购清单EditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); var SGValue: Single; iPcs: Integer; begin //如果修改的列为数量与单重,则计算支数 if TV申购清单.Controller.FocusedColumn.Index in [colSG申购数量.Index, colSG单重.Index] then begin with dm.FD申购清单 do begin Post; //先把数据保存到数据库 SGValue := FieldByName('申购数量').AsSingle; 单重 := FieldByName('单重').AsSingle; if 单重 = 0 then iPcs := 0 else begin if FormatFloat('0', SGValue / 单重) = '0' then iPcs := 1 else iPcs := StrToInt(FormatFloat('0', SGValue / 单重)); end; //保存支数到数据库 Edit; FieldByName('支数').AsInteger := iPcs; Post; end;