国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在BCB中使用VCL控件數組2

2019-11-17 05:28:59
字體:
來源:轉載
供稿:網友

  我的《BCB中使用VCL控件數組》中,提到了用TList來實現時無法釋放資源的問題,結果今天就得到了答案,鄔彥華等等網友都指教了TList實現的釋放方法,定義代碼同前文:

for (int i=1;i<=ButtonCount;i++)
{
TSpeedButton *spdBTn=new TSpeedButton(this);
spdBtn->Parent=ScrollBox;//指定父控件
spdBtn->Caption=IntToStr(i);
spdBtn->Width=80;
spdBtn->Height=80;
spdBtn->OnClick=ButtonClick;
spdBtn->Left=intLeft;
spdBtn->Top=intTop;
spdBtn->GroupIndex=1;
spdBtn->Flat=true;
intLeft=intLeft+80+intSpace;
if (i%LineCount==0)
{
intTop=intTop+80+intSpace;
intLeft=intSpace;
}
buttons->Add(spdBtn);//buttons是一個TList的指針
}
釋放資源的代碼如下:

int num = button->Count;
for(int i=0;i<num;i++)
{
delete (TSpeedButton *)button->Items[i];
}
其實說穿了就是刪除TList的每一項,不過因為TList->Items的類型是void *,在C/C++中,void *可匹配任何類型,所以只要加一個強制類型轉換(TSpeedButton *)就可以了,當然用(TObject *)等也是可以的,因為TObject是VCL中所有類的基類,而基類的指針是可以指向它的直接或間接子類的。

兩種方法的比較:我上次的方法可說是典型的C++解決方法,而這種方法可說是C++Builder的解決方法,用雙重指針比較靈活、高效,但大家都知道,多重指針可不那么好懂,想當初我曾用過4重指針(不要用那么目光看著我!),到后來我自已都糊涂了。而這次的方法比較好懂,并且能用TList類的方法,使用比較方便,但不如上一種高效,總的來說,兩種方法各有優劣,具體使用那一種,就看個人的喜好了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邮箱| 揭东县| 宁陕县| 涿鹿县| 塘沽区| 涿鹿县| 普兰县| 庐江县| 肃北| 齐齐哈尔市| 崇礼县| 西林县| 密云县| 固阳县| 杭锦后旗| 宝应县| 丹阳市| 垫江县| 咸丰县| 建德市| 平罗县| 云南省| 中西区| 九寨沟县| 腾冲县| 池州市| 徐汇区| 浦北县| 海晏县| 宁晋县| 吴江市| 平远县| 乡城县| 江口县| 平阴县| 定襄县| 海南省| 和田市| 五常市| 海宁市| 石首市|