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

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

在BCB中使用VCL控件數組1

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

  昨晚和網友鄔彥華在OICQ上閑聊,他言及正在為朋友編一個游戲菜單,其中動態創建了一組按紐,最后卻無法釋放。他的實現方法如下:

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的指針
}
最后用TList的Clear()方法無法釋放內存,

其實Clear()方法只是把List清空,要刪除還是得用delete,但是delete運算符必須要有刪除的指針,可這種實現方法無法得到指針!所以我就放棄了這種思路,忽然,電光一閃(不是要打雷了,而是我想出辦法來了),能不能用數組呢?說干就干!數組的分配?我想想,對!

TSpeedButton *Buttons[]=new TSpeedButton[4](this);
可是編譯器告訴我:ERROR!

TSpeedButton *Buttons[]=new TSpeedButton(this)[4]
還是錯!最后我利令智昏,把java的分配方式都拿出來了:


TSpeedButton []*Buttons=new TSpeedButton[](this)

結果么?不用說也知道!難道沒辦法了嗎?我想起了簡單類型的指針數組int x[]={1,2,3};于是就試

TSpeedButton *Buttons[]={new TSpeedButton(this),new TSpeedButton(this),new TSpeedButton(this)};
居然可以了!我正想自得的笑,忽然發現:假如要定義100個按鈕怎么辦……打那么一串重復的字誰受得了?就算是用COPY/PARST也難免要數錯,究竟100次啊。難道就沒法子了?經過苦思冥想,又想起了一個辦法,一步一步的來怎么樣?

TSpeedButton **button=new TButton*[100];
for(int i=0;i<100;i++)button[i]=new TSpeedButton(this);

哈哈!居然OK!再試試釋放:

for(int i=0;i<4;i++)delete x[i];
delete[]x;

哈哈!居然還是OK!于是我就寫了一例子:在一個窗口上放兩按紐,單擊可以顯示或關閉動態生成的按鈕。


首先聲明一個全局變量TButton **x;
然后在Button1的onClick中加入生成代碼:


x=new TButton*[4];
for(int i=0;i<4;i++)
{
x[i]=new TButton(this);
x[i]->Left=100;
x[i]->Top=10+i*30;
x[i]->Width=90;
x[i]->Height=25;
x[i]->Parent=this;
x[i]->Caption="按紐"+AnsiString(i);
}

單擊它就可以生成并顯示4個按鈕,然后在Button2加入釋放代碼:


for(int i=0;i<4;i++)delete x[i];
delete[]x;

運行一試,OK!大功告成!

所以,使用VCL數組的過程是:首先聲明一個二重指針,然后分配所要VCL組件的個數,最后再對每個VCL元件進行分配;在釋放的時侯,要釋放每個VCL元件的資源,最后才回收VCL數組的資源。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华亭县| 黄龙县| 芜湖市| 石嘴山市| 鹰潭市| 黔东| 芒康县| 武陟县| 搜索| 屯门区| 集贤县| 锡林郭勒盟| 会同县| 隆德县| 汕头市| 正阳县| 会泽县| 陇西县| 洛浦县| 宁陵县| 陆良县| 酒泉市| 唐海县| 呼和浩特市| 赤城县| 东莞市| 吉木萨尔县| 沙湾县| 东海县| 绥宁县| 扎囊县| 南丹县| 天津市| 巨鹿县| 阿勒泰市| 宜春市| 泌阳县| 洪雅县| 昌邑市| 喜德县| 城固县|