Kod spaghetti :)

GA
  • Rejestracja: dni
  • Ostatnio: dni
0

Hej,

Próbuję sobie tworzyć graficzne aplikacje w Visual Studio. Chciałbym nieco skrócić kod o powtarzające się operacje np:

Kopiuj
                        this->Controls->Add(this->button1);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button3);
			this->Controls->Add(this->button4);
			this->Controls->Add(this->button5);
			this->Controls->Add(this->button6);

Stworzyłem sobie pętle jednak nie działa tak jakbym tego oczekiwał :)

Kopiuj
 for(int i=1;i<7;i++)
         this->Controls->Add(this->button(""+i));

Jak powinienem wprowadzić pętle zamiast długiego kodu?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Powinieneś te buttony mieć w tablicy.

HF
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
1

Zamiast pól button1, button2, itd., możesz stworzyć tablicę, do której będziesz odwoływał się za pomocą indeksu:

Kopiuj
this->button[0], this->button[1]

Wtedy w pętli umieścisz wywołanie:

Kopiuj
this->Controls->Add(this->button[i]); 
GA
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za podpowiedzi. Próbuję stworzyć tablicę, ale poruszam się trochę po omacku w cli... Jak powinno to wyglądać?

Kopiuj
Button^button[18];
for(int i=0;i<18;i++)
	button[i] = gcnew Button(this);
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

@garai, dlaczego piszesz w CLI?
Czytałeś może już ten wątek: http://4programmers.net/Forum/C_i_.NET/196733-o_naduzywaniu_c++cli?p=835492#id835492 ?

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
1

jako tablicy użyj klasy cli::array

Kopiuj
array<Button^> ^tablica = gcnew array<Button^>(18);
for (int i=0; i<tablica->Length; i++)
{
   tablica[i] = gcnew Button();
   ... // ustawianie pozycji, tekstu, itd.
}
this->Controls->AddRange(tablica);

ewentualnie zamiast pętli z indeksem można użyć for each:

Kopiuj
for each (Button^ %button in tablica)
   button = gcnew Button();

ale wtedy nie masz i, które mogło być przydatne do np. wyliczania współrzędnych

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.