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;
    

      

  • 相关阅读:
    Javascript 匿名函数与闭包
    Javascript 闭包的理解
    Javascript 函数及其执行环境和作用域
    JAVA generic array 泛型数组
    在Ubuntu 13.10 中安装配置 Hadoop 2.2.0
    Java 中文字符判断 中文标点符号判断
    当程序以Windows Services形式启动时当前路径不对
    .NET中Dictionary<TKey, TValue>浅析
    [趣文]单词间那无尽的等待
    DNS拾遗(二)
  • 原文地址:https://www.cnblogs.com/sdlz/p/13713185.html
Copyright © 2011-2022 走看看