Delphi CxGrid 怎么删除1级表头

weimei521 2018-12-03 05:20:53


//清空
cxgInvoiceTableView.BeginUpdate();
for I := cxgInvoiceTableView.ItemCount - 1 downto 0 do
begin
if cxgInvoiceTableView.Items[I].Caption <> '选择' then
cxgInvoiceTableView.Items[I].Free;
end;
cxgInvoiceTableView.EndUpdate;
//重新创建
CreateGridColumn;

因为我加了checkbox ,所以不对这一列清空,但是现在清空后会变成这样,一级表头未清空

这个需要怎么处理?
...全文
341 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weimei521 2018-12-13
  • 打赏
  • 举报
回复
引用 1 楼 wdonghai 的回复:

虽然已经解决了,但还是谢谢你,结贴了
wdonghai 2018-12-04
  • 打赏
  • 举报
回复

...

procedure DelColumns(ATV:TObject;AUnDelColumnCaption:string);
var
i,iBandindex,iColindex:integer;
btv:TcxGridBandedTableView;
dbtv:TcxGridDBBandedTableView;
begin
if ATV is TcxGridBandedTableView then
begin
btv:=TcxGridBandedTableView(ATV);
iColIndex:=-1;
iBandIndex:=-1;
for i:=0 to btv.ItemCount-1 do
if btv.Items[i].Caption=AUnDelColumnCaption then
begin
iColIndex:=i;
iBandIndex:=TcxGridBandedColumn(btv.Items[i]).Position.BandIndex;
break;
end;

for i:=btv.ItemCount-1 downto 0 do
if i<>iColIndex then btv.Items[i].Free;
for i:=btv.Bands.Count-1 downto 0 do
if i<>iBandIndex then btv.Bands[i].Destroy;
end
else if ATV is TcxGridDBBandedTableView then
begin
dbtv:=TcxGridDBBandedTableView(ATV);
iColIndex:=-1;
iBandIndex:=-1;
for i:=0 to btv.ItemCount-1 do
if dbtv.Items[i].Caption=AUnDelColumnCaption then
begin
iColIndex:=i;
iBandIndex:=TcxGridDBBandedColumn(dbtv.Items[i]).Position.BandIndex;
break;
end;

for i:=dbtv.ItemCount-1 downto 0 do
if i<>iColIndex then dbtv.Items[i].Free;
for i:=dbtv.Bands.Count-1 downto 0 do
if i<>iBandIndex then dbtv.Bands[i].Destroy;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
DelColumns(cxgInvoiceTableView,'选择');
showmessage(inttostr(cxgInvoiceTableView.ItemCount));
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧