• Delphi Cxgrid中修改一个单元格,影响另一个单元格的值的实现方法


    第一种方法就是使用表格中列的PropertiesValidate方法实现,例如修改单据的数量列,希望重新计算当前行的金额列

    //编辑数量时发生
    
    procedure TfrmSkdLr.cxgrdbclmnTV_SlPropertiesValidate(Sender: TObject;
      var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
    var
      fValue: Double;
    begin
      try
        fValue := DisplayValue;
        msqry_Mx.Edit;
        msqry_Mx.FieldByName('Jk_Sl').AsFloat := MyRound(fValue, Sys_Slxsw);
        CalculateRecord(1);  //行重新计算的方法
        msqry_Mx.Post;
      except
        DisplayValue := msqry_Mx.FieldByName('Jk_Sl').AsFloat;
      end;
    end;
    

      

    第二种方法是使用TableView的EditValueChanged方法实现,比如修改应出勤天数 或者 实际出勤天数 信息后重新计算薪资金额

    procedure Tfrm_Xscqwh.cxTV2EditValueChanged(Sender: TcxCustomGridTableView;
      AItem: TcxCustomGridTableItem);
    var
      sItemName, sFieldName: string;
    begin
      sItemName := AItem.Name; //取得正在编辑列的名称
      if (sItemName = 'cxgrdbclmn_Ycq') or (sItemName = 'cxgrdbclmn_Sjcq') then //判断是否编辑了需要重新计算的列
      begin
        sFieldName := TcxGridDBColumn(AItem).DataBinding.FieldName; //取得正在编辑列绑定的数据字段名称
        //将正在编辑单元格的值EditingValue写到数据集对应字段中
        msqry_Mx.Edit;
        msqry_Mx.FieldByName(sFieldName).Value := cxTV2.Controller.EditingController.Edit.EditingValue;
        RecalculMoney; //调用行重新计算本行其他列值的方法
      end;
    end;
    

      

  • 相关阅读:
    TortoiseGit 的下载与安装
    CountDownLatch在多线程程序中的应用
    IDEA中maven的依赖jar包报红
    监控中的TP50
    BeanUtils.copyProperties方法,当属性Date为null解决
    SimpleDateFormat的安全问题解决方法
    java修饰符用法
    java实现快速排序
    京东2016实习生编程题—生日礼物
    美图笔试算法题(两个人拿石头判断输赢)
  • 原文地址:https://www.cnblogs.com/sdlz/p/13713185.html
Copyright © 2020-2023  润新知