Strona 1 z 1

MDIForm i dynamicznie utworzenie Formy

Nowy postNapisane: czwartek, 18 września 2008, 13:41
przez pit
Witam
Mam taki kłopocik, w oknie MDIForm tworze dynamicznie Formę w której znowu z kolei Tworzę kolejną inną dynamiczną formę. I gdy zamykam formy nie w tej kolejności program się wysypuje. Wpadłem na pomysł, że z tej pierwszej formy wywołam funkcje umieszczoną na MDIForm która utworzy mi te drugą Formę, super fajnie ale niestety nie mogę się odwoływać do komponentów Formy 2 z Formy 1. Jak to ugryźć ?

Re: MDIForm i dynamicznie utworzenie Formy

Nowy postNapisane: czwartek, 18 września 2008, 15:24
przez Cyfrowy Baron
Jeżeli tworzysz formularze w takiej kolejności:

MDIForm -> ChildForm -> Form1

i zamykasz ChildForm to jest oczywiste, że program się posypie, gdyż ChildForm stworzył Form1 i są ze sobą połączone.

Chcąc uniknąć tego problemu musisz utworzyć na MDIForm funkcję tworzącą formularz Form1, a z ChildForm możesz wtedy wywoływać tą funkcję, w ten sposób to MDIForm będzie tworzył Form1 po wywołaniu funkcji znajdującej się na MDIForm przez ChildForm.

Zalecam ostrożność, w aplikacjach typu MDI łatwo o błędy w adresowaniu pamięci...

Re: MDIForm i dynamicznie utworzenie Formy

Nowy postNapisane: piątek, 19 września 2008, 06:59
przez pit
Jak pisałem wcześniej też tak zrobiłem, ale niestety nie mogę się odwołać się do komponentów Formy2 z Form1. Już sobie poradziłem bo oprócz tworzenia Formy2 z poziomu MDI wczytuje wyniki do TStringList wywołuje funkcje MDI też z parametrem jak TStringList a ta funkcja tworzy to Formę2 i wywołuje znowu funkcję w tejże nowej Formie2 z tym samym parametrem. Miałem nadzieje, że jest inny sposób. Ważne że działa, ale czy to jest poprawne ?

Re: MDIForm i dynamicznie utworzenie Formy

Nowy postNapisane: piątek, 19 września 2008, 08:49
przez pit
Za szybko się cieszyłem. Wydaje mi się, że ma taki problem. Mianowicie tworze dynamicznie dwa obiekty typu TForm1 o nazwie Form1 który jest wskaźnikiem, czyli zmieniam wskaźnikowi adres przy tworzeniu następnej Formy1 a gubię adres poprzedniej Formy1, jak się nie mylę. Wszystko jest ok do puki nie zamykam Formy. W takim razie powinienem utworzyć tablice wskaźników Form1. Czy dobrze rozumuje?

Re: MDIForm i dynamicznie utworzenie Formy

Nowy postNapisane: piątek, 19 września 2008, 09:03
przez Cyfrowy Baron
Ja się pogubiłem...

Wydaje mi się, że nie powinieneś takich kombinacji tworzyć w aplikacji MDI, bo nigdy nie będzie działać prawidłowo. W MDI okna Child są tworzone dynamicznie i stąd biorą się Twoje problemy z kolejnymi oknami.