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;
    

      

  • 相关阅读:
    更新数据库时日期字段为空显示为190011
    VB6封装DLL
    【转】Excel技巧收集
    数据透视表的计算字段
    站点地图与权限:Sitemap and Role
    asp:Menu导航菜单CSS
    单元格太窄的#号
    获得数据库中某个字段值
    第5周作业——如何在eclipse上配置tomcat harara
    第7周作业耦合性 harara
  • 原文地址:https://www.cnblogs.com/sdlz/p/13713185.html
Copyright © 2011-2022 走看看