表单上的cxGrid清除列关闭

时间:2013-10-18 08:44:00

标签: delphi devexpress delphi-xe4

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

但是,最后显示的前一列仍然可见(当我再次返回该表时)如何消除这些列的痕迹?当我回到表格时,我想要空格。

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

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;

删除所有列的痕迹,如果我想再次运行查询,那么这些列将不可用。

2 个答案:

答案 0 :(得分:3)

实现此目的的最简单方法是创建另一个cxgridlevel> cxGrid1dbtableview。然后只需在表单show:

上调用set this level
procedure TForm2.FormShow(Sender: TObject);
begin
cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView3;
end;

由于它被指定为空,因此网格显示为空。

答案 1 :(得分:2)

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