首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么销毁动态生成的控件

2012-03-24 
如何销毁动态生成的控件有一个 combobox,作为 控件的容器用 下边的代码生成很多labelC/C++ code for(int j

如何销毁动态生成的控件
有一个 combobox,作为 控件的容器
  用 下边的代码生成很多label

C/C++ code
 for(int j=0;j<MaxNum;j++)                {                     TLabel *tl = new TLabel(Application);                     tl->Left = i*100+100;                     tl->Top = j*70+50;                     tl->Caption = "测试label";                     tl->AutoSize = true;                     tl->Enabled = true;                     tl->Parent = gbox1;                     labelNum++;                }


请问大侠,我如何能销毁(或删除)这些控件??

下边的代码执行时出错:
 
C/C++ code
for(int j=0;j<gbox1->ControlCount;j++)               {                     if(gbox1->Controls[j]->ClassType() == __classid(TLabel))                     {                            gbox1->Controls[j]->Parent = NULL;                            gbox1->Controls[j]->Visible = false;                            free(gbox1->Controls[j]);                     }               }


[解决办法]
new出来的对象,可以用delete销毁。

如果创建一个VCL对象时指定了一个有效的Owner,可以不考虑手工释放。Owner会负责的。
[解决办法]
那就用循环删除呗;
C/C++ code
for(int j=0;j<gbox1->ControlCount;j++)               {                    delete gbox1->Controls[j];               }
[解决办法]
动态创建了多少个,就用多少个delete来释放,这有什么不解呢?

热点排行