在BCB中使用VCL控件数组2

2016-02-19 16:34 2 1 收藏

下面是个超简单的在BCB中使用VCL控件数组2教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  我的《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的指针
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  释放资源的代码如下:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  

int num = button-Count;
for(int i=0;inum;i++)
{
delete (TSpeedButton *)button-Items[i];
}

  其实说穿了就是删除TList的每一项,不过因为TList-Items的类型是void *,在C/C++中,void *可匹配任何类型,所以只要加一个强制类型转换(TSpeedButton *)就可以了,当然用(TObject *)等也是可以的,因为TObject是VCL中所有类的基类,而基类的指针是可以指向它的直接或间接子类的。

  两种方法的比较:我上次的方法可说是典型的C++解决方法,而这种方法可说是C++Builder的解决方法,用双重指针比较灵活、高效,但大家都知道,多重指针可不那么好懂,想当初我曾用过4重指针(不要用那么目光看着我!),到后来我自已都糊涂了。而这次的方法比较好懂,并且能用TList类的方法,使用比较方便,但不如上一种高效,总的来说,两种方法各有优劣,具体使用那一种,就看个人的喜好了。

来源:https://www.tulaoshi.com/n/20160219/1612450.html

延伸阅读
一、 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东西,例如内存泄漏、资源是否有释放等等,在使用了很多工具后,发觉 BCB5 本身自带的工具—— CodeGuard ,非常不错,使用也挺方便的,但是摸索了很久(以及翻查了一些资料,包括 HELP )才算是会用了。写这篇文章的目的希望有这方面的问题的朋友可以借鉴一下,大家互相学习,...
方法3 来自TApplication的方法 不用我多废话,大家都知道TApplication在BCB中的重要性。在BCB的帮助中指出:TApplication、TScreen和TForm构成了所有BCB风格的Win32 GUI程序的脊梁,他们控制着您程序的行为。TApplication类提供的属性和方法封装了标准Windows程序的行为。TApplication表现了在Windows操作系统中创建、运行、支持和销...
标签: ASP
      智岛网格控件作为数据的表示层,可以非常方便的进行货币样式、人民币大小写、中文大小写、各种逻辑样式、百分比样式、千分位分割等样式设置;可以冻结、锁定行列、对输入数据进行验证;可对字段设置公式,方便快捷地统计、汇总数据。智岛网格控件以其丰富多样的表现形式、简单易用的操作赢得了广大软件开发人员的一...
通过限制焦点验证控件数据 Validate事件和CausesValidation属性是在允许用户将焦点移开控件之前,串联使用以确认对控件的输入的。例如:假设有几个文本框和一个Help按钮的应用程序,当每个文本框接收焦点时,您想在文本框的特殊验证准则被满足之前阻止用户移动焦点;然而,您也想允许用户在任何时候都能单击Help按钮。要做到这点,...
VCL 中网格控件原理分析 lxpbuaa(桂枝香在故国晚秋)2004-9-15 去年还在成都的时候,因为同事工作需要,我研究了一下TDBGrid,最后有点收获,在TDBGrid中加入了固定列及相关一些(如固定列可得到焦点、可拖放、数据可修改等)功能。前几天,有人在我的Blog(http://blog.csdn.net/lxpbuaa)上开骂:“TMD,我还准备来看点技术文章,Delp...

经验教程

947

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部