如题,cxgrid 绑定一个数据集 (ADOQuery 对应 DataSource),其中 数量,单价两列是可编辑的,金额不可编辑,当数量或单价的单元格值变掉后,金额的单元格值也要跟着变化。  有知道的大虾请帮忙解答,谢谢!

解决方案 »

  1.   

    //选中列, Properties-> onEditValueChanged事件
    procedure TForm11.cxgrdclmncxgrdtblvwcxgrd1TableView1Column1PropertiesEditValueChanged(
      Sender: TObject);
    var
      quantity, price : Currency;
    begin
      //提交数据
      cxgrdtblvw.DataController.Post();  //获取数量  cxgrdclmn_quantity是数量列名称
      quantity := cxgrdtblvw.DataController
        .Values[cxgrdtblvw.Controller.FocusedRecordIndex, cxgrdclmn_quantity.Index];
      //获取单价  cxgrdclmn_price是单价列名称
      price := cxgrdtblvw.DataController
        .Values[cxgrdtblvw.Controller.FocusedRecordIndex, cxgrdclmn_price.Index];  //获取单价  cxgrdclmn_total是金额列名称
      cxgrdtblvw.DataController
        .Values[cxgrdtblvw.Controller.FocusedRecordIndex, cxgrdclmn_total.Index] :=
        price * quantity;
    end;
      

  2.   

    dbtable, 如果是用ADOQuery, 就在adoquery中设置计算字段, 然后将计算字段绑定到column上1楼的方法是针对Table的