[Delphi] ChildMDI dowolnej klasy

0

Witam. Nie wiedziałem jak nazwać temat więc wyszedł tak jak wyszedł :)
Ostatnio zacząłem interesować się gotowymi szablonami aplikacji MDI w Delphi i tak sobie patrzę jak to wszystko jest zrobione. Nasuwa mi się jedno pytanie. W domyślnym projekcie jaki utworzy delphi, okna Child są robione tak że jest deklarowana jakaś zmienna danej klasy np. ZmiennaChild: TJakasKlasa a potem tworzenie ZmiennaChild := TJakasKlasa.Create(Application). Czy jest jakaś możliwość tworzenia okien dowolnej klasy (której nazwy nie musimy znać) dynamicznie przez utworzenie ogólnej procedury tworzenia w której jako parametr posyła się nazwę klasy w postaci stringa i w ów procedurze okno jest jakoś tworzone? Chodzi mi o to żeby za każdym razem do MainForm nie dodawać nowych modułów do uses. Gdzieś na forum spotkałem się z czymś co nazywało się chyba RegisterClass ale nie wiem jak się do tego zabrać i tak żeby nie śmiecić tzn jak prawidłowo wyładowywać z pamięci itp. Nie znalazłem nic w faq :/

0

Wykorzystanie informacji RTTI. Rejestrujesz klasę poprzez RegisterClass, jako parametr podając tą właśnie klasę (musi dziedziczyć po TPersistent). Później wywołujesz FindClass, jako parametr podajesz nazwę klasy (w postaci łańcucha znaków). Jeśli znajdzie - zwraca Ci tzw. metaklasę. Z metaklasą możesz już się bawić i utworzyć egzemplarz klasy. Przykład:

var
  Form: TFormClass;
begin
  Form := TFormClass(FindClass('TForm2'));
  with Form.Create(Application) do
    Show;

Wcześniej było wywołane
RegisterClass(TForm2);

0

Dzięki, wygląda logicznie i dla mnie w miarę prosto. Tylko co to jest TPresistent? [???]

0

Klasa :) Spokojnie, TForm dziedziczy po TPersistent, dlatego tworząc klasę potomną klasy TForm także dziedziczysz po TPersistent, więc nie masz się czym przejmować :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0