0

我有一个网格,用于显示几个查询结果(cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView1; 等等...)。在表单关闭时,我也会关闭查询。

但是,最后显示的前列仍然可见(当我再次返回该表单时)我怎样才能消除这些列的痕迹呢?当我返回表格时,我想要空网格。

编辑:这是我运行的查询:

procedure TForm2.cxRadioGroup1Click(Sender: TObject);
begin
case cxRadioGroup1.ItemIndex of
0: begin
   with Form1.UniQuery3 do begin
   Close;
   sql.Clear;
   sql.Add('select * from program_log');
   Open;
   cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView1;

end;
end;
1: begin
  with Form1.UniQuery4 do begin
   Close;
   sql.Clear;
   sql.Add('select * from guests_log');
   Open;
   cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView2;
end;
end;
end;
end;

打电话

cxGrid1DBTableView1.ClearItems;

如果我想再次运行查询,则删除所有不可用的列痕迹。

4

2 回答 2

3

最简单的方法是创建另一个 cxgridlevel > cxGrid1dbtableview。然后只需在表单显示上调用设置此级别:

procedure TForm2.FormShow(Sender: TObject);
begin
cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView3;
end;

由于它没有被分配,所以网格将显示为空。

于 2013-10-18T09:44:00.937 回答
2

调用cxGrid1DBTableView1.ClearItems将删除所有列。只需在您的 FormClose 事件处理程序中调用它。要重新创建列,请调用cxGrid1DBTableView1.DataController.CreateAllItems函数。

于 2013-10-18T08:50:34.180 回答