Dostęp do TFrame z tablicy, jak do Screen->TForm[x]

dział ogólny

Dostęp do TFrame z tablicy, jak do Screen->TForm[x]

Nowy postprzez usermaw » piątek, 2 stycznia 2009, 21:24

Witam
Jak niektorzy wiedza, to form projektu mozna sie odwolywac poprzez indeks tablicy, niekoniecznie przez nazwe.
Np forma glowna bedzie Screen->TForm[0], nastepna dodana do projektu Screen->TForm[1] idt...

Czy w podobny sposob sa gdzies indeksowane w tablicy TFrame? TFrame sa umieszczane w pliku *.cpp projektu, podobnie jak Formy, wiec moze i sa tak samo indeksowane gdzies tam

Dlaczego chce TFrame, zamiast Formy? Bo TFrame jest z "urzedu" StayOnTop, przesuwa sie zawsze z forma macierzysta, wiec pozostaje mi tylko skalowanie i polozenie.
Chce zamiast zakladek TPageControl zastosowac TFrame odpalane dynamicznie z Available forms.

I jeszcze jedno pytanie zwiazane z tematem. Jak w uniwersalny sposob zniszczyc dynamiczna TForm czy TFrame. Jesli forma dynamiczna ma wlasciciela (glowna) i jakiego parenta, to gdzies to musi byc odnotowane, cos zostalo powolane z formy glownej i "trzyma piecze". Czy mozna niszczyc kasujac jakis wskaznik gdzies tam w programie, nie martwiac sie ani o nazwe, ani wyzej wspomniany index. Czyli delete ... "cokolwiek to jest".

pozdrawiam

ps. Nie chodzi mi o komponent Frames z palety Standard... a o File->New->Other->Frame. Podobienstwo nazw moze mylic
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
Podziękował : 2
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Dostęp do TFrame z tablicy, jak do Screen->TForm[x]

Nowy postprzez Cyfrowy Baron » piątek, 2 stycznia 2009, 22:13

Tak po prawdzie to nie pojąłem o co pytasz, ale zwracam uwagę na fakt, że:

NIE!!! Screen->TForm[0]; LECZ!!! Screen->Forms[0];

Coś takiego: Screen->Frame[0]; oczywiście nie zadziała, gdyż Screen odnosi się do ekranu i indeksuje okna, a już nie ramki.

Co do niszczenia obiektów, to oczywiście zawsze niszczy się je za pomocą operatora delete:

delete Form1;
delete Frame1;

Kasując obiekt musisz zawsze odwołać się do tegoż obiektu, gdyż kasując obiekt zwalniasz konkretny obszar w pamięci, czyli nie możesz skasować coś bliżej nieokreślonego, zawsze musisz wskazywać dokładnie adres obiektu.

Jeżeli jednak masz np. rodzica w postaci Form2 i do tego rodzica masz przypisane inne obiekty, to kasując tegoż rodzica kasujesz również wszystkie jego "dzieci", czyli wystarczy użyć: delete Form2; nie trzeba kasować poszczególnych obiektów oddzielnie. Dotyczy to sytuacji w której przypisujesz obiektowi rodzica poprzez klasę TWinControl, czyli właściwość Parent, np. Frame1->Parent = Form2;
Dotyczy to tylko obiektów dziedziczących po klasie TWinControl, czyli posiadających właściwość Parent.

Reszty Twoich pytań nie zrozumiałem, więc nie odpowiem...
Ostatnio edytowano sobota, 3 stycznia 2009, 10:05 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: błąd w kodzie. Było Screen->Form[0]; Powinno być: Screen->Forms[0];
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Dostęp do TFrame z tablicy, jak do Screen->TForm[x]

Nowy postprzez usermaw » piątek, 2 stycznia 2009, 23:05

No dobra, troche nie jasno napisalem. Niewazne, bo mi odpowiedziales, Frame nie jest w tablicy, wiec juz nie ma tematu.

ps.
Pozdro i wszystkiego najlepszego w Nowym Roku 2009
Avatar użytkownika
usermaw
Homos antropiczny
Homos antropiczny
 
Posty: 55
Dołączył(a): piątek, 2 stycznia 2009, 20:43
Podziękował : 2
Otrzymał podziękowań: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 11 gości

cron