0

在 cxGrid 中显示或隐藏已实现页脚 (SUM) 的列(在代码中)时,它不会刷新其值。

如何刷新代码中的页脚?

使用这个:

procedure TForm1.cxGrid2DBTableView1CustomDrawFooterCell(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
begin
cxgrid2DBTableView1.DataController.Summary.Recalculate;
end;

...使表单上的所有其他 devexpress 组件无法正确重绘。看不到任何东西....

编辑:要显示或隐藏我使用的网格中的字段:

    procedure TForm1.cxCheckBox1Click(Sender: TObject);
    var
    C:TcxGridDBColumn;
    begin
    C := cxGrid1DBTableView1.GetColumnByFieldName('PP');
    if Assigned(C) then C.Visible := not C.Visible;
    begin
          absquery2.Edit;
          absquery2.FieldByName('PP').AsCurrency := 15 * ABSQuery2.FieldByName('days').asInteger;
          if C.Visible then  begin
          ABSQuery2.FieldByName('total').asCurrency := (ABSQuery2.FieldByName('total').AsCurrency) + (ABSQuery2.FieldByName('PP').AsCurrency) ;
          end else begin
          ABSQuery2.FieldByName('total').asCurrency := (ABSQuery2.FieldByName('total').AsCurrency) - (ABSQuery2.FieldByName('PP').AsCurrency);
          ABSQuery2.Post;
          ABSQuery2.Refresh;
          end;

end;
end;

在计算查询的字段时,我有:

procedure TForm1.ABSQuery2CalcFields(DataSet: TDataSet);
begin
case cxradiogroup1.ItemIndex of
0: begin
absquery2.FieldByName('tt').value := 1.30;
if (absquery2.FieldByName('room_type').asstring = 'SGL') then begin
absquery2.FieldByName('TTS').value := absquery2.FieldByName('days').value * 1.30;
absquery2.FieldByName('OSEB').value :='1';
end else begin
absquery2.FieldByName('TTS').value := (absquery2.FieldByName('days').value) * (absquery2.FieldByName('tt').value * 2);
absquery2.FieldByName('OSEB').value :='2';
end;
absquery2.FieldByName('total').value := absquery2.FieldByName('days').value * absquery2.FieldByName('rate_price').value + absquery2.FieldByName('TTS').value;
absquery2.FieldByName('POND').value := absquery2.FieldByName('RATE_PRICE').value / absquery2.FieldByName('OSEB').value;
end;
.....

这一切似乎都在工作,除了不接受网格总值变化的页脚。在我看来,网格页脚只接受 oncalculate fields 事件而不显示或隐藏该字段。我怎样才能使这项工作?

4

0 回答 0