... TForm2* *Forms = new TForm2*[++Count]; ...

malleor

Użytkownik
Dołączył
Wrzesień 5, 2006
Posty
3
siema, chłopaki.

mam problem z BCB6. piszę aplikację, która ma wykorzystywać kilka formularzy. przez 'kilka' mam na myśli wielkość tablicy, w której trzymam pointery do tych formularzy. sytuacja ma się więc następująco:

mam tablicę zmiennych klasy TForm2, którą obsługuje osobny unit;
chcę na zawołanie rozszerzać tę tablicę o nowy obiekt klasy TForm2 i TWORZYĆ kolejny formularz..

prosiłbym kogoś kompetentnego o pomoc.. Builder robi wielkie problemy :-]

[ Dodano: 05-09-2006, 19:58 ]
hej, fachowcy! niech mi któś tu coś napisze.. zacznę wątpić w pomocną moc forów ;]
 

M1ch00

Użytkownik
Dołączył
Sierpień 22, 2006
Posty
609
Jak zwątpisz to będzie lepiej dla ludzkości.
Zamiast tablicy która po utworzeniu jest nie do rozszerzenia użyj std::list<> i w ną wstawiaj wskaźniki.
Obiekty w c++ tworzy się przez operator new, jedyne co musisz ustawić to Objekt->Parent=FORMA; aby był on widoczny.
 

killrathi

Użytkownik
Dołączył
Marzec 13, 2006
Posty
117
no coż, troche dziwny zabieg ale nie będę wnikał w jakim celu to stosujesz.
Jeżeli chcesz mieć sprawnie działający taki mechanizm to polecam Ci zastosowanie struktur dynamicznych - lista jedno/dwukierunkowa będzie idealnym zastosowaniem.

edit: hehe - napisalismy w ten sam czas
<
 

malleor

Użytkownik
Dołączył
Wrzesień 5, 2006
Posty
3
ehh.. widzę, że nie obejdzie się bez kodu..
stworzyłem wygodną klasę TPack:

Kod:
class TPack

{

public:

        int Count; // wielkość tablicy Elements

        struct _element

        {

                TForm2 *Form;

                TWaveCtrl *WaveCtrl;

                TSpectrogramCtrl *SpectrogramCtrl;

                void __fastcall SetItUp(void);

        }* *Elements;

        void __fastcall AddNewElement(void);

        __fastcall TPack();

private:

        void __fastcall CopyList(_element* *src, _element* *dest);

};

problem polega na tym, że BCB ma trudny do określenia problem ze stworzeniem drugiego elementu tej tablicy.

nie korzystałem wcześniej z szablonów klas, stąd pomysł na sięgnięcie do intuicyjnej metody organizacji danych..

a tak btw, mistrzu M1ch00: dzięki za ciepłe słowa, ale ani
Kod:
  Elements[Count-1]->Form = new TForm2;
, ani
Kod:
  Elements[Count-1]->Form = new TForm2(*Form2);
nie działają.

[ Dodano: 06-09-2006, 12:30 ]
bogowie, udało się.. :faja:
dzięki, chłopcy !.]
 
Do góry Bottom