特定の質問
Borland C ++ Builderでボタンの配列を作成し、それを操作するにはどうすればよいですか?
Borland C ++Builder6とBorlandDeveloperStudio 2006(Turbo C ++ 2006)を使用しています。
目的
たとえば、キャプション、サイズ、位置を変更するなど、インデックス付きのforループを使用するだけで、フォーム上の多数のボタンを操作できます。
呼び出されたボタンがあるかどうかを知っていますButton1
。このボタンのクリックイベント内で別のボタンを作成すると(から)、 ( )TButton *Button2 = new TButton(Form1)
に割り当てることができButton1
、それらのキャプションをで変更するだけです。だから私はそれを拡張したいと思います。実際のコンポーネントのポインタを配列の要素に割り当てて、それらすべてをループで動作させます。Button2
Button2 = Button1
Button1
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が失敗したので、作成後にそのベクトル上のより多くの要素にメモリを割り当てる方法を誰かに言いました:(
一般的な質問
ビジュアルコンポーネントに対してどのようにそれを行うのですか?