主题:请教一下有关控件对象数组!~
opgg
[专家分:0] 发布于 2005-08-13 23:54:00
[color=0000FF]
请问一下各位:
在cb下,如果FORM 上有相同的几个Edit及其它控件等, 怎样把这几个相同的Edit组成一个对象数组,可以同时地
对它们进行操作? 比如,用一个for()循环对这几个Edit的Txet赋值。谢谢![/color]
回复列表 (共1个回复)
沙发
rudolf [专家分:440] 发布于 2005-08-15 08:24:00
BCB没有控件数组
你放狗搜一下吧
看下这篇文章,希望对你有帮助。
http://www.evget.com/articles/evget_52.html
前几天有人问起这样的问题:“五个Button的OnClick事件对应改变五个Label的名称”,因为BCB没有控件数组,所以当时大家的回答大都是基于RTTI的,昨天在看《C++ Primer》的时候,忽然想起了标准库中的vector类型,我们用这个类型也可以实现控件数组。
今天试了一下,我把实验的过程写在这里。首先要包含头文件并,设置名字空间,声明变量。在MainForm.h中:
#include<vector>
using namespace std //标准库的名字空间
在Form1的public中声明 vector<TLabel *> test;
注意,这里我曾想用vector<TLabel*> test(5)的形式来初始化该数组,但BCB好象不支持这种形式,这方面的问题还有待解决。
然后在主窗体上加两个Button和一个Label(命名为testLabel),在Button1的事件中,初始化这个数组。
for(int i=0;i<5;i++)
{
TLabel * Label=new TLabel(this);
Label->Parent=Form1;
Label->Top=20*i;
test.push_back(Label);
}
test.push_back(testLabel);//测试数组是否可以包含静态生成的控件。这时的数组应该是包含6个成员变量。
在Button2中写入如下代码:
for(int i=0;i<test.size();i++)
{
test[i]->Caption="wolf"+AnsiString(i):
}
该例子通过对一个数组循环赋值来产生一个控件数组,并通过循环来操作这个数组。这里展示的仅仅是vector数据类型很粗浅的一种用法,C++的STL技术可以给我们的编程带来更大的自由和弹性。
以上代码在Win2000和BCB5环境中编译通过。
我来回复