Formatki + dziedziczenie

0

Witam

Mam pytanie czy ktoś wie może jak rozgryść taki temat. Mam sobie programik a w nim n formatek. Wszystkie pochodne TForm oczywiście. Pewne elementy w tych formatkach się powtarzają, i kod się mnoży. Chciałbym więc wykorzystać moc płynącą z dziedziczenia. No i teraz tak, jak sobie zrobię klasę TMojaForm = class(TForm), a potem w tych formatkach w edytorze kodu pozmieniam że one nie są z (TForm) tylko z (TMojaForm) to jest ok. Wszystko działa i jest cacy. Ala ja bym chciał, zrobić sobie formatkę razem z dfm'em - żeby komponenty które na nią wrzucę też się pojawiały na tych pochodnych - jest taka możliwość ?

P.S. wiem że zabieram się do tematu od D..Y strony ale tak już jest zrobione i trza coś wymyślić.

0

jak sobie zrobisz taką "podstawową" formę, po której chcesz dziedziczyć to klikasz na nią prawym, wybierasz add to repository, wpisujesz gdzie ją chcesz i potem robisz tylko menu\file\new\other(zakładkę, którą wybrałeś przy zapisywaniu)\ i tu masz swoją formę

0
Misiekd napisał(a)

jak sobie zrobisz taką "podstawową" formę, po której chcesz dziedziczyć to klikasz na nią prawym, wybierasz add to repository, wpisujesz gdzie ją chcesz i potem robisz tylko menu\file\new\other(zakładkę, którą wybrałeś przy zapisywaniu)\ i tu masz swoją formę

Wiem wiem.

Ale ja chce zrobić dziedziczenie od tyłu. Mam już dużo formatek, w których wiele rzeczy się powtarza, i wiele rzeczy trzeba modyfikować w ten sam sposób jak zajdzie potrzeba, dlatego ja chce dorobić do tego formatkę bazową. Czyli zrobić to jakby od tyłu. Mam nadzieje że się jasno wyraziłem. Ale obawiam się że to co chce jest niewykonywalne.

0

no ale jeśli zrobisz sobię formę bazową i zapiszesz ją w jakimś pliku a potem każda następna będzie po niej dziedziczyć to powinno to działać - nie sprawdzałem. Inna opcja to ramki zamiast formy

0

Wszystko będzie tak jak mówisz jeśli zrobi się to w prawidłowej kolejności:

  • robię nową formę (bazową) i dodaje do niej button'a (zapisuje ją w repozytorium - choć ten krok konieczny nie jest)
  • dodaje nową formę dziedziczącą po bazowej (trzeba wybrać opcję inherit), i ten button już tu jest - wszystko jest pięknie i ładnie, dodając kolejne komponenty do bazowej pojawiają się na pochodnej.

Ale teraz jest taka sprawa, że ktoś przespał punkt pierwszy : ) i chce go zrobić po punkcie drugim - mam już formatki, a teraz chce im dorobić bazę. Zmiana w kodzie, że formatka nie dziedziczy po TForm tylko po bazowej. Rezultat jest taki, że owszem to działa, ale na etapie projektowania nie widać komponentów z bazowej ; (

0

Sprawa rozwiązana (mam nadzieje).
Dla potomnych napiszę jak.

Aby zrobić dziedziczenie od tyłu (bez skojarzeń), trzeba wykonać jedną jedyną malutką rzecz. W pliku *.dfm formatki, pierwsze słowo "object" trzeba zamienić na "inherited" - wówczas na formatce pojawią się komponenty z formy bazowej już w czasie projektowania.

P.S. chyba musi być tak że w całym łańcuszku dziedziczenia nie może być formatek bez dfm'ek. Wyjątkiem może być początek łańcuszka. Innymi słowy nie może być dziur. Ale tak mi się tylko wydaje.

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