我有一个用于显示少量查询结果的网格(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;
删除所有列的痕迹,如果我想再次运行查询,那么这些列将不可用。
答案 0 :(得分:3)
实现此目的的最简单方法是创建另一个cxgridlevel> cxGrid1dbtableview。然后只需在表单show:
上调用set this levelprocedure TForm2.FormShow(Sender: TObject);
begin
cxGrid1.ActiveLevel.GridView := cxGrid1DBTableView3;
end;
由于它被指定为空,因此网格显示为空。
答案 1 :(得分:2)
调用 cxGrid1DBTableView1.ClearItems 将删除所有列。只需在FormClose事件处理程序中调用它。要重新创建列,请调用 cxGrid1DBTableView1.DataController.CreateAllItems 函数。