Nadmienię na początku, że chodzi o szczęsne/nieszczęsne C++/CLI
Do rzeczy. Żeby stworzyć dynamiczną kontrolkę na nowym oknie w tymże środowisku należy wykonać mniej więcej takie przypisanie (przykład dla Labela w nowym oknie):
Form^ forma = gcnew Form;
Label^ moj_Label = gcnew Label;
moj_Label->Text = "moja etykieta";
moj_Label->Location = Point(50, 50);
forma->Controls->Add(moj_Label);
forma->Show();
Problem (przynajmniej dla mnie) zaczyna się gdy chce mieć takich kontrolek dużo więcej, powiedzmy dwadzieścia Na przykład, żeby uzyskać taki efekt: (20 labeli ponumerowanych w pionie)
for (int i = 0; i < 20; i++)
{
etykieta[i]->Text = "Etykieta nr - " + (i + 1).ToString();
etykieta[i]->Location = Point(10, i + 1 * 5);
forma->Controls->Add(etykieta[i]);
}
Stanęłem w miejscu w momencie deklaracji tablicy takich labeli, każda znana mi próba przynosi błąd. Dla tego dziwnego środowiska deklarowanie tablica opiera się o typ - array i wyglądało by to mniej więcej tak:
array<System::Label^> etykieta = gcnew array<System::LabeL>(20);
To niestety nie działa, taka konstrukcja jest przeznaczona dla różnych zmiennych, a nie dla kontrolek; Próbowałem naturalnie innych przypisań tablicowych (statycznych i dynamicznych) takich jak znane z C/C++:
Label^ etykiety[20];
Label etykiety[20];
Label* etykiety;
Label*^ etykiety;
vector<Label^> etykiety(20);
vector<Label> etykiety(20);
Niestety żadne przypisanie nie jest prawidłowe. Ktoś wie jak rozbić kontrolki/komponenty na tablice w tym środowisku?