Elegancki sposób na przekazanie parenta

0

Mamy formę główną i na niej scrollbox, oraz w osobnym Unicie-klasę, która tworzy dynamiczne gridy i odpowiednio je maluje, ustawia itd.

Jak zrobić tak, żebym w Unicie nie musiał deklarować w Uses formy głownej ?
Bo jak tworze gridy w tym osobnym unicie, to musze wskazac Parent'a czyli scrollboxa.
Dotychczas wpisywalem Parent := fMain.Scrollbox , ale to chyba kichowate.

  1. istnieje jakis wzorzec na taka sytuacje (klasa ta samo co w pytaniu pierwszym):
    uzytkownik wybiera cos z comboboxa i w zaleznosci od tego, tworzy sie owa klasa z gridami i osadzaja sie na scrollboxie. Jak to zwalniac ?
    Nie moze byc w OnChange comba:
cos.Create;
cos.Zrob;
cos.Free

Bo uzytkownik nie zobaczylby nawet efektu, bo nastapiloby od razu zwolnienie obiektu po wybraniu.

Zwalniac maja sie te wtedy, gdy uzytkownik wybiera Comboboxem nowy zestaw.

Ale taka konstrukcja

if cos <> nil then
  cos.Free;
cos.Create
cos.zrob

I dodatkowo w OnClose Formy takze cos.Free

Ale ta metoda chyba tez nie jest do konca profesjonalna... np jakis wyjatek po drodze aplikacji

0

co do pierwszego to mi sie nasuwa mysl, aby klasa dziedziczyla po TObject, i poszczegolnym tworzonym gridom w tej klasie, jako parenta przypisywac inherited parent, albo cos w ten desen ?

0

Nie rozumiem w czym masz problem TForm1. Jeżeli Twój obiekt dziedziczyć będzie
po TWInControl to mozesz mu normalnie po wywołaniu konstruktora ustawić Parent,
ewentualnie możesz też zadaklarować własnośc Parent lub ustawić ją w konstruktorze
o ile się nie mylę. A co do ComboBoxa to może on tak jak inne tego typu obiekty w
użyciu z metodą AddItem, przechowywać również obiekty, które później możesz w
zdarzeniu OnChange zmieniać dając ComboBox.Items.Objects[Index] i wywoływac,
w ten sposób jakąs metodę Show czy inną, ktora pokaże ponownie te StringGridy.

0

O Jezu, no co za problem?
Mówisz, że masz klasę, która tworzy te gridy. Klasa, jak to klasa potrzebuje konstruktora. No to jaki problem przekazać w parametrze konstruktora konkretnego ScrollBoxa?

0
Juhas napisał(a)

O Jezu, no co za problem?
Mówisz, że masz klasę, która tworzy te gridy. Klasa, jak to klasa potrzebuje konstruktora. No to jaki problem przekazać w parametrze konstruktora konkretnego ScrollBoxa?

Na przykład taki, że parametrem konstruktora jest Owner, nie Parent. MOGĄ być takie same, ale nie muszą.

0

To przekaż dwa parametry.

0

A jeśli chcesz by sparklowało niczym Edward to zrób dwa konstruktory.

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