Ukoliko promenim neko svojstvu u nasledjenom formularu kako da vratim to svojstvo kao sto je u roditeljskom? Koristim Delphi 6, a u Cantovoj knjizi (Delphi 5) kaze da je to komanda iz Obejct Inspektora koja se zove Revent to Inherited. Nema toga (u ovoj verziji), ili ne mogu naci.
> Ukoliko promenim neko svojstvu u nasledjenom formularu kako da vratim to svojstvo kao sto je u roditeljskom? Koristim Delphi 6, a u
> Cantovoj knjizi (Delphi 5) kaze da je to komanda iz Obejct Inspektora koja se zove Revent to Inherited. Nema toga (u ovoj verziji), ili ne mogu naci.
Otvrori .dfm i samo obriši red sa tim propertijem.
Pa izaberes zeljeni property nasledjene komponente u ObjInspectoru, zatim right-click i izabere "Revert to inherited". Dodouse nisam 100% siguran da li je to bilo jos u D5, ali malo toga je promenjeno od tada tako da najverovatnije ima. Ako nema onda ti rucni edit dfm fajla ne gine...
Btw. pitanje cisto onako, zna li neko zasto u dfm fajlovima sve klase nasledjene od VCL klase (npr. od TForm) pocinju sa object Form1: TForm1, dok ako bi npr. TForm2 nasledio taj TForm1 onda pise inherited TForm2: TForm2. Verovatno zbog toga da bi IDE znao da ce sve ne-overriden property-e naci u baznoj klasi, ali zar to isto ne vazi i za prvi slucaj (TForm1)? To mi lici na neki bas zesci budz samog jezika, nije li taj TForm1 takodje najnormalniji naslednik TForm-a...
OK, nasao sam, a u knjizi stoji preko OI-a da se radi.
Nego, mene zanima, ako se deklarise Form1: TForm1, onda moze i Form2:TForm1 ,znaci dve promenjive tipa istog formulara, gde se ovo koristi, i kako se iskoristi?
Delphi tu malo zna da zbuni delphi pocetnike, ako se do tada nisu susretali sa objektnim programiranjem, pogotovu bivse VB programere.
Za svakog naslednika klase TForm koji napravis (preko File->New->Form, znaci taj tvoj TForm1), Delphi automatski napravi jedan globalni var Form1: TForm1 i instancira objekat u glavnom programu (.dpr fajl) koristeci Application.CreateForm(TForm1, Form1) sto se svodi na Form1 := TForm1.Create(Application) i verovatno jos nesto sto ne znam. "Promenjiva" Form1 je "tipa" TForm1 i deklarisana je u unitu Form1.pas, ali se pravi objekat (po defaultu, automatski) instancira u .dpr fajlu, u pomenutom redu. To znaci da ti takodje mozes da napravis svoju "promenjivu" MojaForma: TForm1, i posle poziva MojaForma := TForm1.Create(Application) mocices da prikazes formu (MojaForma.Show) i da radis sa njom sta hoces... U principu svi veci programi koriste takav pristup za rukovanje formama jer bi bilo idiotski instancitrati 20+ formi odmah po startu aplikacije i svaku od tih formi uvek eksplicitno referencirati preko jedne dedicated "promenjive".
Ako ti nista od ovoga nije jasno nadji neku knjigu o objektnom programiranju i "sve ce ti se samo kas'ti", ovo je tipican slucaj klase i objekta, doduse sa malo nezaobilazne delphi automatike...
_v!rus_: (po defaultu, automatski) instancira u .dpr fajlu, u pomenutom redu. To znaci da ti takodje mozes da napravis svoju "promenjivu" MojaForma: TForm1, i posle poziva MojaForma := TForm1.Create(Application) mocices da prikazes formu (MojaForma.Show) i da radis sa njom sta hoces...
OK, sad mi je jasno, za prvu promenjivu on automatski instancira, a za moju moram rucno, to mi nije bilo jasno.
Hvala.