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

Jak zdefiniować komponent za pomocą zmiennej???

Object Storage Arubacloud
0 głosów
306 wizyt
pytanie zadane 30 lipca 2017 w C i C++ przez BIREXD Obywatel (1,180 p.)
Witam. Mam kilka komponentów Text w c++ builderze. Nazwyają się podobnie ( Text1, Text2, Text3...Text40, Text41 ). Chciałbym zmienić np. Wysokość tego numeru tekstu który jest w zmiennej.

Przykładowo: mam int x = 5 więc chce zmienić wysokość Text5.

Czy można to zapisać za pomocą jednej lini kodu np.

Text[x]->height = 25;

Niestety ten sposób nie działa.

Inaczej tego wytłumaczyć nie umiem mam nadzieję że mi pomożecie

1 odpowiedź

0 głosów
odpowiedź 30 lipca 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)

Przede wszystkim zostaw ten cały C++ Builder bo to nieziemski syf.
A co do problemu:
Jeśli wszystkie elementy są tego samego typu, lub mają wspólną klasę bazową to:
Załóżmy, że są tego samego typu T:
 

#include <vector>

T Text1, Text2, Text3; // itd itd

int main()
{
    std::vector<T*> components = { &Text1, &Text2, &Text3, ... };
    int x = 30;
    components[x]->height = ...;
}

 

komentarz 30 lipca 2017 przez BIREXD Obywatel (1,180 p.)
Dlaczego syf???
komentarz 30 lipca 2017 przez Knayder Nałogowiec (37,640 p.)
Bo ma 17 lat.
EDIT: No ok. 15.
komentarz 30 lipca 2017 przez BIREXD Obywatel (1,180 p.)
Ale kto ci powiedział że korzystam z 6 borlanda???
komentarz 30 lipca 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
To już nie chodzi o sam wiek - cała ta paczka, wraz z kompilatorem to staroć, który nie dość, że ma mało wspólnego z prawdziwym C++ to używa słabych rozwiązań. Do tego wygląd C++Buildera (tego od Borlanda) sprawia, że jest chyba najbrzydszym IDE jakie widziałem. Gdybym miał wybierać z dwóch IDE - Dev-Cpp i Borland C++ Builder to bym wybrał Dev-Cpp a może wxDev-Cpp - takie rozszerzenie, dzięki któremu można korzystać z wxWidgets.

Polecam Visual Studio ewentualnie QtCreator lub w ostateczności Code Blocks.
komentarz 30 lipca 2017 przez Knayder Nałogowiec (37,640 p.)
Poziom twojego pytania.
komentarz 30 lipca 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
Dobra, zamiast się tutaj kłócić to BIREXD napisz czy udało Ci się to rozwiązać. I chciałbym też zobaczyć jak wygląda deklaracja/definicja tych Text1, Text2 itp w kodzie.
komentarz 30 lipca 2017 przez j23 Mędrzec (194,920 p.)

W przypadku kontrolek VCL tak powinno być:

T* tab[] = { Text1, Text2, Text3, Text4, /* itd. */ };
	
int x = 5;

...
tab[x]->Height = ...;

 

komentarz 30 lipca 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
Czyli to samo co ja napisałem. Okej, Text1 to pointer ale to praktycznie nie ma znaczenia, bo autor sam sobie to dopasuje, to był tylko sam koncept.
komentarz 30 lipca 2017 przez BIREXD Obywatel (1,180 p.)

Czyli w builderze za pomocą tablic to zrobic?

Jeszcze mała dygresja korzystam z embarcadero xe8 10.1 Berlin

Ps: w builderze ten sposoób nie działa crying

komentarz 30 lipca 2017 przez PoetaKodu Stary wyjadacz (10,990 p.)
Musi działać bo to nic wspólnego nie ma z IDE. Pokaż mi jak wygląda deklaracja tych Text1 itp.
1
komentarz 31 lipca 2017 przez j23 Mędrzec (194,920 p.)

@BIREXD, jak coś nie działa, to trzeba podać treść błędu lub nieco bardziej opisać problem. Lakoniczne "nie działa" nic nie wnosi.

 

Jeśli pola Textn są typu np. TEdit*, wtedy to T z przykładu powinno być zamienione na TEdit.

Podobne pytania

0 głosów
1 odpowiedź 525 wizyt
pytanie zadane 3 lipca 2018 w C i C++ przez urbix01 Gaduła (3,290 p.)
0 głosów
1 odpowiedź 494 wizyt
pytanie zadane 14 czerwca 2017 w C i C++ przez BIREXD Obywatel (1,180 p.)
0 głosów
1 odpowiedź 219 wizyt
pytanie zadane 26 grudnia 2015 w C i C++ przez Savuelo Początkujący (310 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...