• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak stworzyć komponenty w tablicy | C++ Builder | Borland

0 głosów
451 wizyt
pytanie zadane 17 listopada 2015 w C i C++ przez Przemysław Obywatel (1,510 p.)

Witam. Mam pytanie. Kiedy w programie c++ builder dodaję różne elementy (kompotenty, czy jak to nazwać) np. zdjęcia, okienka, figury itp. na ekran. Probelm w tym, że każdy z nich dodaje się jako osobny wskaźnik:

W tej sytuacji, jeśli np. chciałbym zmienić wszystkim kwadratom width na 100, musiałbym zrobić tak:

Form1 -> Shape1 -> width = 100;
Form1 -> Shape2 -> width = 100;
Form1 -> Shape3 -> width = 100;



Jak wrzucić wszystkie 3 kwadraty do jednej 3-elementowej tablicy? Chodzi o to, żebym to samo co wyżej, mógł zrobić tak:
 

for(int i=0; i<3; i++)
{
Form1 -> Shape[i] -> width = 100;
}



Wiem, że na tym przykładzie to mi dużej różnicy nie robi, ale mam zamiar stworzyć program z 500 takimi figurami i wtedy takie działanie (zwłaszcza, że nie chodzi o zwykłe "zmienienie szerokości") było by okropnie uciążliwe, wręcz nierealne.

Z GÓRY DZIĘKI ZA POMOC! :D

2 odpowiedzi

+1 głos
odpowiedź 18 listopada 2015 przez Rogargol Pasjonat (16,610 p.)
Nie bawilem sie w Builderze, ale na szybko to przychodzi mi do glowy, ze moglbys wrzucic wskazniki do tych kwadratow do jakiegos kontenera (np vectora czy listy) i pozniej na tym kontenerze operowac jak na tablicy :)
+1 głos
odpowiedź 18 listopada 2015 przez Przemysław Obywatel (1,510 p.)

Dzięki wszystkim za pomoc. Już znalazłem odpowiedź, poniekąd poprzez przeglądanie innych tematów na tym forum :)

Po prostu skoro mam na sztywno:
TButton *Button1;
TButton *Button2;
TButton *Button3;


To stworzyłem tablicę wskaźników, do których przypisałem adres tamtych wskaźników ;)

class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TShape *Shape1;
        TShape *Shape2;
        TShape *Shape3;
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
        TShape *shp[5];
};

I w pliku .cpp (nie w nagłówku):

Form1 -> shp[0] = Form1 -> Shape1;
Form1 -> shp[1] = Form1 -> Shape2;
Form1 -> shp[2] = Form1 -> Shape3;

...



I teraz wystarczy takie coś aby zmienić parametr obiektu: 

Form1 -> shp[0] -> Left = 800;


:) Dziękuje wszystkim za pomoc. 

PS Sorry, ale nie wiem czemu się utworzyły 2 tematy.

Podobne pytania

0 głosów
3 odpowiedzi 1,514 wizyt
+1 głos
2 odpowiedzi 1,423 wizyt
0 głosów
2 odpowiedzi 401 wizyt
pytanie zadane 23 stycznia 2018 w C i C++ przez dawid35789 Nowicjusz (120 p.)

93,753 zapytań

142,713 odpowiedzi

323,356 komentarzy

63,347 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...