在BCB中使用向量实现控件数组

  前几天在CSDN的BCB版有人问起这样的问题:“五个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环境中编译通过。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

aawolf

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值