zoukankan      html  css  js  c++  java
  • 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;
    

      

  • 相关阅读:
    pug模板引擎(原jade)之 分支条件
    pug模板引擎(原jade)之 属性
    hosts的作用
    typeScript 之 (7) 构造函数和this
    typeScript 之 (8) 继承,重写,super
    typeScript 之(6) 类的简介
    MySQL:一条更新语句是如何执行的
    Centos7 使用 Kubeadm 搭建 k8s 集群
    HTTP Keep-Alive模式客户端与服务器如何判定传输完成
    MySQL:一条SQL是如何执行的
  • 原文地址:https://www.cnblogs.com/sdlz/p/13713185.html
Copyright © 2011-2022 走看看