-
O autoruKent Reisdorph je glavni inenjer za softver u preduze}u
TurboPower Software Co.,a samostalno radi i konsultacije. Kent je
saradnik ~asopisa C++Builder DevelopersJournal firme Cobb Group i
redovno pi{e ~lanke za Delphi Developers Journal.Tako|e je ~lan
grupe TeamB, Borland-ove volonterske grupe za podr{ku. Kao
~langrupe TeamB, Kent provodi veliki broj sati u toku nedelje
odgovaraju}i na pitanja uBorland-ovoj grupi za vesti, uglavnom o
C++Builder-u i Windows programiranju.Autor je knjiga Sams nau~ite
C++Builder za 21 dan i Sams nau~ite C++Builder 3za 21 dan. Kent ivi
u Colorado Springs-u, drava Colorado, sa enom Jennifer i{estoro
dece James, Mason, Mallory, Jenna, Marshall i Joshua.
xxiii
-
PosvetaOva knjiga je posve}ena mojoj eni Jennifer. Ne mogu da
pomislim da je posvetimbilo kojoj drugoj osobi. Kao i obi~no, hvala
Jen {to odrava{ sve, dok sam zatvoren usvom svetu.
Re~i zahvalnostiOvaj deo knjige mi je veoma lak. Lako je setiti
se ljudi koji su u~estvovali uzavr{avanju projekta. Prvo bih eleo
da se zahvalim Brian Gill-u za njegov predanrad na projektu. U par
navrata sam poku{ao da prodrmam Brian-a, ali se nije nipomerio (ili
nisam primetio da se pomerio!). Tako|e, elim se zahvalim
KeziaEndsley za njen rad na ovoj knjizi. Kezia je odradila veliki
deo posla na razvoju.Siguran sam da mi je rad sa njom veoma
pomogao. Od ljudi u firmi MacmillanPublishing, eleo bih da se
zahvalim Dana Leash i Heather Urschel.
Postoji nekoliko ljudi u Inprise Corporation (nekada Borland
International) kojimaelim da se zahvalim. Iako nisam imao puno
direktnog kontakta sa Nan Borreson utoku ovog projekta, znao sam da
je, rade}i u senci, uradila svoj uobi~ajeni posaoveoma dobro. @eleo
bih da se zahvalim tehni~kim urednicima Bill Fisher i ElliePeters.
Oboje su uradili dobar posao. Ne mogu da napomenem Ellie, a da ne
dodamda mi je drago {to mi je Ellie prijatelj i tehni~ki urednik.
Tako|e, elim da se zahvalim Steve Teixeira, Steve Trefthen i Ryder
Rishel koji su brzo odgovarali napitanja koja sam im postavljao u
toku rada na ovom projektu.
Na kraju, elim da se zahvalim svojoj eni Jennifer. Ovo je tre}i
projekt koji sam odra-dio, a Jennifer mi je uvek bila snana
podr{ka. Daleko je dogurala i navikla je da me vidisa glavom na
dole i slu{alicama na glavi. Ovih dana }u joj to nadoknaditi,
obe}avam.
xxiv
-
Recite nam {ta misliteKao ~italac, Vi ste najvaniji kriti~ar i
komentator ove knjige. Mi procenjujemo Va{emi{ljenje, jer elimo da
saznamo, {ta smo uradili dobro, {ta smo mogli bolje, koje
oblastibiste eleli da obradimo u na{im izdanjima i kao i sva ona
druga mudra zapaanja kojaelite da nam uputite. Vi moete da nam
pomognete da napravimo jaku knjigu, koja }ezadovoljiti Va{e potrebe
i da Vam ponudimo ra~unarski vodi~ kakav ste eleli.
Da li imate pristup Word Wide Web-u? Pristupite na{em sajtu na
adresi:
http://www.kombib.co.yu
Preuzmite kompletne sadraje knjiga, kompletna poglavlja.
Saznajte koji su nasloviu pripremi. I jo{ mnogo toga...
Sajt se menja dva puta nedeljno. Moete nas kontaktirati na
slede}i na~in:
E-mail: [email protected]
xxv
-
Uvod: Vi se nalazite ovdeZar nije zgodno kada strelica na mapi
pokazuje mesto na kom se nalazite? Pa, Vi steovde! Moda se ovde
nalazite zato {to ste i ranije koristili Delphi i elite da
vidite{ta ima novo u Delphi-ju 4. Moda ste ovde zato {to Vam je {ef
rekao da treba dabudete ovde. Moda ste ovde i zato {to ste
apsolutni po~etnik koji bi eleo da istraidivan svet Windows
programiranja.
Bez obzira na razlog Va{eg dolaska, dobro do{li! Mogu Vas
uveriti da }e ovaj put bitiinteresantan. Bez sumnje }ete uivati u
njemu. Uklju~i}e malo rada, ali }e biti izabave, ne{to kasnije.
Verujte mi da se ni{ta ne moe porediti sa pretvaranjem Va{ihmisli u
Windows program. Nadam se da }e Vas uhvatiti groznica programiranja
i da}ete uroniti u sate i sate rada na programima.
Ohrabrujem Vas da eksperimenti{ete u toku rada sa ovom knjigom.
Odlaganje knjigei igranje moe da bude dobar na~in u~enja. Prolazak
kroz knjigu nije trka. Prvi kojistigne do kraja ne dobija nagradu.
Bolje da provedete 21 nedelju u~e}i Delphi pro-gramiranje, nego da
jurite i da ne posve}ujete vreme konceptima koji su obra|eni uovoj
knjizi. Bez sumnje, moje iskustvo mi govori da je najbolji na~in za
u~enje, radna aplikaciji. Zamislite Va{u aplikaciju i radite na
njoj u toku ~itanja knjige. Re{ava-nje pravih problema je jedan od
na~ina za u~enje.
Zbog toga i nije vaan razlog Va{eg dolaska. Mnogo je vanije da
ste ovde. Drago mi je{to ste do{li i nadam se da }ete uivati u
Delphi iskustvu. Opustite se, podignite nogena sto i zabavljajte se
u~e}i kako da koristite Delphi. Siguran sam da }e Vam prijati.
1
-
Kratak sadrajPrva nedelja na prvi pogled 3
Dan 1: Po~etak rada sa Delphijem 52: Vi{e o Pascalu 473: Klase i
objektno orijentisano programiranje 854: Istraivanje Delphijevog
okruenja (Delphi IDE) 1175: Model vizuelnih komponenti 1696: Rad sa
dizajnerom formi i dizajnerom menija 1997: VCL komponente 245
Pregled sadraja prve nedelje 291
Druga nedelja na prvi pogled 295Dan 8: Kreiranje aplikacija u
Delphiju 297
9: Projekti, editor koda (Code Editor) i prozor za ispitivanje
koda (Code Explorer) 339
10: Debagiranje Va{ih aplikacija 38911: Delphi-jevi alati i
opcije 42912: Programiranje grafike i multimedije 45913: Iza osnova
Delphi-ja 49914: Napredno programiranje 545
Pregled sadraja druge nedelje 587
Tre}a nedelja na prvi pogled 591
Dan 15: COM i ActiveX 59316: Arhitektura baza podataka u
Delphi-ju 52917: Pravljenje formi za rad sa bazama podataka 56718:
Pravljenje programa za rad sa bazama podataka 58719: Pravljenje i
kori{}enje DLL-ova 61120: Pravljenje komponenti 64121: Delphi i
C++Builder 681
Pregled sadraja tre}e nedelje 697Dodatni dan 799
DodaciA: Odgovori na test pitanja 817B: Sadraji na Internet-u
vezani za Delphi 839
Index 843
v
-
SadrajPrva nedelja na prvi pogled 3Dan 1: Po~etak rada sa
Delphijem 5
[ta je Delphi? . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .5Kratak pogled na
Delphi okruenje (Delphi IDE) . . . . . . . . . . . . . . . . . . .
. .6
Inspektor objekata (object Inspector) . . . . . . . . . . . . .
. . . . . . . . . . . . . .7Delphi radni prostor (workspace) . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .8
Va{ prvi program: Hello World . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .8Kreiranje programa . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .8Izmena programa . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .9Zatvaranje programa . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.10
Va{ drugi program Hello World, deo II . . . . . . . . . . . . .
. . . . . . . . . . . . . .10Pisanje programa Hello World II . . .
. . . . . . . . . . . . . . . . . . . . . . . . .11Izmena programa
Hello World II . . . . . . . . . . . . . . . . . . . . . . . . . .
. .11
Pregled jezika Object Pascal . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .12Na po~etku... . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .13Pascal juniti . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .15Komentari u
okviru koda . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .23Promenljive . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .24Tipovi
podataka Object Pascal-a . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .26Operatori jezika Object Pascal . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .30Konstante . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .32Nizovi . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.32Stringovi . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .36
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .44Radionica . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .45
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .45Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .46Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .46
Dan 2: Vi{e o Pascalu 47if, then, else . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.47
Izvr{avanje vi{estrukih instrukcija . . . . . . . . . . . . . .
. . . . . . . . . . . . . .48Dodavanje iskaza else . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.49Ugnjedeni iskazi if . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .50
Kori{}enje petlji . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .52Petlja for . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .53Petlja while . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .57Petlja
repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .59Iskaz goto . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.60Procedure Continue i Break . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .61
Iskaz case . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .62
vii
-
Opseg (scope) . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .64Slogovi . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .66Iskaz with . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .68
Nizovi slogova . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .69Priklju~ene datoteke
(include files) . . . . . . . . . . . . . . . . . . . . . . . . . .
. .69
Funkcije, procedure i metode . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .71Deklaracija i definicija . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.75Vrednosti, konstante i referentni parametri . . . . . . . . . .
. . . . . . . . . . .76Lokalne funkcije i procedure . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .79Preoptere}enje
metoda (method overloading) . . . . . . . . . . . . . . . . . .
.80Generi~ki parametri za funkcije . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .81
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .82Radionica . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .82
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .83Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .83Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .84
Dan 3: Klase i objektno orijentisano programiranje 85Skupovi
(sets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .85Raspore|ivanje . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .87Pointeri (pointers) . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .88
Lokalno kori{}enje memorije nasuprot dinami~kom kori{}enju
memorije . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .89Dinami~ko rezervisanje memorije i pointeri .
. . . . . . . . . . . . . . . . . . . .91Uklanjanje reference
pointera . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .92
[ta je klasa? . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .93Anatomija klase
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .94
Nivoi pristupa klasi . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .94Konstruktori . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .96Destruktori (destructors) . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .99Polja podataka (data fields)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.101Metode (methods) . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .102O polju Self . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .103Primer klasa . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .105
Nasle|ivanje( inheritance) . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .110Preskakanje metoda
(overriding methods) . . . . . . . . . . . . . . . . . . . .
.111Klju~na re~ class: is i as . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .113
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .114Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .115
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .115Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .115Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .116
Dan 4: Istraivanje Delphijevog okruenja (Delphi IDE) 117Delphi
okruenje (Delphi IDE) . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .117Projekti u Delphiju . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.119
Nau~ite za 21 dan Delphi 4
viii
-
Datoteke koje se koriste u Delphi projektima . . . . . . . . . .
. . . . . . . .119Juniti izvornog koda . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .123
Delphijev glavni meni (main menu)i traka sa alatima (toolbar) .
. . . . . . .123Kori{}enje palete komponenti (Component palette) .
. . . . . . . . . . . . . . . .125
Postavljanje vi{e kopija komponenti . . . . . . . . . . . . . .
. . . . . . . . . . . .125Postavljanje i centriranje komponenti na
formi . . . . . . . . . . . . . . . . .126Meni sadraja palete
komponenti (Component palette context menu) . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .127
Kretanje po paleti komponenti . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .127Aplikacija sa vi{e formi . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.128Dodavanje junita . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .129
Prevo|enje, kreiranje i povezivanje . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .130Prevo|enje i kreiranje drugih
Object Pascal programa . . . . . . . . . . . . . .132
Vi{e o Delphijevim formama . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .133Forme glavnog prozora . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .133Forme
okvira za dijalog . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .133Sekundarni prozori nasuprot okvirima za
dijalog . . . . . . . . . . . . . . . .139Model interfejsa sa
vi{esturkim dokumentima . . . . . . . . . . . . . . . .
.139Karakteristike Key za forme . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .140Metode forme . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.143
Object Inspector (inspektor objekata) . . . . . . . . . . . . .
. . . . . . . . . . . . . . .147Selektor komponenti . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.147Kartica Properties (karakteristike) . . . . . . . . . . . . . .
. . . . . . . . . . . . .148Kartica Events (doga|aji) . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .151
Usidreni IDE prozori (Dockable IDE Windows) . . . . . . . . . .
. . . . . . . . . .152Sidri{ta . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.152Eksperimentisanje sa usidrenim prozorima . . . . . . . . . . .
. . . . . . . . .153Zabranjeno usidravanje . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .155
Primer MDI programa . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .155Kreiranje forme glavnog
prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.156Pisanje koda za stavke menija FileOpen i FileSave As . . . . .
. . .158Pisanje koda za meni Window . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .160Kreiranje MDI forme potomka . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .160Kreiranje
okvira About . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .161Doterivanje programa . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .163
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .164Radionoica . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .165
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .165Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .166Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .166
Dan 5: Model vizuelnih komponenti 169Osnove kostura (frameworks)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.169
Za{to onda treba da brinem o kosturima programa? . . . . . . . .
. . . . .170U ~emu je {tos? . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .172
Sadraj
ix
-
Biblioteka vizuelnih komponenti (VCL) . . . . . . . . . . . . .
. . . . . . . . . . . . . .173Komponente . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.174Karakteristike, metode i doga|aji . . . . . . . . . . . . . . .
. . . . . . . . . . . . .174
Otkrivanje VCL-a . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .187Klase forme i
aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .189Klase komponenti . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .189I ovo ne bi
bilo sve... . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .195
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .196Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .196
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .196Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .197Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .198
Dan 6: Rad sa dizajnerom formi i dizajnerom menija 199Rad sa
dizajnerom forme . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .199
Meni sadraja dizajnera forme . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .200Postavljanje komponenti . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .201Mrea
dizajnera forme (Form Designer grid) . . . . . . . . . . . . . . .
. . . .202Odabiranje komponenti . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .202Pomeranje komponenti . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.207Spre~avanje komponenti da se pomeraju, odnosnoda im se menja
veli~ina . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .209Re|anje, isecanje, kopiranje i lepljenje komponenti
. . . . . . . . . . . . . .209Promena veli~ine komponente . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .211Poravnavanje
komponenti . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .214Postavljanje redosleda tabulatora (tab order) . . . .
. . . . . . . . . . . . . . .220
Kreiranje primera aplikacije . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .221Korak 1: Po~etak rada na
novoj aplikaciji. . . . . . . . . . . . . . . . . . . . . .
.222Korak 2:Dodavanje trake sa alatima. . . . . . . . . . . . . . .
. . . . . . . . . . . .222Korak 4: Dodavanje memo komponente. . . .
. . . . . . . . . . . . . . . . . . .223Pokretanje programa . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.224
Molim Vas pokaite mi menije! . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .224Kreiranje glavnog menija (main
menu) . . . . . . . . . . . . . . . . . . . . . . . .225Pisanje
koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .233A sada, trenutak na koji ste
~ekali... . . . . . . . . . . . . . . . . . . . . . . . . .
.239Slobodni meniji (meniji sadraja) . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .240Kreiranje i snimanje obrazaca menija
. . . . . . . . . . . . . . . . . . . . . . . . .241
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .242Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .242
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .242Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .243Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .244
Dan 7: VCL komponente 245Pregled komponenti . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.245
Vizuelne komponente . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .246
Nau~ite za 21 dan Delphi 4
x
-
Nevizuelne komponente . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .246Karakteristika Name . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.247Vane uobi~ajene karakteristike . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .248
Karakteristika Align (poravnavanje) . . . . . . . . . . . . . .
. . . . . . . . . . .248Karakteristika Color (boja) . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .248Karakteristika
Cursor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .250Karakteristika Enabled . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .250Karakteristika Font . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .251Karakteristika Hint . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .253Karakteristike ParentColor,
ParentCtl3D, ParentFont i ParentShowHint . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .254Karakteristika Tag . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.254Ostale uobi~ajene karakteristike . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .254
Primarne metode komponenti . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .255Uobi~ajeni doga|aji . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.257Klasa TStrings . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .258Standardne Windows
komponente za kontrolu . . . . . . . . . . . . . . . . . . . .
.260
Edit kontrole . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .261Komponente ListBox i
ComboBox . . . . . . . . . . . . . . . . . . . . . . . . .
.266Tipovi VCL dugmadi . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .270Komponenta Label . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.278Komponenta ScrollBar (traka za pomeranje teksta) . . . . . . .
. . . . .279
Komponenta Panel . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .280I to nije sve... . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .280Uobi~ajeni okviri za dijalog . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .281
Metoda Execute . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .281Okviri za dijalog File Open i
File Save . . . . . . . . . . . . . . . . . . . . . . . .282Okviri
za dijalog File Open Picture i File Save Picture (Otvori datoteku
slike i Snimi datoteku slike). . . . . . . . . . . . . . . . . .
.285
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .287Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .287
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .287Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .289Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .289
Pregled sadraja prve nedelje 291
Druga nedelja na prvi pogled 295Dan 8: Kreiranje aplikacija u
Delphiju 297
Rad sa skladi{tem objekata (Object Repository) . . . . . . . . .
. . . . . . . . . . .298Kartice i opcije skladi{ta objekata . . . .
. . . . . . . . . . . . . . . . . . . . . . . .298Kreiranje novih
objekata u skladi{tu objekata . . . . . . . . . . . . . . . . .
.302Dodavanje objekata u skladi{te objekata . . . . . . . . . . . .
. . . . . . . . . . .303Dodavanje projekata u skladi{te objekata .
. . . . . . . . . . . . . . . . . . . . .305
Sadraj
xi
-
Kreiranje formi i aplikacija kori{}enjem ~arobnjaka (Wizards) .
. . . . . . . .307Kori{}enje ~arobnjaka za dijaloge . . . . . . . .
. . . . . . . . . . . . . . . . . . . .308Kreiranje aplikacija
kori{}enjem ~arobnjaka za aplikacije (ApplicationWizard) . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .309
Dodavanje metoda i polja podataka u kod . . . . . . . . . . . .
. . . . . . . . . . . . .313Kako Delphi upravlja dekleracijama
klasa . . . . . . . . . . . . . . . . . . . . . .314Dodavanje
metoda u Va{ kod . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .316Dodavanje polja podataka klasa . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .318Brisanje koda koje je
Delphi generisao . . . . . . . . . . . . . . . . . . . . . . .
.318
Kreiranje obrazaca komponenti . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .319Kori{}enje resursnih datoteka . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.321
Resursi u Delphiju . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .322Prevo|enje resursnih datoteka .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.323Povezivanje resursnih datoteka sa izvr{nom datotekom . . . . .
. . . . .325Primer programa koji koristi resurse . . . . . . . . .
. . . . . . . . . . . . . . . .325
Kori{}enje paketa . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .330[ta je paket? . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .330Stati~ko povezivanje nasuprot dinami~kog povezivanja
. . . . . . . . . . .331Kori{}enje paketa koji se koriste u toku
rada Va{ih aplikacija . . . . . .334Isporu~ivanje aplikacija koje
koriste pakete . . . . . . . . . . . . . . . . . . . .334
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .335Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .335
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .335Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .337Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .337
Dan 9: Projekti, editor koda (Code Editor) i prozor za
ispitivanje koda (Code Explorer) 339Svakome treba projekt . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .339Kori{}enje menadera projekta . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .340
Projektne grupe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .340Prozor menadera projekta . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.342Kreiranje i kori{}enje projektnih grupa . . . . . . . . . . . .
. . . . . . . . . . .346Pravljenje projekata, ili projektnih grupa
. . . . . . . . . . . . . . . . . . . . . .347
Razumevanje opcija projekta . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .348Kartica Forms (forme) . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.348Kartica Application (aplikacija) . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .351Kartica Compiler (prevodilac) . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .352Kartica
Linker (program za povezivanje) . . . . . . . . . . . . . . . . . .
. . . .353Kartica direktorijumi/uslovi . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .355Kartica za podatke o
verziji (Version Info) . . . . . . . . . . . . . . . . . . . .
.357Kartica paketa (Packages) . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .359
Delphi-jev editor koda . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .359Osnovne operacije editora
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.360Posebne mogu}nosti editora . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .365
Nau~ite za 21 dan Delphi 4
xii
-
Meni sadraja editora koda . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .374Promena opcija editora . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
Prozor za ispitivanje koda (Code Explorer) . . . . . . . . . . .
. . . . . . . . . . . . .381Meni sadraja prozora za ispitivanje
koda . . . . . . . . . . . . . . . . . . . . . .381Navigacija
junitom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .382Dodavanje koda kori{}enjem prozora za
ispitivanje koda . . . . . . . . .382Opcije prozora za ispitivanje
koda . . . . . . . . . . . . . . . . . . . . . . . . . . . .384
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .385Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .385
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .385Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .386Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .387
Dan10: Debagiranje Va{ih aplikacija 389Za{to koristiti debager?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .390Opcije menija za debagiranje . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .390Kori{}enje ta~aka
prekida (breakpoints) . . . . . . . . . . . . . . . . . . . . . . .
. . .392
Postavljanje i uklanjanje ta~aka prekixda . . . . . . . . . . .
. . . . . . . . . . .392Prozor sa spiskom ta~aka prekida . . . . .
. . . . . . . . . . . . . . . . . . . . . . .393Jednostavne ta~ke
prekida (simple breakpoints) . . . . . . . . . . . . . . .
.396Uslovne ta~ke prekida (conditional breakpoints) . . . . . . . .
. . . . . . . .396Komanda za rad do kursora (Run to Cursor) . . . .
. . . . . . . . . . . . . . .397
Pra}enje promenljivih . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .398Obla~i} za savet za
izra~unavanje izraza . . . . . . . . . . . . . . . . . . . . . .
.398Meni sadraja liste za pregled . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .400Kori{}enje okvira za dijalog Watch
Properties (karakterisatike pregleda) . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .400Aktiviranje i deaktiviranje
elemenata za pregled . . . . . . . . . . . . . . . .402Dodavanje
promenljivih na listu za pregled . . . . . . . . . . . . . . . . .
. . .402Kori{}enje spiska za pregled . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .402
Debager inspektor (Debug Inspector) . . . . . . . . . . . . . .
. . . . . . . . . . . . . .405Kartice debager inspektora . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .406Meni
sadraja debager inspektora . . . . . . . . . . . . . . . . . . . .
. . . . . . . .406
Ostali alati za debagiranje . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .407Okvir za dijalog za
prikazivanje/izmenu (Evaluate/Modify) . . . . . . . .407Prozor
steka poziva . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .409Prozor procesora (CPU window) . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .410Komanda za prelazak
na adresu (Go to Address) . . . . . . . . . . . . . . . .410
Prolazak kroz kod korak po korak . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .411Simboli ljeba za debagiranje . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.411Presko~i (Step Over) i prati kroz (Trace Into) . . . . . . . .
. . . . . . . . . .412
Debagiranje DLL datoteka . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .414Prozor za evidenciju doga|aja
(Event Log window) . . . . . . . . . . . . . . . . .415Prozor
modula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .416Tehnike debagiranja . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .417
Sadraj
xiii
-
Funkcija OutputDebugString . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .417Pra}enje gre{aka pristupa . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .418Kratki
saveti za debagiranje . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .420
Opcije debagera . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .421Kartica General . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .421Kartica Event Log . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .422Kartica Lenguage
Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .423Kartica OS Exceptions . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .424
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .424Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .425
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .425Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .426Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .427
Dan 11: Delphi-jevi alati i opcije 429Kori{}enje editora slika
(Image Editor) . . . . . . . . . . . . . . . . . . . . . . . . . .
.429
Boje prednjeg plana (foreground) i pozadina (background) . . . .
. . . .430Transparentne i inverzne boje . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .431Alati za crtanje editora slika
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.432Zumiranje . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .433Paleta Line Width . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .434Rad sa bitmapiranim datotekama . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .434Rad sa ikonama . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.436Rad sa kursorima . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .438Meniji sadraja editora slika
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.439Kreiranje resursnih projekata . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .439
WinSight: {pijuniranje Windows-a . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .441Windows sistem za poruke . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .442Stablo
prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .443Prozor za pra}enje poruka . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.444[pijuniranje prozora . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .445Opcije za pra}enje poruka . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.445Druge mogu}nosti programa WinSight . . . . . . . . . . . . . .
. . . . . . . . . .447Traenje prozora . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .448
TDUMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .448Package Collection
Editor (editor zbirke paketa) . . . . . . . . . . . . . . . . . .
.450Konfigurisanje Delphi-jevog menija alata . . . . . . . . . . .
. . . . . . . . . . . . . . .450
Kori{}enje okvira za dijalog za konfigurisanje alata . . . . . .
. . . . . . . .450Dodavanje alata u meni . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .451Alati za editovanje
u okviru menija . . . . . . . . . . . . . . . . . . . . . . . . . .
.452Pode{avanje opcija okruenja . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .452Kartica Preferences (prioriteti) . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .453Kartica
Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .454Kartica Palette . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.455
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .456
Nau~ite za 21 dan Delphi 4
xiv
-
Radionica . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .456Pitanja i
odgovori . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .456Kviz . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.457Vebe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .458
Dan 12: Programiranje grafike i multimedije 459Grafika na
jednostavniji na~in . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .459Kontekst ure|aji i klasa TCanvas . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .460GDI objekti
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .463
Pera, ~etke i fontovi . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .463Bitmape i palete . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .468Regioni za isecanje . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .468
Osnovne operacije crtanja . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .470Crtanje teksta . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .471Crtanje bitmapa . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .477
Vanekranske bitmape . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .479Kreiranje memorijske
bitmape . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.479Snimanje memorijske bitmape . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .480Primer programa za memorijsku bitmapu .
. . . . . . . . . . . . . . . . . . . .482
Programiranje multimedije . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .484Wave audio u saradnji sa
Windows API-jem . . . . . . . . . . . . . . . . . . .
.485Komponenta TMediaPlayer . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .486Karakteristike, metode i doga|aji
komponente MediaPlayer . . . . .487Wave audio . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.489Pode{avanje izlazne ja~ine . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .490Snimanje wave audio datoteke . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .491MIDI
audio datoteke . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .493
CD audio datoteke . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .494AVI video datoteke . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .495
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .496Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .497
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .497Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .498Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .498
Dan 13: Iza osnova Delphi-ja 499Kreiranje ukrasa za prozore . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.499
Trake sa alatima (toolbars) . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .499Komponenta CoolBar . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.501Komponenta ToolBar . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .504Usidrene trake sa alatima . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.511Statusne trake (status bars) . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .512
Dodavanje funkcionalnosti sa aktiviranjem komandi . . . . . . .
. . . . . . . . . .518Aktiviranje komandi kori{}enjem komponenti
TActionList i TAction . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .519Implementacija aktiviranja komandi . . .
. . . . . . . . . . . . . . . . . . . . . . .519
Sadraj
xv
-
[tampanje u Delphi aplikacijama . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .525Uobi~ajeni okviri za dijalog
Print ({tampanje) . . . . . . . . . . . . . . . . . .526[tampanje
na jednostavan na~in . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .529[tampanje kori{}enjem komponente QuickReport . . . .
. . . . . . . . .530[tampanje na tei na~in . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .531[tampanje bitmape
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .537
Kori{}enje kursora . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .537Osnovni pojmovi o
kursorima . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .537U~itavanje i kori{}enje stek kursora . . . . . . . . . . . .
. . . . . . . . . . . . . .539U~itavanje i kori{}enje korisni~ki
definisanih kursora . . . . . . . . . . . .540
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .541Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .541
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .541Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .543Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .543
Dan 14: Napredno programiranje 545Pravljenje kontekstno
osetljive pomo}i . . . . . . . . . . . . . . . . . . . . . . . . .
. .545
Pravljenje fajla sa tekstom pomo}i . . . . . . . . . . . . . . .
. . . . . . . . . . . .546Identifikatori konteksta i HelpContext
osobina . . . . . . . . . . . . . . . . .547Obezbe|ivanje
kontekstno osetljive pomo}i . . . . . . . . . . . . . . . . . . .
.548Kori{}enje fajlova zaglavlja sa sistemom za pomo} . . . . . . .
. . . . . . .550Zaokruivanje sistema za rad sa konteksno osetljivom
pomo}i . . . .552
Kontrola gre{aka kori{}enjem obrade izuzetaka . . . . . . . . .
. . . . . . . . . . .553Klju~ne re~i za obradu izuzetaka: try,
except, finally i raise . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .554Generisanje izuzetaka . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.555Kori{}enje klju~ne re~i finally . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .559Prihvatanje neobra|enih izuzetaka na
nivou programa . . . . . . . . . . .559Otkrivanje gre{aka u
programima u kojima se koristi obrada izuzetaka . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .560
Kori{}enje Registry-a . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .561Registry klju~evi . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .562Tipovi podataka u Registry-ju . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .563Klasa TRegistry . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.563Kori{}enje klase TRegistry . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .566
Posebna obrada poruka . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .573Detaljnije upoznavanje sa
Windows-ovim porukama . . . . . . . . . . . . .574Dva na~ina za
slanje poruka . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .576Obrada doga|aja . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .577Obrada ostalih
Windows-ovih poruka . . . . . . . . . . . . . . . . . . . . . . . .
.578Korisni~ki-definisane poruke . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .582
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .583Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .583
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .584
Nau~ite za 21 dan Delphi 4
xvi
-
Kviz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .585Vebe . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .585
Pregled sadraja druge nedelje 587
Tre}a nedelja na prvi pogled 591Dan 15: COM i ActiveX 593
Razumevanje COM . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .594Terminologija COM-a . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.595Brojanje referenci . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .597IUnknown interfejs . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .597Kreiranje COM objekta . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .598
Obja{njenje ActiveX-a . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .612Kori{}enje tu|ih ActiveX
kontrola . . . . . . . . . . . . . . . . . . . . . . . . . .
.612Kreiranje novih ActiveX kontrola . . . . . . . . . . . . . . .
. . . . . . . . . . . . .614Izmena podrazumevane ikone u paleti
komponenti . . . . . . . . . . . . . .621
Kori{}enje ActiveX kontrola i aktivnih formi na Web-u . . . . .
. . . . . . . . .622Web Deployment opcije . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .622Postavljanje
kontrole na Web . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .625
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .625Radionica . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .626
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .626Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .627Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .628
Dan 16: Arhitektura baza podataka u Delphi-ju 629Osnove baza
podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .629
Lokalne baze podataka . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .631Klijent/server baze podataka . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.631Single-tier, Two-tier i Multitier arhitektura baza podataka . .
. . . . . .632
Borland Database Engine (BDE) . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .633BDE drajveri . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.633BDE alias-i . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .634Baze podataka koje su
ugra|ene u Delphi . . . . . . . . . . . . . . . . . . . . .634SQL
Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .635
Delphi-jeve komponente za rad sa bazama podataka . . . . . . . .
. . . . . . . .635TDataSet Klasa . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .637Table
komponenta . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .642Query komponenta . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.649StoredProc komponenta . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .652UpdateSQL komponenta . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.654DataSource komponenta . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .654Session komponenta . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.655Database komponenta . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .655BatchMove komponenta . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .657
Sadraj
xvii
-
Field komponenta . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .658Komponente za klijent/server baze
podataka . . . . . . . . . . . . . . . . . . . . . .662Kreiranje
BDE alias-a . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .662
Kreiranje alias-a uz pomo} BDE Administrator-a . . . . . . . . .
. . . . . .662Kreiranje alias-a kroz kod . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .664
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .664Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .664
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .664Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .665Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .666
Dan 17: Pravljenje formi za rad sa bazama podataka 667Database
Form Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .667
Pravljenje jednostavne forme kori{}enjem Database Form Wizard-a
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.668Nova forma na delbnm . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .672Pravljenje master/detail forme .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .673
Ru~no pravlje formi za rad sa bazama podataka . . . . . . . . .
. . . . . . . . . . .675Pogled iz blizine na komponente za rad sa
podacima . . . . . . . . . . . . . . . .677
Zajedni~ke osobine komponenti za rad sa podacima . . . . . . . .
. . . . .678DBGrid komponenta . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .678DBNavigator komponenta .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.679DBText komponenta . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .680DBEdit komponenta . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.680DBMemo komponenta . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .680DBImage komponenta . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.680DBListBox i DBComboBox komponente . . . . . . . . . . . . . . .
. . . . . . . .681DBCheckBox komponenta . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .681DBRadioGroup komponenta
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.682DBLookupListBox i DBLookupComboBox komponente . . . . . . . . .
. .682DBRichEdit komponenta . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .682DBCtrlGrid komponenta . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .682Ostale
komponente za rad sa podacima . . . . . . . . . . . . . . . . . . .
. . . .684
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .684Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .684
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .684Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .685Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .686
Dan 18: Pravljenje programa za rad sa bazama podataka
687Programiranje baza podataka bez vizuelnih komponenti . . . . . .
. . . . . . .687
^itanje iz baze podataka . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .688Pravljenje baze podataka kroz kod
. . . . . . . . . . . . . . . . . . . . . . . . . . .691
Kori{}enje modula za rad sa podacima . . . . . . . . . . . . . .
. . . . . . . . . . . . . .698Postavljanje jednostavnog modula za
rad sa podacima . . . . . . . . . . . .699
Nau~ite za 21 dan Delphi 4
xviii
-
Dodavanje modula za rad sa podacima na formu . . . . . . . . . .
. . . . . .700Pokretanje modula za rad sa podacima . . . . . . . .
. . . . . . . . . . . . . . . .701
Generisanje izve{taja . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .702Pregled QuickReport
komponenti . . . . . . . . . . . . . . . . . . . . . . . . . . .
.702Ru~no generisanje izve{taja . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .705Jednostavnije kreiranje izve{taja .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .707
Isporu~ivanje programa za rad sa bazamapodataka napravljenog u
Delphi-ju . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .708Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .708Radionica . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .709
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .709Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .710Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .710
Dan 19: Pravljenje i kori{}enje DLL-ova 711Upoznavanje sa
DLL-ovima . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .711
[ta je DLL? . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .712Za{to biste trebali da
koristite DLL-ove? . . . . . . . . . . . . . . . . . . . . .
.713
Sastav celine DLL-a . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .716Osnove pisanja DLL-ova .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .717
Funkcije i procedure u DLL-ovima . . . . . . . . . . . . . . . .
. . . . . . . . . . .717Klju~na re~ exports . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .718Kori{}enje
DLLProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .719
U~itavanje DLL-ova . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .721Stati~ko u~itavanje . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .721Dinami~ko u~itavanje . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .722
Pozivanje funkcija i procedura koje se nalaze u DLL-u . . . . .
. . . . . . . . . .722Pozivanje kori{}enjem stati~kog u~itavanja .
. . . . . . . . . . . . . . . . . . .722Pozivanje funkcija i
procedura kori{}enjem dinami~kog u~itavanja . . . . . . . . . . . .
. . . . . . . . . . . . . . .724
Pravljenje DLL projekta sa Object Repository-jem . . . . . . . .
. . . . . . . . .725Kori{}enje formi u DLL-ovima . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .730
Pravljenje DLL-a koji sadri formu . . . . . . . . . . . . . . .
. . . . . . . . . . . .730Pozivanje MDI forme iz DLL-a . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .733
Kori{}enje resursa iz DLL-ova . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .735Pravljenje DLL-a sa resursima .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.736Kori{}enje DLL-a sa resursima . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .736
Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .737Radionica . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .737
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .737Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .738Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .739
Dan 20: Pravljenje komponenti 741Pravljenje nove komponente . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.741
New Component dijalog-prozor . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .742
Sadraj
xix
-
Pravljenje FlashingLabel komponente . . . . . . . . . . . . . .
. . . . . . . .744Register procedura . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .745
Osobine i metode komponente . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .746Osobine . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .746Pisanje metoda za komponente . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .752
Dodavanje funkcionalnosti TFlashingLabelkomponenti . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .752
Deklaracija klase . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .756Published deo . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .756Implementation deo . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .757SetFlashRate procedura . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.757ComponentState osobina . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .758
Testiranje komponente . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .759Postavljanje komponente na
paletu sa komponentama . . . . . . . . . . . . . . .762
Postavljanje proizvoljne bitne mape na taster komponente . . . .
. . . .763Pravljenje doga|aja za komponente . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .764
Pregled doga|aja . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .765Prepisivanje doga|aja bazne
klase . . . . . . . . . . . . . . . . . . . . . . . . . . .
.770
Sastavljanje celine . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .771Zaklju~ak . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .777Radionica . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.777
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .777Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .778Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .779
Dan 21: Delphi i C++Builder 781Sli~nosti izme|u Delphi-ja i
C++Builder-a . . . . . . . . . . . . . . . . . . . . . . . .781
Razvojna okruenja (IDE-ovi) . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .781VCL (Visual Component Library) . . . .
. . . . . . . . . . . . . . . . . . . . . . . .783Fajlovi sa
formama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .784Paketi . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.784
Razlike izme|u Delphi-ja i C++Builder-a . . . . . . . . . . . .
. . . . . . . . . . . . .784Programski jezik . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.785Ekstenzije fajlova . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .785Razvojno okruenje (IDE) . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.785Editor koda (Code Editor) . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .786Code Explorer . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.786Unapre|enja VCL-a . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .786C++Builder moe da prevodi Pascal
celine . . . . . . . . . . . . . . . . . . . .787Podr{ka za ActiveX
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .787Delphi prevodi bre i proizvodi manje EXE fajlove . .
. . . . . . . . . . . .787
Konvertovanje iz Delphi-ja u C++Builder . . . . . . . . . . . .
. . . . . . . . . . . .788Kopiranje Delphi-jevih formi . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .788Konverzija
koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .790
Nau~ite za 21 dan Delphi 4
xx
-
Ponovno kori{}enje formi . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .794Zaklju~ak . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .794Radionica . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .794
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .795Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .795Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .796
Pregled sadraja tre}e nedelje 797Dodatni dan: Pravljenje
Internet programa 799
Delphi-jeve Internet komponente . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .799Pravljenje WebBrowser-a . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.801
Kome treba jo{ jedan Web Browser? . . . . . . . . . . . . . . .
. . . . . . . . . .801Prvi koraci u pravljenju Va{eg Web Browser-a
. . . . . . . . . . . . . . . . . .802Dodavanje pokaziva~a procesa
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.804Zavr{ne operacije . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .805
Kori{}enje Internet Explorer-a u obliku ActiveX kontrole . . . .
. . . . . . . .810Slanje elektronske po{te . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
.812Isporu~ivanje Internet programa . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .814Zaklju~ak . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .815Radionica . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .815
Pitanja i odgovori . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .815Kviz . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .816Vebe . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .816
DodaciA: Odgovori na test pitanja 817B: Sadraji na Internet-u
vezani za Delphi 839
Kompanija INPRISE . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .839Komercijalni Web sajtovi .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . .839Korisni~ki Web sajtovi . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .840News grupe . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .841Publikacije . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.841Indeks 843
Sadraj
xxi
-
xxii
-
Po~etak rada sa Delphijem^estitamo - odabrali ste jedan od
trenutno najaktuelnijih alata za programiranje! Prenego {to po~nete
da koristite sve {to Delphi moe da ponudi morate nau~iti ne{to
oDelphi IDE i o Object Pascal-u. U ovom poglavlju }ete na}i:
44Brz pregled Delphija.
44Uvod u jezik Object Pascal.
44^injenice o Pascal junitima (units), promenljivima i tipovima
podataka.
44Diskusiju o nizovima.
44 Informacije o stringovima u Pascal-u.
[ta je Delphi?Do sada ste verovatno znali da je Borlandov Delphi
najbolje prodavani proizvod zabrzo razvijanje aplikacija (RAD -
Rapid Application Development) koji se koriti zapisanje Windows
aplikacija. Sa Deflijem moete pisati Windows programe bre i
jednostavnije nego {to je to bilo mogu}e ranije. Moete kreirati
Win32 konzolneaplikacije, odnosno Win32 programe za grafi~ki
korisni~ki interfejs (GUI - GraphicalUser Interface). Kada kreirate
Win32 GUI aplikacije koriste}i Delphi, dostupna Vamje sva snaga
istinskog prevodioca (Object Pascal programski jezik) uba~enog u
RADokruenje. Ovo zna~i da moete da kreirate korisni~ki interfejs za
program (korisni~ki interfejs zna~i menije, dijalog bokseve, glavni
prozor, itd.) kori{}enjemtehnike prevuci-i-pusti (drag-and-drop)
koja se koriste kod pravih okruenja za brzi
Dan 1
-
razvoj aplikacija. Tako|e, moete da koristite ActiveX kontrole u
Va{im formamakako biste kreirali specijalizovane programe poput Web
browsera za par minuta.Delphi Vam daje sve to bez dodatnih
tro{kova: Ne morate rtvovati brzinuizvr{avanja programa, po{to
Delphi generi{e brz prevedeni kod.
Mogu Vas ~uti kako govorite, Ovo }e biti kul! I poga|ate, u
pravu ste! Ali pre nego{to se suvi{e uzbudite, moram Vam napomenuti
da jo{ uvek treba da radite i u~ite oPascal programiranju. Ne elim
da Vam se u~ini da moete da kupite program poputDelphija i
postanete majstor za Windows programiranje preko no}i. Potrebno
jepuno raditi da biste postali dobar Windows programer. Delphi
obavlja veliki deoposla rade}i u pozadini sa detaljima niskog novoa
koji ~ine osnovu Windows progra-ma, ali Delphi ne moe pisati
programe umesto Vas. Na kraju Vi jo{ uvek morate bitiprogramer i to
zna~i da morate nau~iti da programirate. Ovo moe biti dugo penjanje
uz brdo jednog dana. Dobre vesti su da Delphi moe da u~ini Va{
putuglavnom bezbolnim i ~ak zabavnim. Da, moete raditi i zabavljati
se uz rad!
Zato zasucite rukave i obujte cipele za {etnju. Delphi je
odli~an proizvod, zato sezabavljajte.
Kratak pogled na Delphi okruenje (Delphi IDE)Ovo poglavlje sadri
kratak pregled Delphi integrisanog okruenja za razvoj
(IntegratedDevelopment Environment - IDE). Sada }u Vam ukratko
predstaviti okruenje, adetaljnije }u ga objasni}u u lekciji dana 4,
Istraivanje Delphi okruenja. Po{to ste seprihvatili Windows
programiranja, pretpostavljam da ste dovoljno napredovali
dashvatite kako da startujete Delphi. Kada ste prvi put startovali
program, pred Vama sena{la prazna forma i okruenje, kao {to je
prikazano na slici 1.1.
Slika 1.1 Delphi okruenjei inicijalna praznaforma
Nau~ite za 21 dan Delphi 4
6
1
-
Delphi okruenje je podeljeno na tri dela. Gornji prozor se moe
uzeti kao glavniprozor. On sadri trake za alate (tool bars) i
paletu komponenti (component palette).Delphi traka za alate Vam
omogu}ava da jednim klikom mi{a pokrenete poslove kao{to je
otvaranje, snimanje i prevo|enje projekta. Paleta komponenti sadri
{irokspektar komponenti koje moete ubaciti u Va{e forme (komponente
su tekst natpisi,kontrole za editovanje, list boksevi, dugmad i
sli~no). Radi udobnosti komponente supodeljene u grupe. Da li ste
zapazili jezi~ke du gornjeg dela palete komponenti?Kliknite na ove
jezi~ke i istraite koje su Vam komponente dostupne. Da
bistepostavili komponentu na Va{u formu jednostavno kliknite na
dugme komponente uokviru palete komponenti a zatim kliknite na
mesto u okviru forme gde biste elelida se pojavi Va{a komponenta.
Nemojte brinuti o tome {to jo{ uvek ne znate kakose koriste
komponente. Ovo }ete nau~iti za kratko vreme. Kada ste zavr{ili
saistraivanjem, kliknite na jezi~ak sa natpisom Standard, po{to }e
Vam ubrzo bitipotreban.
Komponenta (component) je odvojena softverska komponenta
kojaizvr{ava odre|enu unapred definisanu funkciju, kao {to je tekst
natpis, edit kontrola, odnosno okvir za liste (list box).
Inspektor objekata (object Inspector)Ispod glavnog prozora na
levoj strani ekrana se nalazi Object Inspector. Koriste}iObject
Inspector moete menjati karakteristike komponenti i doga|aja. U
toku radasa Delphijem uvek }ete koristiti Object Inspector. Object
Inspector ima dva jezi~ka:jezi~ak Properties (karakteristike) i
jezi~ak Events (doga|aji). Karakteristike komponenata upravljaju
radom komponenti. Na primer, promenom karakteristikeColor odre|ene
komponente menja se boja pozadine ove komponente. Lista
kara-kteristika koje su dostupne razlikuje se od komponente do
komponente, iako kom-ponente uglavnom imaju nekoliko zajedni~kih
elemenata (karakteristike Width iHeight - {irina i visina, na
primer).
Karakteristika (property) odre|uje operaciju komponente.
Jezi~ak Events sadri listu doga|aja za odre|enu komponentu.
Doga|aji se pojavlju-ju kada korisnik interaguje sa komponentom. Na
primer, kada se klikne na kompo-nentu, generi{e se doga|aj koji
govori o tome da je na komponentu kliknuto. Moetepisati kod koji
odgovara na ove doga|aje, izvr{avaju}i posebna dejstva kada
sedoga|aj pojavi. Kao {to je to slu~aj sa karakteristikama i
doga|aji na koje kompo-nenta moe reagovati se razlikuju od
komponente do komponente.
Doga|aj (event) je ne{to {to se pojavljuje kao rezultat
interakcije komponente sa korisnikom, ili sa Windows operativnim
sistemom.
Upravlja~ doga|ajima (event handler) je deo koda koji se poziva
u okviruVa{e aplikacije kao odgovor na doga|aj.
Po~etak rada sa Delphijem
7
1
-
Delphi radni prostor (workspace)Glavni deo Delphi okruenja je
radni prostor. Radni prostor inicijalno prikazuje diza-jner forme
(Form Designer). Ne treba da Vas iznenadi ~injenica da Vam
dizajnerformi (Form Designer) omogu}ava da kreirate forme. U
Delphiju forma predstavljaprozor u okviru Va{eg programa. Forma moe
biti glavni prozor programa, dijalogboks, odnosno bilo koji drugi
tip prozora. Moete koristiti Form Designer dapostavite, pomerite,
odnosno promenite veli~inu komponente u toku procesa
njenogkreiranja.
Iza Form Designer-a se krije editor koda (Code Editor). U editor
koda (Code Editor)upisujete kod kada pi{ete Va{e programe. U toku
kreiranja aplikacije Object Inspector,Form Designer, Code Editor i
Component Palette se koriste za interaktivni rad.
Sada kada ste videli od ~ega se sastoji Delphi okruenje, krenimo
da uradi-mo ne{to.
Va{ prvi program: Hello WorldOvo je tradicionalno. Gotovo sve
knjige o programiranju za po~etak Vam nude danapravite program koji
prikazuje na ekranu natpis Hello World. Bio sam uisku{enju da
uradim ne{to drugo, ali tradicija nije snaga na koju ne treba
ra~unati,zato evo programa Hello World. Potrebno je da uradite neke
poslove unapred okojima }ete u~iti u narednim poglavljima, zato }u
Vam pruiti ose}aj Delphijevihdobrih strana pre nego {to po~nete da
u~ite, o~ito manje glamurozne, osnove Pascaljezika. Zato se prvo
zabavite. Delphi (i njegov ro|ak C++Builder) Vam dajeverovatno
najbri na~in da stignete do Hello World u odnosu na bilo koje
Windowsprogramsko okruenje dana{njice.
Kreiranje programaVerovatno Vam je do sada Delphi pokrenut i
verovatno ve} gledate u praznu formu.Ova forma je generi~ki nazvana
Form1. (Naziv forme je vaan u Delphiju, ali }u Vamne{to vi{e re~i o
tome malo kasnije.) Na levoj strani forme, Object Inspectorpokazuje
karakteristike forme. Kliknite na naslovnu traku Object
Inspector-a.Karakteristika Caption je istaknuta i kursor stoji na
njoj, ~ekaju}i da ne{to uradite(ako karakteristika Caption nije
vidljiva, moda }ete morati da pomerite prozorObject Inspector-a da
biste je prona{li. Karatkeristike su pore|ane abecednimredom.)
Kucajte Hello World!, da biste promenili naslov forme.
Kako modifikujete karakteristike, Delphi istovremeno prikazuje
ove rezultate, ukoliko jemogu}e da se promena karakteristike
prikae. Kada menjate naslov, zapazite da se naslov prozora forme
menja kao odraz teksta koji ste ukucali.
Nau~ite za 21 dan Delphi 4
8
1
-
Sada kliknite na dugme Run u okviru trake sa alatima (dugme sa
zelenom strelicom).(Moete isto tako pritisnuti taster F9, odnosno
izabrati opciju Run/Run iz glavnogmenija.) Pre nego {to budete
shvatili {ta se de{ava, Delphi je napravio program.Forma je
prikazana, a naslov ispisuje Hello World!. U ovom slu~aju pokrenuti
program izgleda potpuno isto kao prazna forma. Moda }ete sa uasom
primetiti dase program prikazuje na istoj lokaciji gde je prikazana
forma u okviru FormDesigner-a. (Postoji razlika u pojavi po{to Form
Designer prikazuje mreu za pora-vnavanje, dok je pokrenuti program
ne prikazuje.) ^estitamo- upravo ste napisaliVa{ prvi Windows
program na Delphiju. Hej, ovo je bilo lako!
Ali {ta je to? pita}ete. Ovo ba{ i nije ne{to. Slaem se, ali ovo
je pravi Windowsprogram. Probajte ga i uveri}ete se. Glavni prozor
programa moe biti pomerenhvatanjem za naslovnu traku, moe mu biti
promenjenja veli~ina, moe biti umanjen,moe biti maksimiziran i moe
se zatvoriti klikom na taster Close. Moete ~akprona}i ovaj program
u okviru Windows Explorer-a (verovatno }e biti u Va{emdirektorijumu
\Delphi40\Bin pod nazivom Project1.exe) i pokrenuti gadvostrukim
klikom.
Izmena programaU redu, moda je prikazivanje natpisa Hello World
u okviru naslova bila malavarka. Hajde da ga malo pro{irimo.
Ukoliko je Va{ program Hello World jo{ uvekaktivan, zatvorite ga
klikom na dugme Close u gornjem desnom uglu prozora. FormDesigner
je prikazan ponovo i omogu}eno Vam je da izmenite formu (a kao
rezultattoga izmenite i program).
Da biste pobolj{ali program dodajte tekst u sredi{te prozora.
Ovo moete u~initidodavanjem tekst naslova formi:
1. Prvo kliknite na jezi~ak Standard u okviru palete komponenti.
Tre}e dugmekomponenti na paleti sadri slovo A. Ako postavite kursor
mi{a na ovo dugme,obla~i} za savet (tooltip-mali prozor) }e
prikazati natpis Label.
2. Kliknite na dume za natipis a zatim kliknite na bilo koje
mesto u okviru forme.Komponenta natpis }e biti postavljena na formu
sa generi~kim naslovomLabel1.
3. Sada prebacite panju na Object Inspector. On sada prikazuje
karakteristikekomponente Label1 (zapamtite da je prethodno
prikazivao karakteristike komponente Form1). Ponovo je
karakteristika Caption istaknuta.
4. Kliknite na naslovnu traku Object Inspector-a, odnosno na
karakteristikuCaption i ukucajte Hello World!. Sada natpis na formi
prikazuje HelloWorld!.
Po~etak rada sa Delphijem
9
1
-
5. Koliko god elite moete menjati veli~inu teksta natipisa. Dva
puta kliknite nakarakteristiku Font. Karakteristika }e se pro{iriti
kako bi prikazali dodatniatributi fonta.
6. Prona|ite karakteristiku Size unutar karakteristike Font i
promenite veli~inufonta na 24 (trenutno je pode{eno na 8). Ubrzo
nakon {to ste pritisnuli tasterEnter, odnosno kliknuli na formu,
natpis }e promeniti veli~inu.
Po{to natpis najverovatnije ne}e biti centriran, moda }ete
poeleti da ga pomerite.Da biste pomerili komponentu, jednostavno
kliknite na nju i odvucite je na mesto nakom elite da se nalazi.
Kada se natpis bude nalazio na mestu na kom elite da bude,spremni
ste da ga ponovo prevedete i pokrenete program. Ponovo kliknite na
dugmeRun i u slede}em trenutku program }e biti pokrenut. Sada
vidite natpis HelloWorld! koji je prikazan u sredini forme na isti
na~in na koji je upisan u karakteri-stiku Caption. Slika 1.2
prikazuje rad programa Hello World!.
Zatvaranje programaSa ovim kratkim osvrtom na Delphi moete
videti da je pisanje Windows programakori{}enjem Delphija puno
interesantnije nego {to je to bilo u starim dobrim vremenima. Da
biste se pripremili za ono {to }ete raditi slede}e, treba da
zatvoriteteku}i projekt u okviru Delphi okruenja. Odaberite opciju
FileClose All izglavnog menija. Kliknite na dugme No kada budete
upitani da snimite promene u okviru projekta Project1, odnosno
snimite projekt, ako Vam je stalo do Va{e nove kreacije.
Va{ drugi program Hello World, deo IIPre nego {to pre|emo na
u~enje jezika Pascal potrebno Vam je jo{ malo informacija otome
kako Delphi radi. Ove informacije su Vam potrebne da biste
testirali razli~itemogu}nosti Pascal jezika koje }ete obraditi u
narednih nekoliko dana. Ovo poglavlje }esadrati samo kratak pogled
na snagu Delphija. U lekcijama dana 4, 5 i 6 u~i}etedetaljnije o
tome kako Delphi radi.
Slika 1.2. Va{ programHelloWorld! u radu
Nau~ite za 21 dan Delphi 4
10
1
-
Pisanje programa Hello World IICilj ove vebe je da se tekst
Hello World, Part II pojavi na ekranu nakon pri-tiska na dugme. Ova
veba }e Vam dati obrazac koji treba da pratite kada budetetestirali
razli~ite delove koda, koje }ete obra|ivati u narednih nekoliko
dana. Izvr{iteslede}e radnje:
1. Odaberite opciju FileNew Application iz glavnog menija da
biste pokrenulinovu aplikaciju (kliknite na No ukoliko budete
upitani da snimite teku}i projekt).
2. Kliknite na jezi~ak Standard u okviru palete komponenti a
zatim kliknite naikonu koja ima taster sa natpisom OK (komponenta
Button).
3. Pomerite kursor bilo gde u okviru forme, a zatim kliknite. Na
formi }e bitiprikazano dugme.
4. Odaberite komponentu Label i postavite je blizu centra
forme.
U ovom trenutku Va{a forma bi trebalo da bude sli~na formi na
slici 1.3. Primetiteda komponenta Label ima generi~ki naslov
Label1, a dugme generi~ki naslovButton1.
Izmena programa Hello World IIU prvoj verziji programa Hello
World, koristili ste Object Inspector da biste prome-nili
karakteristiku Caption komponente Label. Ova promena je bila
usvojena u tokudizajniranja i mogla se isto tako videti u toku rada
programa. U ovom primeru,mo}i}ete da promenite naslov komponente
Label koriste}i programski kod.
Kada menjate karakteristike komponenti koriste}i Object
Inspector i Form Designer, re}i}ete da~inite promene u toku
dizajniranja. Kada menjate karakteristike preko programskog koda
(oveizmene se izvr{avaju u toku rada programa), re}i}ete da radite
izmene u toku rada programa(runtime).
Slika 1.3 Nova forma,nakon {to supostavljene komponenteButton i
Label
Po~etak rada sa Delphijem
11
1
-
Da biste promenili karakteristiku Caption u toku rada programa,
izvr{ite slede}ekorake:
1. Dva puta kliknite na dugme u okviru Va{e forme. Ubrzo nakon
{to ste ovouradili, Delphi generi{e upravlja~ doga|ajima za doga|aj
OnClick koji seodnosi na dugme. Generisani kod izgelda otprilike
ovako:
procedure TForm1.Button1Click(Sender: TObject);begin
end;
2. U ovom trenutku ne treba da budete zabrinuti svim onim {to
ovde vidite. Jedino{to treba da razumete je da je upravlja~
doga|ajima OnClick deo koda koji }ebiti izvr{en svaki put kada se
klikne na dugme (sve dok program radi, ovo }ebiti aktuelno). Kursor
za editovanje se nalazi izme|u iskaza begin i end, i ~ekada ukucate
kod. Ubacite ovaj kod na mesto kursora:
Label1.Caption := Hello World, Part II;
Programske linije uvek uvla~im za dva prazna mesta ( {to mnogi
programerismatraju da je odgovaraju}e za kodiranje) pa bi kompletan
upravlja~ doga|ajimaizgledao ovako:
procedure TForm1.Button1Click(Sender: TObject);begin
Label1.Caption := Hello World, Part II;end
Ovaj kod je veoma jednostavan. On jednostavno dodeljuje vrednost
HelloWorld, Part II karakteristici Caption, koja pripada natpisu
(karakteristikaCaption se koristi da dodeli tekst koji ovaj natpis
prikazuje).
3. Sada kliknite na dugme Run u okviru trake za alat, da biste
pokrenuli program.Kada pokrenete program, zapazite da je natpis
zadrao stari naslov Label1.Kliknite na dugme forme i naslov natpisa
}e biti promenjen u Hello World,Part II. Hej, kako se ovo dogodilo!
Magija? Ne, samo su Delphi na delu!
U narednih nekoliko dana, radi}ete mnogo sli~nih vebi, tako da
}ete imati dostaiskustva u postavljanju natpisa, dugmadi i ostalih
komponenti na formu. Shvatam danisam u potpunosti objasnio {ta se
ovde doga|a u pozadini, ali ne elim da govorimo tome sada, po{to
sam sa~uvao obja{njenje za kasnije.
Pregled jezika Object PascalPre nego {to nau~ite ne{to o
Delphijevim RAD mogu}nostima, potrebno je danau~ite osnove jezika
Object Pascal. Ovaj deo knjige moda ne}e biti najuzbudljivijiza
Vas, ali Vam je potrebno osnovno razumevanje Object Pascal-a pre
nego {tokrenete dalje.
Nau~ite za 21 dan Delphi 4
12
1
-
Bilo bi dobro ukoliko bi predstavljanje jezika Object Pascal
moglo da se odvijasekvencijalno. Ovo nije mogu}e po{to su sve
mogu}nosti koje }ete u~iti me|usobnoispreplitane. Prikaza}u Vam
pojedine delove slagalice, a zatim ih uklapati.
Na kraju lekcije dana 3, uglavnom }ete kompletirati sliku jezika
Object Pascal.Nemojte se zabrinuti ukoliko trenutno ne moete da
zapamtite svaki koncept koji jepredstavljen. Neki od njih zahtevaju
potpuno razumevanje jezika Object Pascal imogu se shvatiti tek
nakon iskustva sa realnim aplikacijama.
U toku narednih nekoliko dana vide}ete kratke ise~ke kodova koji
ilustruju pojedinemogu}nosti jezika Object Pascal. Tako|e }ete
raditi vebe koje }e Vam omogu}iti datestirate Va{e novoste~eno
znanje. U prvih nekoliko dana vide}ete Va{e Delphiaplikacije kao
male ise~ke. Ne bih eleo da istr~avam i ulazim suvi{e duboko
uDelphi okruenje, odnosno biblioteku vizuelnih komponenti (VCL) u
ovoj ranoj fazi.Mora}ete da se zadovoljite par~i}ima i delovima, da
biste kasnije u knjizi po~eli dasagledavate kompletnu sliku. Kod
moete skinuti sa Web sajta knjige i on sadrikompletne programe za
neke od vebi koje }ete raditi u toku narednih nekoliko
dana.(Prebacite se na: http://www.mcp.com/info i kucajte
0-672-31286-7.)
Na po~etku...Vratimo se u 1994. godinu. Borland po~inje rad na
RAD alatu pod {ifrovanimnazivom Delphi. Kada je odlu~eno da
arhitektura modela komponenti predstavljanajbolji na~in za
inplementaciju RAD, bilo je neophodno opredeliti se za
programskijezik koji }e biti srce sistema.
U to vreme Borland je bio jedina firma na tri{tu prevodilaca
koja je prodavao Pascalprevodioce. Borland je isto tako bio poznat
kao kompanija koja proizvodi najboljealate za Pascal. Ako ste bili
Pascal programer, verovatno ste koristili BorlandovTurboPascal u
jednom, ili drugom obliku. Borland je vi{e ili manje
posedovaoPascal. Naravno, legalno gledano Borland nije posedovao
Pascal, ali nije bilo sumnjida njegova pozicija u svetu Pascala
dozvoljava odre|ene slobode u implementacijinovih mogu}nosti i
usavr{avanja. Dodatno, nije postojao komitet za Pascal standarde,
niti je bilo koji pisani standard definisao Pascal jezik. Zato je
Borlandnapravio Delphi koriste}i Pascal kao osnovni jezik
(Borlandov interni {ifrovani nazivje ujedno postao slubeni naziv
proizvoda).
Pre nego {to je Delphi po~eo da postoji, Borland je ve} izmenio
Pascal u pozitivnompravcu. Na primer, Borland je ve} pro{irio
Pascal kreiranjem novog jezika podnazivom Object Pascal. Moglo bi
se re}i da je Object Pascal u odnosu na Pascal isto{to i C++ u
odnosu na C. Object Pascal je dodao klase Pascalu , i tako svrstao
Pascalu svet objektno orijentisanih jezika (Object-Oriented
Programing language - OOP).Kada je Delphi bio razvijen, dodata su
nova pona{anja i klju~ne re~i koje su imaleveze sa modelom
komponenti. Dodate su klju~ne re~i poput published i
property,izme|u ostalog. Ovo je omogu}ilo Borlandu da u potpunosti
implementira snagumodela komponenti. Modifikuju}i jezik Pascal tako
da se uklopi u model kompone-
Po~etak rada sa Delphijem
13
1
-
nti, Borland je bio u mogu}nosti da na ispravan na~in
inplementira RAD. U osnovijezik Object Pascal je modifikovan koliko
je to bilo potrebno, dok su stavke vezaneza dizajn do{le nakon
razvoja tada nepoznatog proizvoda nazvanog Delphi. Kaorezultat
dobio se jezik koji radi sa modelom komponenti.
Iako je izmena jezika Pascal bila razmatrana kao veliki korak za
Borland, ovo se nijedogodilo kao presedan. Prethodno je Microsoft
modifikovao jezik Basic i napravionovi jezik pod nazivom Visual
Basic. Ovaj novi jezik je bio skoro neprepoznatljiv upore|enju sa
originalnim jezikom Basic, koji je posluio kao njegova osnova.
Borland je preuzeo rizik da modifikuje Pascal. Nakon svega imao
je osnovu lojalnihkupaca koji moda nisu mogli da prihvate izmene
jezika koji su upoznali i zavoleli.Ipak Borland je bio u dobroj
poziciji na tri{tu Pascala i krenuo je napred sa svojimplanovima.
Rezultat je bio pravi hit, naravno.
Ne}ete pogre{iti, Object Pascal je veoma mo}an programski jezik,
a ovu izjavu nekoristim ~esto. Imam iskustva sa programskim jezikom
C/C++, i poput ostalihC/C++ programera gledao sam u po~etku na
Delphi sa dozom skepticizma. Ubrzosam otkrio da je jezik Object
Pascal veoma mo}an. Ustvari, u rukama prose~nog programera skoro da
nema razlike izme|u ova dva jezika u pogledu snage. ObjectPascal je
jedinstven po tome da je mo}an i relativno lak za u~enje. Ne elim
ni nakoji na~in da odam utisak da Object Pascal nije programski
jezik koji prua punomogu}nosti. Pascal je obi~no bio shvatan kao
manje ozbiljan programski jezik. Ovonikada nije bilo ta~no i nikada
nije