kratak sadr‘aj - prof.ljiljana jovičin blagojević ... · upotreba sql buildera . . . . . . . ....

914
iii Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii Deo I: Delphi 5 i Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 Delphi 5 integrisano razvojno okru‘enje . . . . . . . . . . . . . . . . . . . . . . . 3 2 Objektno orijentisano programiranje u Delphiju . . . . . . . . . . . . . . . . 41 3 Unapre|eni Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4 VCL tehnike programiranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Deo II: Upotreba komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5 Napredna upotreba standardnih komponenata . . . . . . . . . . . . . . . . 151 6 Formulari, prozori i aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 7 Izrada korisni~kog interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 8 Upotreba razli~itih formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Deo III: Programiranje aplikacija za baze podtaka . . . . . . . . . . . . . . . . . 317 9 Izrada aplikacija za baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 319 10 Napredni pristup bazama podataka . . . . . . . . . . . . . . . . . . . . . . . . . 367 11 Klijent/server programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 12 Upotreba ADO-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Deo IV: Komponente i biblioteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 13 Kreiranje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 14 Dinami~ke biblioteke za povezivanje i paketi . . . . . . . . . . . . . . . . . . 533 15 COM programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 16 Automatizacija i ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Deo V: Prakti~ne tehnike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 17 Multitasking, vi{e procesa i sinhronizacija . . . . . . . . . . . . . . . . . . . . 643 18 Debagovanje Delphi programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 19 Jo{ Delphi tehnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 20 Internet programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 21 Paralelne (Multitier) aplikacije za baze podataka . . . . . . . . . . . . . . . 803 Kratak sadr‘aj

Upload: buidang

Post on 08-Jun-2019

230 views

Category:

Documents


0 download

TRANSCRIPT

iii

Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

Deo I: Delphi 5 i Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1 Delphi 5 integrisano razvojno okru`enje . . . . . . . . . . . . . . . . . . . . . . . 3

2 Objektno orijentisano programiranje u Delphiju . . . . . . . . . . . . . . . . 41

3 Unapre|eni Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4 VCL tehnike programiranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Deo II: Upotreba komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

5 Napredna upotreba standardnih komponenata . . . . . . . . . . . . . . . . 151

6 Formulari, prozori i aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

7 Izrada korisni~kog interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

8 Upotreba razli~itih formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Deo III: Programiranje aplikacija za baze podtaka . . . . . . . . . . . . . . . . . 317

9 Izrada aplikacija za baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 319

10 Napredni pristup bazama podataka . . . . . . . . . . . . . . . . . . . . . . . . . 367

11 Klijent/server programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

12 Upotreba ADO-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

Deo IV: Komponente i biblioteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

13 Kreiranje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

14 Dinami~ke biblioteke za povezivanje i paketi . . . . . . . . . . . . . . . . . . 533

15 COM programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

16 Automatizacija i ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

Deo V: Prakti~ne tehnike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641

17 Multitasking, vi{e procesa i sinhronizacija . . . . . . . . . . . . . . . . . . . . 643

18 Debagovanje Delphi programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671

19 Jo{ Delphi tehnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699

20 Internet programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

21 Paralelne (Multitier) aplikacije za baze podataka . . . . . . . . . . . . . . . 803

Kratak sadr`aj

iv

v

Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

Deo I: Delphi 5 i Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1 Delphi 5 integrisano razvojno okru`enje . . . . . . . . . . . . . . . . . . . . . . . 3

Izdanja Delphija 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Delphi 5 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Opcije komandne linije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5^uvanje izgleda radne povr{ine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Spisak stvari koje treba uraditi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

Editor AppBrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Code Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Pretra`ivanje u editoru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Class Completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Code Insight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Jo{ tastaturnih pre~ica editora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Form Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Object Inspector u Delphiju 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Tajne palete Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Definisanje rukovanja doga|ajima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Kopiranje i sme{tanje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Od {ablona komponenata do okvira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Upravljanje projektima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Opcije projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Kompajliranje i izrada projekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Pretra`ivanje projekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Dodatni i spolja{nji alati Delphija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Fajlovi koje proizvodi sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Prikazivanje fajlova sa izvornim kodom . . . . . . . . . . . . . . . . . . . . . . . . . . 36Object Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2 Objektno orijentisano programiranje u Delphiju . . . . . . . . . . . . . . . . 41

Uvod u klase i objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Model Object Reference u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Private, Protected i Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Enkapsulacija i formulari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Klju~na re~ Self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47Dinami~ko kreiranje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Konstruktori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Overloaded (preoptere}eni) metodi i konstruktori . . . . . . . . . . . . . . . . . . 50

Sadr`aj

Detaljan Izvornik: Delphi 5

Kompletna klasa TDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Nasle|ivanje od postoje}ih tipova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Za{ti}ena polja (protected) i enkapsulacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Nasle|ivanje i kompatibilnost tipova podataka . . . . . . . . . . . . . . . . . . . . . 58Kasno povezivanje i polimorfizam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Prevazila`enje, ponovno definisanje i ponovno uvo|enje metoda . . . . . . 62Virtuelni nasuprot dinami~kih metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Rukovanje porukama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Apstraktni metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Tip informacije prilikom izvr{avanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Vizuelno nasle|ivanje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Nasle|ivanje od osnovnog formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Polimorfni formulari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

3 Unapre|eni Object Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Metodi klase i podaci klase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Klasa sa broja~em objekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Pokaziva~i metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Reference klase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Kreiranje komponenata upotrebom referenci klase . . . . . . . . . . . . . . . . . . 86

Objekti i memorija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Uklanjanje objekata samo jednom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Prosle|ivanje i kopiranje objekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Rukovanje izuzecima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Izuzeci i stek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Blok finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Bele`enje gre{aka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Specifikator pristupa published . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Definisanje svojstava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Dodavanje svojstava formularu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100Dodavanje svojstava klasi TDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Doga|aji u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Doga|aji su svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Dodavanje doga|aja klasi TDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Kreiranje komponente TDate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Upotreba interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Deklarisanje interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Svojstva interfejsa, autorizacija, ponovne definicije . . . . . . . . . . . . . . . . . 111Primer vi{estrukog nasle|ivanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Polimorfizam interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Da li je ovo vi{estruko nasle|ivanje? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

vi

vii

Detaljan Izvornik: Delphi 5 SADR@AJ

4 VCL tehnike programiranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Klasa TObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Prikazivanje informacija klase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

VCL hijerarhija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Windows komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Objekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Zajedni~ka VCL svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Svojstvo Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Niz Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129Svojstvo Owner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Uklanjanje polja formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131Sakrivanje polja formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Svojstva koja se odnose na veli~inu i poziciju kontrole . . . . . . . . . . . . . . 133Svojstva aktiviranja i vidljivosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Prilagodljivo svojstvo Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Korisni~ki interfejs: boja i font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

Zajedni~ki VCL metodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Zajedni~ki VCL doga|aji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Razumevanje okvira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Klase lista i kontejnera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

Upotreba liste objekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Delphi 5 kontejner klase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Sigurnost tipova kontejnera i lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

Deo II: Upotreba komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

5 Napredna upotreba standardnih komponenata . . . . . . . . . . . . . . . . 151

Otvaranje palete alata Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Komponente za unos teksta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Odabiranje opcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Opsezi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Prevla~enje sa jedne komponente na drugu . . . . . . . . . . . . . . . . . . . . . . . 159Obrada ulaznog fokusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

Rad sa menijima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Pre~ice u Delphiju 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Iska~u}i meniji i doga|aj OnContextPopup . . . . . . . . . . . . . . . . . . . . . . . 165Dinami~ko kreiranje elemenata menija . . . . . . . . . . . . . . . . . . . . . . . . . . 167Upotreba ikona u meniju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Prilago|avanje sistemskog menija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Komponenta ActionList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Akcije u praksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176

Kontrole koje iscrtava vlasnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Detaljan Izvornik: Delphi 5

Elementi menija koje iscrtava vlasnik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Raznobojni ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

ListView i TreeView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Grafi~ka referentna lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Drvo podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

6 Formulari, prozori i aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Formulari nasuprot prozorima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Aplikacija je prozor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Prikazivanje prozora aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Sistemski meni aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Aktiviranje aplikacija i formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

Odre|ivanje stilova formulara i bordure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Stil bordure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Ikone bordure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Odre|ivanje drugih stilova prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

Skaliranje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Ru~no skaliranje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Automatsko skaliranje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

Odre|ivanje pozicije i veli~ine formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Veli~ina formulara i njegova klijent oblast . . . . . . . . . . . . . . . . . . . . . . . . 214Ograni~avanje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

Kreiranje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Redosled kreiranja formulara u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . 217Pra}enje formulara upotrebom objekta Screen . . . . . . . . . . . . . . . . . . . . 218Zatvaranje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

Unos sa formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Nadgledanje unosa sa tastature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Prihvatanje ulaza pomo}u mi{a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Prevla~enje i crtanje upotrebom mi{a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Crtanje u Windowsu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

7 Izrada korisni~kog interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

Kontrola Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234Toolbar i ActionList editora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Combo polje na paleti alata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Obla~i}i palete alata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

Prilago|avanje obla~i}a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Kontejneri palete sa alatima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Zaista lepa paleta alata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242ControlBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Meni u ControlBaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Kreiranje statusne linije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

viii

ix

Detaljan Izvornik: Delphi 5 SADR@AJ

Obla~i}i menija na statusnoj liniji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Skrolovanje formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

Primer testiranja skrolovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Automatsko skrolovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Skrolovanje i koordinate formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

Tehnike deljenja formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Horizontalna podela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Deljenje upotrebom hedera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Sidra kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Dokiranje paleta alata i kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Dokiranje paleta alata u ControlBarovima . . . . . . . . . . . . . . . . . . . . . . . . 263

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

8 Upotreba razli~itih formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Okviri za dijalog nasuprot formularima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Dodavanje drugog formulara programu . . . . . . . . . . . . . . . . . . . . . . . . . . 270Kreiranje sekundarnih formulara u vreme izvr{avanja . . . . . . . . . . . . . . . 271

Kreiranje okvira za dijalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Okvir za dijalog primera RefList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274Neprioritetni okvir za dijalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Uobi~ajeni Windowsovi okviri za dijalog . . . . . . . . . . . . . . . . . . . . . . . . . 280Parada poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Pro{ireni okviri za dijalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

Okviri za dijalog About i uvodni ekrani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Izrada korisni~kog sakrivenog ekrana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Izrada uvodnog ekrana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

Formulari sa vi{e strana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289PageControl i TabSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290Okviri i strane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Vi{e okvira bez strana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Program za pregled slika u kome vlasnik iscrtava kartice . . . . . . . . . . . . . 297Korisni~ki interfejs ~arobnjaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299Dokiranje uz PageControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Kreiranje MDI aplikacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303MDI u Windowsu: tehni~ki profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Okvir i dete-prozori u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Izrada kompletnog menija Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305Primer MdiDemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

MDI aplikacije sa razli~itim dete-prozorima . . . . . . . . . . . . . . . . . . . . . . . . . . 310Dete-formulari i meniji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Menjanje glavnog formulara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Familija prozora MdiClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

Detaljan Izvornik: Delphi 5

Deo III: Programiranje aplikacija za baze podtaka . . . . . . . . . . . . . . . . . 317

9 Izrada aplikacija za baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . 319

Pristupanje podacima sa i bez BDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Delphi komponente za baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

Tabele i upiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322Status skupa podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323Ostale komponente za baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Delphi kontrole koje prepoznaju podatke . . . . . . . . . . . . . . . . . . . . . . . . 324

Prilago|avanje tabele za bazu podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Status Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

Kontrole koje prepoznaju podatke, a odnose se na polja . . . . . . . . . . . . . . . . 328Upotreba DBEdit kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Kreiranje tabele baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Prikazivanje alternativnih vrednosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

Pristupanje poljima sa podacima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Hijerarhija klasa polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Dodavanje polja koje se izra~unava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Pretra`ivanje i dodavanje polja tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Pronala`enje slogova u tabeli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Suma kolone tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Menjanje kolone tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

Aplikacije za baze podataka sa standardnim kontrolama . . . . . . . . . . . . . . . . 347Opona{anje Delphi kontrola koje prepoznaju podatke . . . . . . . . . . . . . . 347Slanje zahteva bazi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Doga|aji baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Doga|aji polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354Promena datuma upotrebom kalendara . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Pretra`ivanje tabela baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Izbor baze podataka i tabele u vreme izvr{avanja . . . . . . . . . . . . . . . . . . 357Prikazivanje vi{e tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

Grid sa vi{e slogova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Pomeranje panela Control Grida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Grafikoni baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

10 Napredni pristup bazama podataka . . . . . . . . . . . . . . . . . . . . . . . . . 367

Delphi 5 Designer modula podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Pogled Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Pogled Data Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Modul podataka za vi{e pogleda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Odre|ivanje svojstava polja i po~etnih vrednosti . . . . . . . . . . . . . . . . . . . 373Standardno filtriranje tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375Korisni~ko filtriranje tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376MDI aplikacija sa nezavisnim pogledima . . . . . . . . . . . . . . . . . . . . . . . . . 377

x

xi

Detaljan Izvornik: Delphi 5 SADR@AJ

Upotreba upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379Upit sa parametrima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

Upotreba vi{e tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Master/detail sa tabelama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Master/detail struktura sa upitima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Upotreba Lookup Combo polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Lookup u tabeli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

Napredna upotreba kontrole DBGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391Iscrtavanje DBGrida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391]elija sa poljem za potvrdu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Tabela koja dozvoljava vi{estruko selektovanje . . . . . . . . . . . . . . . . . . . . 396

Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Data Dictionary i Fields editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397[ta je skup atributa? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Pretra`ivanje baze Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

Obrada gre{aka baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Vi{ekorisni~ke Paradox aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

BDE niskog nivoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Pakovanje lokalne tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404Upotreba Paradox fajlova na mre`i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406Kontrola konkurentnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

Transakcije baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Jednostavan primer transakcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411Upotreba ke{iranih a`uriranja kao transakcija . . . . . . . . . . . . . . . . . . . . . 413

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

11 Klijent/server programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Struktura klijent/server programiranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Klijent/server i Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Komponenta Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420Uloga BDE-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

Od lokalnog do klijent/server programiranja . . . . . . . . . . . . . . . . . . . . . . . . . 422Jednosmerni kursori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422Komponente Table i Query u Client/Server aplikaciji . . . . . . . . . . . . . . . 423

Upoznavanje sa Local InterBaseom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425SQL: jezik za definisanje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428

Tipovi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Domeni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429Kreiranje tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Indeksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Pogledi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431SQL: Jezik za manipulaciju podacima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433Insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

Detaljan Izvornik: Delphi 5

Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437Upotreba SQL Buildera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

Programiranje servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441Uskladi{tene procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441Okida~i (i generatori) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Aktivni upiti i ke{irana a`uriranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Komponenta UpdateSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444Konflikti a`uriranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448Upotreba transakcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

InterBase Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450Spreman i izvr{ava se . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Izrada aktivnog upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

Klijent/server optimizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455Upotreba SQL monitora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455Pode{avanje performansi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

12 Upotreba ADO-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

Microsoftov put ka podacima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462ADO i OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463ADO objekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Delphi 5 ADO komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464Prakti~ni ADO primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465Od Paradoxa do Accessa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

Upotreba komponente ADOTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469Kopiranje tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472Master/Detail strukture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

Jo{ karakteristika ADO-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476Kursori i optimizacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476Indeksi i sortiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477Filtriranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480Trenutni snimak podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480Pronala`enje, sumiranje i zaklju~avanje slogova . . . . . . . . . . . . . . . . . . . 481Rukovanje transakcijama u ADO-u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482Korisni~ki doga|aji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

Deo IV: Komponente i biblioteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

13 Kreiranje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

Pro{irivanje VCL-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488Paketi komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488Pravila za pisanje komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Osnovne klase komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

Izrada Va{e prve komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

xii

xiii

Detaljan Izvornik: Delphi 5 SADR@AJ

Combo polje za fontove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492Kreiranje paketa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495Upotreba combo polja Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498

Kreiranje slo`enih komponenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499Bitmape Component Palette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501Aktivna kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

Slo`ene grafi~ke komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504Definisanje pobrojanog svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505Pisanje metoda Paint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506Dodavanje svojstava TPersistent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508Definisanje novog korisni~kog doga|aja . . . . . . . . . . . . . . . . . . . . . . . . . 510Registrovanje kategorija svojstava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

Prilago|avanje Windows kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513Zaobila`enje obrada poruka: numeri~ko polje za izmene . . . . . . . . . . . . 514Zaobila`enje dinami~kih metoda: kontrola Sound . . . . . . . . . . . . . . . . . 515

Nevizuelna komponenta Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Upotreba nevizuelne komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Definisanje korisni~kih akcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Pisanje editora svojstava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523

Editor za zvu~na svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523Instaliranje editora svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

Pisanje editora komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Pravljenje potklasa klase TComponentEditor . . . . . . . . . . . . . . . . . . . . . . 528Editor komponente za ListDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Registrovanje editora komponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

14 Dinami~ke biblioteke za povezivanje i paketi . . . . . . . . . . . . . . . . . . 533

Uloga DLL-ova pod Windowsom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534[ta je dinami~ko povezivanje? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534^emu slu`e DLL-ovi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535Razumevanje sistemskih DLL-ova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Razlike izme|u DLL i EXE fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Pravila za Delphi programere DLL-ova . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Win16 i Win32 DLL-ovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Upotreba postoje}ih DLL-ova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Upotreba C++ DLL-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

Kreiranje DLL-a u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Prvi jednostavni Delphi DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Vi{e funkcija istog imena u Delphi DLL-ovima . . . . . . . . . . . . . . . . . . . . 545Izvo`enje stringova iz DLL-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Pozivanje Delphi DLL-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

Delphi formular u DLL-u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Upotreba DLL formulara kao prioritetnog formulara . . . . . . . . . . . . . . . 549Neprioritetni formular u DLL-u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

Detaljan Izvornik: Delphi 5

Pozivanje Delphi DLL-a iz Visual Basica za aplikacije (VBA) . . . . . . . . . . 554Pozivanje DLL funkcije u vreme izvr{avanja . . . . . . . . . . . . . . . . . . . . . . 555

DLL u memoriji: kod i podaci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Deljenje podataka upotrebom fajlova koji su mapirani u memoriji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

Upotreba Delphi paketa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559Prevo|enje paketa (verzije paketa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Izvr{ni fajlovi i DLL-ovi koji dele VCL pakete . . . . . . . . . . . . . . . . . . . . . 562

Pretra`ivanje strukture paketa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568

15 COM programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

[ta je OLE, a {ta je COM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570Implementiranje IUnknown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

Globalno jedinstveni identifikatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573Uloga radionica klasa (Class Factories) . . . . . . . . . . . . . . . . . . . . . . . . . . 574Radionice klasa i druge Delphi COM klase . . . . . . . . . . . . . . . . . . . . . . . 575

Prvi COM server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576COM interfejsi i objekti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576Inicijalizovanje COM objekta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579Testiranje COM servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580Upotreba svojstava interfejsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582Pozivanje virtuelnih metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

Upotreba interfejs {koljke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584Kreiranje pre~ica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584Aplikacija To-Do-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586Kreiranje obrade kontekst menija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

16 Automatizacija i ActiveX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

OLE Automation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598Pisanje OLE Automation servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Editor Type Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601Kod servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603Registrovanje Automation servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606Pisanje klijenta za na{ server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606Interfejsi, promenljive i Dispatch interfejsi: testiranje razlika u brzini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608Server u komponenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

OLE tipovi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612Isticanje lista stringova i fontova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613

Upotreba Office programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616Slanje podataka Microsoft Wordu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616Izrada Excelove tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618

Upotreba slo`enih dokumenata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620

xiv

xv

Detaljan Izvornik: Delphi 5 SADR@AJ

OLE kontejner komponenta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621Upotreba internih objekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623Uvod u ActiveX kontrole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625ActiveX kontrole nasuprot Delphi kontrolama . . . . . . . . . . . . . . . . . . . . . . . . 627Upotreba ActiveX kontrola u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627

Upotreba kontrole WebBrowser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627Pisanje ActiveX kontrola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630

Izrada ActiveX strelice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630Dodavanje novih svojstava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633Dodavanje strane svojstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634

ActiveForms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637Unutra{njost ActiveForma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637ActiveX kontrola XClock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

Deo V: Prakti~ne tehnike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641

17 Multitasking, vi{e procesa i sinhronizacija . . . . . . . . . . . . . . . . . . . . 643

Doga|aji, poruke i multitasking u Windowsu . . . . . . . . . . . . . . . . . . . . . . . . 644Programiranje vo|eno doga|ajima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644Prosle|ivanje Windows poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645Izvr{avanje u pozadini i multitasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645

Provera da li postoji prethodna instanca aplikacije . . . . . . . . . . . . . . . . . . . . 647Pronala`enje kopije glavnog prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647Upotreba muteksa (mutex) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648Pretra`ivanje liste prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648Obrada korisni~kih poruka prozora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649

Vi{e procesa u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .650Klasa TThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651Prvi primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652Primer zaklju~avanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Alternative sinhronizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654Prioritet procesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

Sinhronizovanje procesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657^ekanje na proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657Windows tehnike sinhronizacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661Upotreba kriti~nih odeljaka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664Procesni pristup bazi podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670

18 Debagovanje Delphi programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671

Upotreba integrisanog debagera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672Debagovanje biblioteka (i ActiveX kontrola) . . . . . . . . . . . . . . . . . . . . . . 672Informacije debagovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673Udaljeno debagovanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

Detaljan Izvornik: Delphi 5

Attach to Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674Upotreba ta~aka prekida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

Akcije ta~aka prekida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678Pogledi debagera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

Call stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Proveravanje vrednosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Pretra`ivanje modula i procesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685Dnevnik doga|aja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686Pravo u sr`: CPU i FPU pogledi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

Ostale tehnike debagovanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689Upotreba uslovnog kompajliranja za debagovanje i verzije koje prosle|ujete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689Upotreba alegacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690Pregled toka poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691

Memorijski problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693Procesi i memorija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693Globalni podaci, stek i kolekcija (heap) . . . . . . . . . . . . . . . . . . . . . . . . . . 694Pra}enje memorije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696Alati nezavisnih programera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698

19 Jo{ Delphi tehnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699

Upravljanje Windows resursima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700Upotreba editora resursa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700U~itavanje resursa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702Ikone za aplikacije i formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703Upotreba polja ikona (Icon Tray) na Taskbaru . . . . . . . . . . . . . . . . . . . . 704Upotreba kursora u Delphiju . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Upotreba resursa tabele stringova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Informacija o verziji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706

Integrisano okru`enje za prevo|enje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709[tampanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712

Print Preview grafika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712[tampanje teksta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716Komponente QuickReport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717

Manipulisanje fajlovima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Podr{ka fajlovima u Delphi komponentama . . . . . . . . . . . . . . . . . . . . . . 719Komponente fajl sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720Usmeravanje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

Clipboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723Kopiranje i preme{tanje teksta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723Kopiranje i preme{tanje bitmapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724

^uvanje statusa: INI i Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726Upotreba Windows INI fajlova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726

xvi

xvii

Detaljan Izvornik: Delphi 5 SADR@AJ

Upotreba Registryja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728Pristupanje svojstvima po nazivu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732Izrada online helpa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734InstallShield Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738Administriranje izvornog koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746

20 Internet programiranje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

HyperText Markup Language (HTML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748Delphijeve HTML Producer komponente . . . . . . . . . . . . . . . . . . . . . . . . . 749Izrada HTML strana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750Izrada strana podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752Izrada HTML tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754Upotreba stilova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756Izdavanje stati~kih baza podataka na Webu . . . . . . . . . . . . . . . . . . . . . . . 757

ActiveForms na web stranama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758Uloga ActiveX formulara na web strani . . . . . . . . . . . . . . . . . . . . . . . . . . 760ActiveForm sa vi{e strana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761Odre|ivanje svojstava za XArrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762

Programiranje priklju~aka upotrebom Delphija . . . . . . . . . . . . . . . . . . . . . . . 763Osnove programiranja priklju~aka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764Delphi komponente priklju~aka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766Upotreba priklju~aka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767Upotreba priklju~aka uz korisni~ke protokole . . . . . . . . . . . . . . . . . . . . . 769Blokiraju}e, neblokiraju}e vi{eprocesne veze . . . . . . . . . . . . . . . . . . . . . . 772Slanje podataka baze podataka preko priklju~ka veze . . . . . . . . . . . . . . . 773

Internet protokoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775Slanje i primanje po{te . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776Slanje poruka programu za po{tu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776WinInet API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

Dinami~ke web strane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Pregled CGI-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Pregled ISAPI-ja/NSAPI-ja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782

Delphijeva WebBroker tehnologija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783Izrada vi{enamenskog programa WebModule . . . . . . . . . . . . . . . . . . . . . 786Dinami~ka izrada izve{taja baze podataka . . . . . . . . . . . . . . . . . . . . . . . . 788O upitima i formularima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790Broja~ poseta web strane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

Obrada informacija o po{ti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796CGI server po{te . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796Dobijanje zahteva na osnovu poruka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799

Active Server Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802

Detaljan Izvornik: Delphi 5

21 Paralelne (Multitier) aplikacije za baze podataka . . . . . . . . . . . . . . . 803

Jedan, dva, tri nivoa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804Tehni~ke osnove: MIDAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805IAppServer interfejs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806Protokoli povezivanja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807Obezbe|ivanje paketa podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808Delphijeva podr{ka komponenata (na strani klijenta) . . . . . . . . . . . . . . . 809Delphijeva podr{ka komponenata (na strani servera) . . . . . . . . . . . . . . . 809

Izrada primera aplikacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810Prva aplikacija servera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810Prvi laki klijent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811

Dodavanje veza serveru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813Veze polja i tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813Uklju~ivanje svojstava polja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814Doga|aji polja i tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814

Dodavanje karakteristika klijentu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815Status slogova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816Pristupanje delti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816A`uriranje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818Sekvenca a`uriranja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820Osve`avanje podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821Dodavanje opcije Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821Podr`avanje briefcase modela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822

Napredne MIDAS karakteristike . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822Parametarski upiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823Prakti~ni pozivi metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824Master/detail zavisnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825Jo{ opcija provajdera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826Simple Object Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827Prozivanje objekata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827Prilago|avanje paketa podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

Sakrivena snaga komponente ClientDataSet . . . . . . . . . . . . . . . . . . . . . . . . . 828Definisanje apstraktnih tipova podataka . . . . . . . . . . . . . . . . . . . . . . . . . 829Indeksiranje u hodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830Grupisanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831Definisanje suma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

Distribuirani servisi visoke klase (MTS i CORBA) . . . . . . . . . . . . . . . . . . . . . . 834Microsoftov server transakcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834Kreiranje MTS modula podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835CORBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836Jednostavan CORBA server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837Jednostavan CORBA klijent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838

xviii

xix

Detaljan Izvornik: Delphi 5 SADR@AJ

ActiveForm laki klijenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839Internet Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841

Izrada prvog primera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842Master/detail na Webu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845

[ta je slede}e? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848

Indeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849

xx

xxi

Karakteristika Poglavlje

Active Server Object Wizard i ASP podr{ka 20

ADO, DataSet komponente 12

Komponenta ApplicationEvents 6

Dodavanje debagera procesu koji se izvr{ava 18

Akcije i grupe ta~ke prekida 18

COM serveri u komponentama 16

Kontejnerske klase 4

Dijagrami podataka 10

Data Module Designer 10

FPU prozor 18

Okviri 4, 8

Procedura FreeAndNil 3

Integrated Translation Environment (ITE) 19

InterBase Express 11

Internet Express 21

Pre~ice menija 5

MIDAS 3 21

Nove klase TField 9

Pobolj{anja Object Inspectora 1

Office komponente 16

Doga|aj OnContextPopup 5

Project Explorer 1

Pobolj{anja Project Managera 1

Kategorije svojstava (registrovanje) 13

Resource Workshop 19

Sa~uvana pode{avanja radne povr{ine 1

TeamSource 19

Todo List 1

Pobolj{anja TypeInfoa 19

Windows kontrole, pobolj{ana podr{ka 7

Nove karakteristike Delphija 5

Posetite sajt Kompjuter biblioteke - Delphi

Posetite na{ sajt na adresi www.kombib.co.yu.

Preuzmite izvorni kod ove knjige sa adrese:

www.kombib.co.yu/Delphi5sourcecode.exe

Preuzmite dodatna originalna poglavlja sa adrese:

www.kombib.co.yu/knjige/preuzmite.htm

Saznajte najnovije informacije o Delphiju na adresi:

www.kombib.co.yu/zoinvrt/delphi.htm

xxii

xxiii

Posetite Marcov Delphi web sajt za programereAutor knjige, Marco Cantu, je na~inio sajt namenjen Delphi programerima na adresi www.marcocantu.com. Sajt je odli~an priru~nik za sve Va{e Delphi programerske potrebe.

Sajt sadr`i:

l Izvorni kod knjige (koji tako|e mo`ete prona}i na Sybex web sajtu)

l Dodatne primere i savete

l Veliki broj Delphi komponenata, ~arobnjaka i alata koje je izradio autor

l Knjigu Essential Pascal

l Materijal o Delphiju koji se ne mo`e prona}i u Helpu

l Neke dokumente koje je autor napisao o Delphiju, C++ i Javi

l Veliki broj linkova za Delphi web sajtove i dokumente

l Dokumente o autorovim knjigama, konferencije koje pose}uje i njegove seminare

Sajt sadr`i i novosti, sa posebnim delom koji se odnosi na autorove knjige, tako da ~itaoci moguda razmene mi{ljenje o sadr`aju. Tako|e, postoji i deo u kome se mogu razmeniti mi{ljenja oDelphi programiranju.

Posetite Sybexov sajt Mastering DelphiSybex web sajt, www.sybec.com, sadr`i sve {to Vam je potrebno da u potpunosti iskoristite Delphi 5 Detaljan izvornik. Kao {to mo`ete videti prelistavaju}i knjigu, Marco Cantu je na~inioaplikacije i odgovaraju}i kod vi{e od 200 primera koji }e Vas voditi prilikom izrade aplikaci-ja upotrebom Delphija 5.

SourceCode.exe je samoraspakuju}a arhiva koja sadr`i sav izvorni kod, uklju~uju}i .PAS fajlove,fajlove projekata i odgovaraju}e DLL-ove. Svi ~itaoci bi trebalo da preuzmu ovu arhivu da biprou~ili izvorni kod i izradili programe.

Na web sajtu se nalazi i dodatno poglavlje nazvano Graphics in Delphi (Grafika u Delphiju).Ovo poglavlje sadr`i:

l Crtanje na formularima l Grafi~ke mre`e i igre

l Animirane kontrole l Upotrebu TeeCharta

l Program za pregled slika l Windows metafajlove

l Crtanje preko bitmapa

Slobodno posetite web sajt knjige i preuzmite bilo {ta {to Vam je potrebno.

Evo kako mo`ete preuzeti kod knjige i dodatno poglavlje:

1. Idite na http://www.sybex.com.

2. Kliknite Catalog.

3. Unesite 2565 (ISBN knjige) u polje za tekst.

4. Kliknite kontrolu Downloads na levoj strani ekrana.

5. Pro~itajte Sybex Software License Agreement i prihvatite SYBEX User License.(Ukoliko ne `elite da prihvatite, ne}ete mo}i da nastavite preuzimanje.)

6. Kliknite link za preuzimanje izvornog koda ili dodatnog poglavlja. (Mo`etepreuzeti oba, ali jedan po jedan.)

7. Kada preuzmete kod, dva puta kliknite sourcecode.exe; zatim unesite direktori-jum u koji `elite da smestite fajlove, ili odaberite unapred odre|eni direktorijum(Md5code). Arhiva }e se raspakovati u strukturu direktorijuma na osnovu delova ipoglavlja knjige; na primer, Part2\06\Borders }e sadr`ati izvorni kod za primerBorders Poglavlja 6.

8. Dodatno poglavlje je u Adobe Acrobat PDF formatu. Ukoliko koristite NetscapeNavigator 3 ili bolju verziju, ili Microsoft Internet Explorer 3 ili bolju verziju,mo}i }ete da pogledate, sa~uvate ili od{tampate dokument iz pretra`iva~a.Ukoliko Vam je potreban Acrobat Reader, mo`ete oti}i na Adobe sajt sa MasteringDelphi 5 Downloads strane.

xxiv

xxv

Ovo izdanje knjige Mastering Delphi obele`ava petu godinu ere Delphija. Kao i za mnogedruge programere, Delphi je bio u centru mog interesovanja tokom ovih godina, a pisanje, kon-sultacije, podu~avanje i rad na konferencijama o Delphiju su zauzimale sve vi{e i vi{e mog vre-mena, ostavljaju}i ostale jezike i programske alate u pra{ini moje kancelarije. Kako su moj rad i`ivot prili~no isprepletani, mnogi ljudi su bili deo i jednog i drugog, i `eleo bih da imamdovoljno prostora i vremena da im svima zahvalim za ono {to zaslu`uju. Umesto toga, ja }upomenuti samo nekoliko ljudi i re}i }u samo toplo: Hvala celom Delphi dru{tvu kao i zanagradu Spirit of Delphi 1999 Award koju sa ponosom delim sa Bobom Svartom (Bob Swart).

Prvu zvani~nu zahvalnost upu}ujem Borlandovim programerima i menad`erima koji su stvoriliDelphi i koji su nastavili da ga unapre|uju. To su ^ak Jazdevski (Chuck Jazdzewski), Deni Torp(Danny Thorpe), Edi ^er~il (Eddie Churchill), Alen Bauer (Allen Bauer), Stiv Tod (Steve Todd),Mark Edington (Mark Edington), D`im Tirnej (Jim Tierney), Ravi Kumar (Ravi Kumar), JergVejngarten (Jorg Weingaten), Anders Olson (Anders Ohlsson), i svi ostali koje nisam imao prilikuda sretnem. Tako|e, `elim da pomenem moje prijatelje Bena Rigu (Ben Riga), koji je trenutnoDelphi menad`er, ^arlija Kalverta (Charlie Calvert), D`ona Kastera (John Kaster) i Dejvida I (David I). Ne mogu da zaboravim pomo} koju su mi pru`ili Zak Urloker (Zack Urlocker) i NanBoreson (Nan Borreson).

Zatim sledi zahvalnost Sybexovom timu, u kojem su mnogi ljudi koje ne poznajem. Specijalnuzahvalnost upu}ujem Denis Santoro (Denise Santoro), D`imu Komptonu (Jim Compton) iDajani Loveri (Diane Lowery) za njihov uvodnik; tako|e `elim da zahvalim Ri~ardu Milsu(Richard Mills), Kristini OKalahan (Kristine OCallaghan), Morin Foris (Maureen Forys), TereziTrego (Teresa Trego), D`enifer Kempbel (Jennifer Campbell), Kerol Iverson (Carol Iverson) iToniju Joniku (Tony Jonick).

Ovo izdanje knjige Mastering Delphi imalo je neverovatan pregled koji je izvr{io ~lan Delphitima Deni Torp (Denny Thorpe). Njegovi komentari su pobolj{ali knjigu u svim segmentima:tehni~kom sadr`aju, ta~nosti, primerima, pa ~ak i u ~itljivosti. Veliko hvala. I u prethodnimizdanjima bilo je dosta doprinosa sa strane: Tim Gu~ (Tim Gooch) je radio na Delu V knjigeMastering Delphi 4, a \uzepe Madafari (Giuseppe Madaffari) je dao veliki doprinos materijalukoji se odnosi na baze podataka u ovom i prethodnom izdanju. Mnoga pobolj{anja tekstu iprimerima su doneli tehni~ki revizori prethodnih izdanja Huankarlo Anjez (Juancarlo Anez),Ralf Fridman (Ralph Friedman), Tim Gu~ (Tim Gooch) i Alan Tadros (Alain Tadros) kao irevizije koje su ranije u~inili Bob Svart (Bob Swart), \uzepe Madafari (Giuseppe Madaffari) i StivTendon (Steve Tendon).

Naro~ito zahvaljujem mojim prijateljima Brusu Ekelu (Bruce Eckel), Andrei Provaljio (AndreaProvaglio), Normu Mekinto{u (Norm McIntosh) D`oani (Johanna) i Filu (Phil) iz BUG-UK, RejuKonopki (Ray Konopka), Marku Mileru (Mark Miller), Keriju Jensenu (Cary Jensen), Krisu Frizeli(Chris Frizelle) iz The Delphi Magazina, Fu Sej Hauu (Foo Say How), D`onu Houvu (JonhHowe), Majku Orisu (Mike Orriss), ^adu Kudzu Haueru (Chad Kudzu Hower), Denu Miseru(Den Miser) i Marku Miotiju (Marco Miotti). Tako|e, veoma veliko hvala i svim polaznicima

Priznanja

mojih programerskih kurseva o Delphiju, posetiocima mojih seminara i konferencija u Italiji,SAD, Francuskoj, Velikoj Britaniji, Singapuru, Holandiji, Nema~koj i [vedskoj.

Pored ljudi koji imaju udela u Delphiju, najve}u zahvalnost {aljem svojoj strpljivoj supruzi Leli(Lella), koja je (dok je bila u drugom stanju) morala da provede jo{ jedno leto sa veoma maloodmora, jer knjiga uvek odnosi vi{e vremena nego {to ja to o~ekujem. Mnogi na{i prijatelji sunam omogu}ili kratke odmore tokom rada: Sandro (Sandro) i Monika (Monica) sa Lukom(Luca), Stefano (Stefano) i Elena (Elena), Marko (Marco) i Lora (Laura) sa Mateom (Matteo),Bjankom (Bianca), Kjarom (Chiara), Lukom (Luca) i Elenom (Elena), Kjara (Chiara) i Daniel(Daniele) sa Leonardom (Leonardo), Lorom (Laura), Vito (Vito) i Marika (Marika) sa Sofijom(Sofia). Na{i roditelji, bra}a, sestre i njihove porodice su dali veliku podr{ku. Bilo je lepo provestine{to na{eg slobodnog vremena sa njima i na{ih {estoro sestri}a, Mateom (Matteo), Andreom(Andrea), \akomom (Giacomo), Stefanom (Stefano), Andreom (Andrea) i Pjetrom (Pietro).

Na kraju, `eleo bih da zahvalim svim ljudima, od kojih mnoge i ne poznajem, koji u`ivaju u`ivotu i poma`u da bi izgradili bolji svet. Ukoliko nikada ne prestanem da verujem u budu}nosti mir, to }e biti zahvaljuju}i njima.

Marco Cantu

xxvi

xxvii

Prvi put kada mi je Zak Urloker (Zack Urlocker) pokazao proizvod kodiranog naziva Delphi koji jetrebalo prezentovati, ja sam shvatio da }e to promeniti moj rad i rad mnogih drugih programera.Ja sam se nekada borio sa C++ bibliotekama za Windows, a Delphi je bio i ostao najbolja kombi-nacija objektno orijentisanog programiranja i vizuelnog programiranja za Windows.

Delphi 5 jednostavno nastavlja ovu tradiciju i solidne osnove VCL-a da bi se dobio jo{ jedanneverovatan i sveobuhvatan softverski alat za programiranje. Potrebna su Vam re{enja za bazepodataka, klijent/server, vi{elinijsko, intranet ili Internet programiranje? Potrebne su Vam kontrolai snaga? Potreban Vam je brz razvoj? Uz Delphi 5 i veliki broj tehnika i saveta koji se nalaze u ovojknjizi, mo}i }ete sve to da ostvarite.

Pet verzija, a usavr{avanje se nastavljaNeke od prvobitnih karakteristika Delphija koje su me privukle su bili pristup na osnovu formu-lara i objektno orijentisani pristup, neverovatno brz kompajler, velika podr{ka za baze podataka,dobra integracija sa Windows programiranjem i tehnologija komponenata. Me|utim, najva`nijielement je bio jezik Object Pascal koji je osnova za sve ostalo.

Delphi 2 je ~ak bio i bolji! Me|u svim pobolj{anjima su bila i slede}a: Multi-Record Object ipobolj{ane tabele za baze podataka, podr{ka za OLE Automation i variant tip podataka, potpunapodr{ka i integracija za Windows 95, long string tip podataka i Visual Form Inheritance. Delphi 3 jeovome dodao tehnologiju Code Insight, podr{ku za DLL debagovanje, {ablone komponenata,TreeChart, Decision Cube, Web Broker tehnologiju, pakete komponenata, ActiveForms i neverova-tnu integraciju sa COM-om, zahvaljuju}i interfejsima.

Delphi 4 nam je podario AppBrowser editor, nove karakteristike Windowsa 98, pobolj{anupodr{ku za OLE i COM, pro{irene komponente za baze podataka i mnoge dodatke osnovnimVCL klasama, uklju~uju}i podr{ku za dokiranje, povezivanje i usidrenje kontrola. U Delphiju 4postoji mnogo novih karakteristika, koje mo`ete otkriti ~itaju}i ovu knjigu, ukoliko ste propustiliprethodno izdanje.

Delphi 5 sveukupnom utisku dodaje jo{ vi{e pobolj{anja IDE-a (previ{e da bismo ih ovde nabro-jali), pro{irenu podr{ku za baze podataka (sa specifi~nim ADO i InterBase skupovima podataka),pobolj{anu verziju MIDAS-a sa podr{kom za Internet, TeamSource kontrolu verzija, mogu}nostiprevo|enja, koncept okvira, mnogo novih komponenata i jo{ mnogo toga kao {to }ete videti nastranama ove knjige.

Delphi je izvrstan alat, ali je, tako|e, i slo`eno programersko okru`enje koje sadr`i veliki broj ele-menata. Ova knjiga }e Vam pomo}i da u potpunosti savladate Delphi programiranje, uklju~uju}ii jezik Object Pascal, Delphi komponente (kako upotrebu postoje}ih tako i izradu sopstvenih),podr{ku za baze podataka i klijent/server podr{ku, klju~ne elemente COM i Windows programi-ranja i Internet i Web programiranje.

Uvod

Detaljan Izvornik: Delphi 5

Nije Vam potrebno veliko znanje bilo koje teme da biste pro~itali ovu knjigu, ali je potrebno daznate osnove Pascal programiranja. Ukoliko ste ve} upoznali Delphi, to }e Vam mnogo pomo}i,naro~ito posle nekoliko uvodnih poglavlja. Knjiga od samog po~etka detaljno opisuje teme; ve}ideo uvodnog materijala iz prethodnih izdanja je izostavljen. Ne{to od izostavljenog materijala iuvoda u Pascal se mo`e na}i na autorovom web sajtu i mo`e poslu`iti kao polazna ta~ka ukolikoniste upoznati sa osnovama Delphija. Svaka nova karakteristika Delphija 5 je obja{njena u odgo-varaju}im poglavljima u ovoj knjizi.

Struktura knjigeKnjiga je podeljena u pet delova:

l Deo I, Delphi i objektni Pascal, predstavlja nove karakteristike integrisanograzvojnog okru`enja Delphija 5 (Integrated Development Environment IDE) uPoglavlju 1, a zatim se prelazi na jezik Object Pascal i Visual Component Library(VCL) i daju se osnove i saveti.

l Deo II, Upotreba komponenata, odnosi se na standardne komponente, Windowsuobi~ajene kontrole, grafiku, menije, okvire za dijalog, skrolovanje, dokiranje,kontrole sa vi{e strana, Multiple Document Interface i mnogo toga drugog.

l Deo III, Pisanje aplikacija za baze podataka, opisuje pristup bazama podataka,napredne Paradox teme, detaljno opisuje komponente koje prepoznaju podatke,klijent/server programiranje, InterBase Express i ADO.

l Deo IV, Komponente i biblioteke, opisuje Delphi komponente i programiranjedinami~ke biblioteke za povezivanje (Dynamic Link Library DLL); zatim seprelazi na COM i OLE, opisuju se pro{irenja Windows {koljke, OLE Automation iActiveX programiranje.

l Deo V, Prakti~no Delphi programiranje, razmatra mnoge uobi~ajene pro-gramerske tehnike, kao {to su rukovanje memorijom, debagovanje, upotrebaresursa, podr{ka {tampanju, rukovanje fajlovima, programiranje TCP/IPpriklju~aka, Internet programiranje, web ekstenzije na strani servera, vi{elinijskaarhitektura i distribuirane aplikacije za baze podataka koje se izra|uju na osnovuMIDAS tehnologije

Kao {to pokazuje ovaj kratak rezime, ova knjiga obuhvata sve teme koje korisnici Delphija imaju nasvim nivoima programerskog znanja, od naprednih po~etnika do programera komponenata.

U ovoj knjizi sam poku{ao da u potpunosti izostavim referentni materijal i da se umesto togausredsredim na tehnike efektivne upotrebe Delphija. Kako Delphi obezbe|uje detaljnu doku-mentaciju, prikazivanje svih metoda i svojstava u ovoj knjizi ne bi bilo dobro, a knjiga bizastarela ~im bi se softver malo promenio. Savetujem Vam da dok ~itate ovu knjigu, pri ruci imateDelphi Help fajlove tako da Vam referentni materijal bude na raspolaganju. Vi{e referentnogDelphi materijala mo`ete prona}i na mom web sajtu, {to }e kasnije biti opisano.

xxviii

xxix

Detaljan Izvornik: Delphi 5 UVOD

Bilo kako bilo, ja sam se potrudio da Vam omogu}im ~itanje knjige deleko od kompjutera, uko-liko Vam to vi{e odgovara. Slike ekrana i klju~ni delovi listinga bi trebalo da Vam pomognu. U knjizi se koristi nekoliko konvencija da bi bila ~itljivija. Svi elementi izvornog koda, kao {to suklju~ne re~i, nazivi svojstava, klase i funkcije su prikazani u ovom fontu, a listinzi su formatiranionako kako se pojavljuju u Delphi editoru, kada su klju~ne re~i prikazane masnim slovima, akomentari kurzivom.

Besplatni izvorni kod na WebuOva knjiga se usredsre|uje na primere. Posle prikaza svakog koncepta ili Delphi komponente prona}i}ete program koji funkcioni{e (ponekad i vi{e od jednog) i koji pokazuje kako se mo`e upotrebiti.Sve je prikazano i postoji vi{e od 200 primera u knjizi. Ovi programi su direktno dostupni kako naweb sajtu izdava~a (www.sybex.com) tako i na autorovom web sajtu (www.marcocantu.com, gdetako|e mo`ete prona}i a`urirane primere iz prethodnih izdanja). U uvodu knjige mo`ete prona}ipotpuna uputstva o preuzimanju i instaliranu samoraspakuju}ih arhiva koje sadr`e softver, bilo sasajta Sybexa ili sa na{eg sajta. Potrebno je da programe preuzmete pre nego {to po~nete rad sa prime-rima knjige. Ve}ina primera je veoma jednostavna i odnosi se na samo jednu karakteristiku. Slo`enijiprimeri su ~esto izra|eni korak po korak, sa me|ukoracima koji uklju~uju delimi~na re{enja i sloje-vita pobolj{anja.

N A P O M E N A

Neki primeri baza podataka zahtevaju da imate Delphi primer baze podataka DBDEMOS; to je deo unapredodre|ene Delphi instalacije. n

Pored arhive koja sadr`i minimalne fajlove sa izvornim kodom koji su neophodni za izradu progra-ma, druga arhiva sadr`i HTML verziju izvornog koda u kojoj je istaknuta sintaksa, sa potpunim prika-zom klju~nih re~i i identifikatora (klasa, funkcija, metoda, naziva svojstava). Ovakav prikaz se nalaziu HTML fajlu tako da lako mo`ete da koristite svoj pretra`iva~ da biste prona{li sve programe kojikoriste Delphi klju~nu re~ ili identifikator koji tra`ite.

Struktura direktorijuma preuzetih fajlova je prili~no jednostavna. U osnovi, svaki deo knjige senalazi u zasebnom direktorijumu, sa poddirektorijumima za svako poglavlje i sa poddirektoriju-mima za svaki primer (recimo, Part2\06\Borders). U tekstu se na primere referi{e nazivom (recimo, Borders).

N A P O M E N A

Obavezno pro~itajte fajl nazvan Readme koji se nalazi u arhivi i koji sadr`i va`ne informacije o legalnoj iefikasnoj upotrebi softvera. n

Detaljan Izvornik: Delphi 5

Kako stupiti u vezu sa autoromUkoliko imate bilo kakve probleme sa tekstom ili primerima knjige, i izdava~ i ja }emo biti naraspolaganju. Pored prijavljivanja gre{aka i problema, molimo Vas da nam po{aljete iskrenomi{ljenje o knjizi i da nam ka`ete koji primeri su Vam najvi{e pomogli, a koji Vam se najvi{edopadaju. Postoji nekoliko na~ina na koje nas mo`ete informisati:

l Na Sybexovom web sajtu (www.sybex.com) mo`ete prona}i izvorni kod knjige kaoi a`urirani tekst ukoliko je potrebno. Da biste poslali komentar knjige, klikniteContact, a zatim odaberite Book Content Issues. Ovaj link }e Vam prikazati gdemo`ete da unesete svoje komentare.

l Na mojoj web strani (http://www.marcocantu.com) nalaze se novosti i saveti,~lanci i besplatna knjiga Essential Pascal, referentne informacije o Delphiju 5 kojenisu stale u ovu knjigu i moja kolekcija komentara Delphi komponenata i alata.

l Ja sam, tako|e, svojim knjigama posvetio grupu koja se nalazi na adresinews://news.marcocantu.it/public. Ostale oblasti na adresi news://news.marcocantu.it/public (deo na engleskom) su posve}ene pitanjima oDelphiju i drugim temama. Pogledajte moj web sajt da biste videli oblasti i da bistese prijavili. (Zapravo, sve ovo je besplatno, ali morate imati lozinku).

l Na kraju, mo`ete stupiti u vezu sa mnom putem elektronske po{te([email protected]). Molim Vas da za tehni~ka pitanja prvo iskoristite grupu,jer }ete mo`da br`e dobiti odgovor. Moje po{tansko sandu~e je ~esto prepuno tene mogu odmah da odgovorim svakom zahtevu. Molim Vas da mi pi{ete naengleskom ili italijanskom.

xxx

1

iDelphi 5 i ObjectPascal

d e o

U ovom delu:

1. Delphi 5 - Integrisano razvojno okru`enje

2. Objektno orijentisano programiranje u Delphiju

3. Unapre|eni Object Pascal

4. VCL tehnike programiranja

3

1Delphi 5 integrisanorazvojno okru`enje

vizuelnom programskom alatu kao {to je Delphi, uloga okru`enja je ~ak

va`nija od samog programskog jezika. Delphi 5 nudi mnoge nove mogu}nosti

u svom vizuelnom razvojnom okru`enju i u ovom poglavlju }emo ih sve prikazati. Ovo

poglavlje nije potpuno uputstvo ve}, uglavnom, kolekcija saveta i sugestija

namenjena prose~nom korisniku Delphija. Drugim re~ima, poglavlje nije namenjeno

novim korisnicima. Ja }u se pozabaviti novim mogu}nostima integrisanog razvojnog

okru`enja Delphija 5 (Integrated Development Environment IDE) i nekim

naprednim i/ili manje poznatim mogu}nostima prethodnih verzija, ali u ovom

poglavlju ne}u obezbediti instrukcije korak-po-korak. U knjizi }u podrazumevati da

znate kako da sprovedete osnovne IDE operacije, i sva poglavlja posle ovog }e se

odnositi isklju~ivo na programerske tehnike.

p o g l a v l j e

U

Delphi 5 i Object PascalDEO I

Ukoliko ste programer po~etnik, nemojte da se pla{ite. Integrisano razvojno okru`enje Delphi jeprili~no intuitivno. Delphi sadr`i uputstvo (mo`ete ga prona}i u formatu Acrobat na Delphi CD-u) sa delom koji predstavlja razvoj Delphi aplikacija. Tako|e, mo`ete prona}i instrukcijekorak-po-korak za Delphi IDE na mom web sajtu www.marcocantu.com. Kratka knjiga EssentialDelphi je zasnovana na materijalu prvih poglavlja prethodnih izdanja knjige Mastering Delphi.

Izdanja Delphija 5 Pre nego {to uronimo u detalje programskog okru`enja Delphi, posvetimo pa`nju dvemaklju~nim idejama. Prvo, ne postoji jedno izdanje Delphija 5; postoje mnoga izdanja. Drugo,svako Delphi okru`enje se mo`e prilagoditi. Zbog toga se Delphi ekrani, koje }ete videti u ovompoglavlju, mogu razlikovati od ekrana na Va{em kompjuteru. Evo aktuelnih izdanja Delphija.

l Osnovna verzija (izdanje Standard) je namenjena novim korisnicima Delphija ipovremenim programerima.

l Drugi nivo (izdanje Professional) je namenjen profesionalnim programerima.Sadr`i sve osnovne mogu}nosti i podr{ku za programiranje baza podataka, obimnu podr{ku web serverima (WebBroker) i neke dodatne alate. Knjigapodrazumeva da koristite bar verziju Professional.

l Celokupni Delphi (izdanje Enterprise, ranije ozna~eno kao Client/ServerSuite) je namenjen programerima koji izra|uju velike aplikacije. Sadr`i SQLLinks za osnovne konekcije Client/Server BDE, komponente ADO i IntrebaseExpress, podr{ku za vi{ekorisni~ke aplikacije, internacionalnu podr{ku, arhitekturu drveta i mnoge druge alate, uklju~uju}i i SQL Monitor. Neka poglavljase odnose samo na mogu}nosti koje su dostupne u izdanju Delphi Enterprise; tiodeljci su jasno ozna~eni.

Neke mogu}nosti izdanja Delphi Enterprise vlasnici izdanja Delphi Professional mogu dobitidokupljivanjem. Mada je to komercijalna odluka koja se mo`e promeniti u budu}nosti, trebalobi da mo`ete da nabavite komponente ADO i TeamSource (slu`i za uporedni rad vi{e programera). Ukoliko ne mo`ete da opravdate cenu punog izdanja Enterprise, mo`da mo`ete dakupite Delphi Professional i odre|ene podsisteme koje `elite od Borland Online Storea.

Pored toga {to su dostupna razli~ita izdanja, postoje i brojni na~ini prilago|avanja Delphiokru`enja. U ilustracijama ekrana kroz knjigu poku{ao sam da koristim standardni korisni~kiinterfejs (onako kako izgleda posle