cxGrid 在 UnBound 模式下建立计算列(原创)

UnBound 模式是指不绑定数据集的表,可以直接向表中读写数据,需要手工向 view 中添加列。首先,要正确设置每列的 ValueType 和 PropertyType,这两个属性分别决定了该列的数据储存类别和编辑方式。

假设表中已经建立了三列:clPrice(单价),clNumber(数量),clTotal(总价),

procedure TfrmAddOrder.Calc(Sender: TObject);
var
  x1, x2: Variant;
begin
  // 关键,clPrice, clNumber 两列的编辑类别都是 CalcEdit
  TcxCalcEdit(Sender).PostEditValue;

  x1 := clPrice.EditValue;
  x2 := clNumber.EditValue;
  if VarIsNull(x1) or VarIsNull(x2) then exit;
  clTotal.EditValue := x1 * x2;
  // 备用的设置 "总价" 列的方法,需要使用行号、列号来调用
  //cvAddOrder.DataController.Values[0, clTotal.Index] := x1 * x2;
end;

procedure TfrmAddOrder.clNumberPropertiesEditValueChanged(Sender: TObject);
begin
  calc(Sender);
end;

procedure TfrmAddOrder.clPricePropertiesEditValueChanged(Sender: TObject);
begin
  calc(Sender);
end;
posted @ 2024-07-31 08:32  汉学  阅读(7)  评论(0)    收藏  举报