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;

 

posted @ 2022-10-18 19:12  一曲轻扬  阅读(122)  评论(0编辑  收藏  举报