実行時に同一のリストを持つ多数のコンボボックスをフォームに入力したいと考えています。Sender
また、オブジェクトの名前に応じて動作する同じイベント ハンドラーも取得します。ただし、これにはかなり時間がかかり、何か間違ったことをしていると推測していました。
XE2 Rad Studio C++ Builder と VCL GUI を使用しています。
編集:これらのボックスにはさまざまな種類のコンテンツが含まれており、フォーム内のいくつかのタブページに分散されています。ただし、選択したものを一目で少なくとも 80 個表示する必要があります。TLabel をクリックして別の要素を選択するときに、それらを TLabels に置き換えて TCombobox を作成する方がよいでしょうか?
コードは次のようになります。
void __fastcall TForm::TForm(){
int i=0;
TStringList* targetlist = new TStringList();
targetlist->Add("Normal");
targetlist->Add("Inverted");
Vcl::Stdctrls::TComboBox **com = new Vcl::Stdctrls::TComboBox[512];
for(i=0;i<512;++i){
com[i]=new Vcl::Stdctrls::TComboBox(this);
com[i]->Parent=this;
com[i]->Name.printf(L"Combo_%d", i);
com[i]->SetBounds(10, 198 + 20 * i, 130, 200);
com[i]->Items = targetlist;
com[i]->ItemIndex = 0;
com[i]->Style = csDropDownList;
com[i]->OnChange = MyComboTriggerChange;
}
}
私のマシンでは、1回の反復に約20ミリ秒かかるようです( でテスト済みstd::clock
)。これにより、この部分は約10秒長くなります。ポインターは、フォームの破棄時に削除されます。簡単にするために、ここに宣言を入れただけです。
複数のコンボボックスを作成するより良い方法はありますか? 多分それらをクローンしますか?