具体问题
如何在 Borland C++ Builder 上创建一组按钮并使用它?
我正在使用 Borland C++ Builder 6 和 Borland Developer Studio 2006 (Turbo C++ 2006)。
目的
使用带有索引的 for 循环来处理表单上的许多按钮,例如,更改它们的标题、大小和位置。
我知道如果Button1
我创建了另一个按钮(通过TButton *Button2 = new TButton(Form1)
),我是否有一个名为的按钮,并且在该按钮的单击事件中,我可以分配Button1
给Button2
(Button2 = Button1
),我可以简单地修改Button1
with的标题Button2->Caption
。所以我想扩展它,将真实组件的指针分配给数组的元素,让它们通过for
循环与所有这些元素一起工作。
好吧,如果有人找到一种将所有按钮作为数组添加到表单上的方法,那就更好了:)
尝试
在 TForm1::Button1Click() 上进行了以下测试,这是表单上按钮的事件:
测试 1
- 说明:直接创建数组
代码:
TButton Buttons[3];
结果:编译错误:
> [C++ Error] Unit1.cpp(23): E2248 Cannot find default constructor > to initialize array element of type 'TButton'
- 注释:
- 我测试了这个测试的一些变体(例如
TButton Buttons = new TButton[3]
,使用calloc
函数和其他变体),但它们都指向TButton
没有没有参数的构造函数的问题,即TButton()
,,但只有TButton (TComponent *AOwner)
,TButton(void *ParentWindow)
和TButton(const TButton &)
; - 有什么方法可以将运算符
new
与构造函数原型的参数一起用于TButton
数组?
- 我测试了这个测试的一些变体(例如
测试 2
- 描述:创建向量
代码:还要添加
#include "vector.h"
单元标题...vector<TButton> Buttons; Buttons[0].Caption="it is ok"; Buttons[1].Caption="mayday, mayday";
结果:第 3 行的调试器异常:
> Project Project1.exe raised exception class EAccessViolation > with message 'Acceess violation at address 401075B9 in module > 'vcl60.bpl'. Read of address 00000254'. Proccess stopped. Use > Step or Run to continue.
- 注释:
- 是的,我预计它会被提出,但我把它放在这里给某人说如何在创建后为该向量上的更多元素分配内存,因为由于
vector<TButton> Buttons(3);
相同的原因 test1 失败:(
- 是的,我预计它会被提出,但我把它放在这里给某人说如何在创建后为该向量上的更多元素分配内存,因为由于
一般问题
如何为任何视觉组件做到这一点?