手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

在BCB中使用VCL控件数组

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

昨晚和网友邬彦华在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数组的资源。

[1] [2] 下一页




文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS