[ cacafaca @ 14.04.2009. 11:31 ] @
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
[ priki @ 14.04.2009. 13:39 ] @
sta ti je ovo

Citat:

BrojBrojeva := 39; // LOTO 1 od 39 podrazumevano
BrojKolone := 1;


promenjive ili propertiji ?

[ cacafaca @ 14.04.2009. 13:52 ] @
To je Property
Code:

property BrojKolone: LongWord read FBrojKolone write PostaviBrojKolone;
property BrojBrojeva: Word read FBrojBrojeva write PostaviBrojBrojeva;
[ priki @ 14.04.2009. 14:36 ] @
koliko znam
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
[ NemesisMMX @ 14.04.2009. 15:00 ] @
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.
[ cacafaca @ 14.04.2009. 16:10 ] @
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)
[ savkic @ 14.04.2009. 17:19 ] @
> 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.
[ cacafaca @ 14.04.2009. 19:47 ] @
Citat:
savkic: property Proba: Integer read FProba write FProba default 25;

Nisam znao za kljucnu rec default koja je kljucna.

Mersi boku savkic!