Konstruktor mi vraća vrednost Property-a iz Design time-a

  • 7 odgovora
  • 3.529 pregleda
Konstruktor mi vraća vrednost Property-a iz Design time-a 14.04.2009. u 11:31 · pre 213 meseci #1
U konstruktoru sam ubacio neke podrazumevane vrednosti da bi u Object inspectoru imalo šta da se pojavi. Ali kada pokrenem program neka polja koja sam u Object Inspectoru izmenio ponište mi se, verovarno, jer ih pri pokretanju i pravljenju objekta konstruktor vrati na staro. Kako da postavim podrazumevane vrednosti za Design time?
Ovo mi stoji u konstruktoru:
Code:

constructor TLotoKolona.Create(Owner: Tcomponent);
begin
  inherited Create(Owner);
  ...
  BrojBrojeva := 39;  // LOTO 1 od 39 podrazumevano
  BrojKolone := 1;
  ...


Ako postavim da mi je BrojKolone u design time-u npr 2, sve lepo radi i iscrta, samo kada pokrenem program ono se vrati na 1.

PS. Ovo je komponenta koja donosi sreću
Re: Konstruktor mi vraća vrednost Property-a iz Design time-a 14.04.2009. u 13:52 · pre 213 meseci #3
To je Property
Code:

property BrojKolone: LongWord read FBrojKolone write PostaviBrojKolone;
property BrojBrojeva: Word read FBrojBrojeva write PostaviBrojBrojeva;
Re: Konstruktor mi vraća vrednost Property-a iz Design time-a 14.04.2009. u 15:00 · pre 213 meseci #5
To ne bi trebalo da se desava.
Ako si definisao property a onda snimio objekat pre unistavanja
kada pokrenes program i ucitavas objekat, nakon konstrutora poziva se
kod koji ucitava vrednosti za svaki storovan property. Tako da
vrednosti koje si definisao u konstruktoru vaze samo sa objekte koje
si napravio u runtime-u a ne i za one koji se vec nalaze na formi.
Dakle, konstruktor ti sigurno ne brise vec postavljene vrednosti.
trazi gresku na drugom mestu.
Re: Konstruktor mi vraća vrednost Property-a iz Design time-a 14.04.2009. u 16:10 · pre 213 meseci #6
Citat:
NemesisMMX: Tako da vrednosti koje si definisao u konstruktoru vaze samo sa objekte koje
si napravio u runtime-u a ne i za one koji se vec nalaze na formi.

Hvala na savetu. Ovo nisam znao. Mislio sam da postoji neki trik za definisanje property-a van konstruktora. Provericu kod.

Citat:
priki: propertiji su obično vidljivi i/ili dostupni svetu izvan klase gde su deklarisani i tamo podešavaš vrednosti propertija a ne u samoj klasi

To me je interesovalo. Odakle Object Inspector cita porazumevane vrednosti npr Button.Height, koje je obicno > 0)
Re: Konstruktor mi vraća vrednost Property-a iz Design time-a 14.04.2009. u 17:19 · pre 213 meseci #7
> Hvala na savetu. Ovo nisam znao. Mislio sam da postoji neki trik za definisanje property-a van konstruktora. Provericu kod.

Da budemo precizni, konstruktor se izvršava uvek, i dodele koje se urade u njemu važe bez obzira da li je komponenta ručno napravljena u runtime ili je to učinio Delphi streaming sistem za design time komponente. Ono što se dodatno dešava tokom strimovanja (a posle konstruktora, dakle vrednosti postavljene konstrukturu se mogu tada promeniti) je učitavanje vrednosti zapisanih u DFMu forme, ako tih vrednosti nema onda važe one iz konstruktora ili default vrednosti koje postavi sam kompajler (npr, za stringove je to '' - prazan string).

> To me je interesovalo. Odakle Object Inspector cita porazumevane vrednosti npr Button.Height, koje je obicno > 0)

To se obično postavlja u constructoru i to su takozvane default vrednosti. Može se postaviti pitanje, čemu onda služi default direktiva u published sekciji? Ona govori Delphi striming sistemu da li je potrebno sačuvati vrednosti u DFMu, ako je vrednost ista onda se ne čuva jer se pretpostavlja da se postavlja u konstruktoru. Na primer ako imamo ovako deklarisan properti:

property Proba: Integer read FProba write FProba default 25;

i u constructoru:

FProba := 25;

Ako se vrednost u ObjectInspectoru promeni sa 25 u npr. 26 onda će se to zapisati u DFM.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme