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;