bcb定义数组:在BCB中使用VCL控件数组2



BCB中使用VCLControl控件提到了用TList来实现时无法释放资源问题结果今天就得到了答案邬彦华等等网友都指教了TList实现释放思路方法定义代码同前文:

for ( i=1;i<=ButtonCount;i)
{
TSpeedButton *spdBtn= TSpeedButton(this);
spdBtn->Parent=ScrollBox;//指定父Control控件
spdBtn->Caption=IntToStr(i);
spdBtn->Width=80;
spdBtn->Height=80;
spdBtn->OnClick=ButtonClick;
spdBtn->Left=Left;
spdBtn->Top=Top;
spdBtn->GroupIndex=1;
spdBtn->Flat=true;
Left=Left+80+Space;
(i%LineCount0)
{
Top=Top+80+Space;
Left=Space;
}
buttons->Add(spdBtn);//buttons是个TList指针
}
释放资源代码如下:

num = button->Count;
for( i=0;i<num;i)
{
delete (TSpeedButton *)button->Items[i];
}
其实说穿了就是删除TList不过TList->Items类型是void *在C/Cvoid *可匹配任何类型所以只要加个强制类型转换(TSpeedButton *)就可以了当然用(TObject *)等也是可以TObject是VCL中所有类基类而基类指针是可以指向它直接或间接子类

两种思路方法比较:我上次思路方法可说是典型C解决思路方法而这种思路方法可说是CBuilder解决思路方法用双重指针比较灵活、高效但大家都知道多重指针可不那么好懂想当初我曾用过4重指针(不要用那么目光看着我!)到后来我自已都糊涂了而这次思路方法比较好懂并且能用TList类思路方法使用比较方便但不如上种高效来说两种思路方法各有优劣具体使用那就看个人喜好了
Tags:  vb.net控件数组 vb控件数组 控件数组 bcb定义数组

延伸阅读

最新评论

发表评论