You are on page 1of 29

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

Delphi 8 .NET.
Kompendium programisty
Autor: Adam Boduch
ISBN: 83-7361-485-0
Format: B5, stron: 840

ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Poznaj najnowsz wersj Delphi


i stwrz aplikacj dla platformy .NET
W dobie tak dynamicznego rozwoju technologii informatycznych moliwo szybkiego
stworzenia aplikacji jest duym atutem. Dlatego powstaj coraz bardziej rozbudowane
rodowiska programistyczne, umoliwiajce skonstruowanie aplikacji z cegieek,
ktre mona wykorzystywa wielokrotnie. Wrd tych rodowisk programistycznych
zasuon popularno zyskao Delphi, dostpne obecnie w wersji 8. Wygodny
i czytelny interfejs, jzyk programowania oparty na znanym i popularnym Pascalu,
moliwo atwego poczenia si z dowoln baz danych oraz rozbudowany
mechanizm tworzenia aplikacji wieloplatformowych to gwne zalety tego rodowiska.
Ksika Delphi 8 .NET. Kompendium programisty to przewodnik po najnowszej wersji
rodowiska Delphi, uwzgldniajcy jego nowe moliwoci zwizane z tworzeniem
aplikacji dla platformy .NET. Zawiera opis rodowiska programistycznego i jzyka
ObjectPascal. Przedstawia sposoby pisania aplikacji poczonych z bazami danych
i korzystajcych z technologii XML. Opisuje rwnie podstawowe zasady
wykorzystywania w tworzonych programach protokow sieciowych, takich jak HTTP
i SMTP. Ksika jest doskonaa zarwno dla pocztkujcych programistw Delphi,
jak i dla tych, ktrzy chc poszerzy swoj wiedz o zasady tworzenia aplikacji
dla platformy .NET.
Zasady tworzenia aplikacji dla platformy .NET
Wizualne projektowanie aplikacji
Mechanizm komponentw
Projektowanie interfejsu uytkownika i menu
Programowanie w jzyku ObjectPascal
Korzystanie z procedur i funkcji
Zasady projektowania obiektowego
Programowanie oparte na zdarzeniach
Wykrywanie i usuwanie bdw w aplikacjach
Korzystanie z baz danych
Jzyk SQL
Wykorzystywanie technologii XML w aplikacjach
Programowanie sieciowe i ASP.NET
Usugi sieciowe
Cennym rdem informacji jest dodatek, zawierajcy praktyczne wskazwki dotyczce
zasad pisania czytelnego i przejrzystego kodu.

Spis treci
Tematyka ksiki.........................................................................................................................................19

Cz I ........................................................................................................................................... 21
Rozdzia 1.

Wstp do programowania.........................................................................................................................23
Dawno, dawno temu......................................................................................................23
Czym jest programowanie?...............................................................................................24
Jzyki programowania.......................................................................................................25
Asembler .....................................................................................................................26
Fortran.........................................................................................................................27
C .................................................................................................................................27
C++ .............................................................................................................................27
Perl ..............................................................................................................................27
PHP .............................................................................................................................28
Turbo Pascal................................................................................................................28
Java .............................................................................................................................28
C# ...............................................................................................................................29
Kilka sw o kompilatorach ..............................................................................................29
Dziaanie kompilatorw..............................................................................................30
Ktry kompilator wybra? ..........................................................................................31
Dzie programisty .............................................................................................................31
Delphi ................................................................................................................................31
Object Pascal...............................................................................................................32
Delphi czy warto? ..................................................................................................32
Czego wymagamy od Czytelnika?....................................................................................33
Delphi 8 .NET ...................................................................................................................33
.NET ..................................................................................................................................34
.NET Framework ........................................................................................................34
Produkty dla programistw.........................................................................................35
Integracja jzykowa ....................................................................................................35
Jzyk poredni IL........................................................................................................37
Wsplna specyfikacja jzyka......................................................................................38

Delphi 8 .NET. Kompendium programisty


Wsplny system typw ...............................................................................................38
Wsplny jzyk wykonywania .....................................................................................38
Metadane.....................................................................................................................39
Dziaanie CLR ............................................................................................................39
Zarzdzanie aplikacj..................................................................................................40
Podzespoy ..................................................................................................................41
Biblioteka klas ............................................................................................................41
Usugi sieciowe...........................................................................................................41
Konkluzja....................................................................................................................43
Instalacja Delphi................................................................................................................43
Wersje Delphi .............................................................................................................44
Cennik .........................................................................................................................44
Wymagania Delphi .....................................................................................................45
Instalacja .....................................................................................................................45
Polskie znaki ...............................................................................................................45
Jak si uczy? ....................................................................................................................46
FAQ...................................................................................................................................47
Przydatne odnoniki ..........................................................................................................49
Podsumowanie ..................................................................................................................49

Rozdzia 2.

Projektowanie wizualne............................................................................................................................. 51
Podstawowe okna Delphi ..................................................................................................51
Welcome Page ............................................................................................................52
Okno gwne...............................................................................................................53
Projektant formularzy .................................................................................................54
Paleta narzdzi ............................................................................................................54
Inspektor obiektw......................................................................................................56
Meneder projektu ......................................................................................................57
Edytor kodu.................................................................................................................59
Ukrywanie okna ..........................................................................................................60
Pierwszy projekt................................................................................................................61
Tworzenie projektu .....................................................................................................61
Zapisywanie projektu..................................................................................................61
Uruchamianie programu .............................................................................................62
Zamykanie programu ..................................................................................................63
Otwieranie projektu ....................................................................................................63
Kompilacja projektu..........................................................................................................63
Pliki projektu .....................................................................................................................64
Podstawowe paski narzdzi...............................................................................................65
Pasek Standard ............................................................................................................65
Pasek View..................................................................................................................66
Pasek Debug................................................................................................................66
Pasek Desktop.............................................................................................................67
Pasek Custom..............................................................................................................68
Pozostae paski narzdzi .............................................................................................68
Repozytorium obiektw ....................................................................................................68
Dodawanie projektu do repozytorium ........................................................................69
Ustawienia repozytorium ............................................................................................70
Praca z palet narzdzi ......................................................................................................71
Umieszczanie komponentw na formularzu...............................................................71
Umieszczanie kilku komponentw naraz ...................................................................72
Przycisk Categories.....................................................................................................72
Szukanie obiektu.........................................................................................................72

Spis treci

7
Przemieszczanie ikon..................................................................................................73
Menu palety narzdzi..................................................................................................73
Praca z komponentami ......................................................................................................75
.NET............................................................................................................................76
Windows Forms i VCL.NET ......................................................................................76
Komponent..................................................................................................................78
Sterowanie komponentem...........................................................................................79
Praca z inspektorem obiektw...........................................................................................79
Edycja waciwoci.....................................................................................................80
Zdarzenia.....................................................................................................................82
Menu inspektora obiektw..........................................................................................82
Opcje inspektora obiektw .........................................................................................83
Projektant formularzy........................................................................................................83
Siatka pomocnicza ......................................................................................................84
Usuwanie, kopiowanie i wklejanie .............................................................................85
Zaznaczanie wielu komponentw...............................................................................85
Menu projektanta formularzy .....................................................................................87
Pasek narzdziowy Align............................................................................................87
Pasek narzdziowy Spacing........................................................................................88
Pasek narzdziowy Position........................................................................................89
Opcje projektanta formularzy .....................................................................................89
Projekty .............................................................................................................................90
Opcje projektu.............................................................................................................90
Edytor WYSIWYG ...........................................................................................................97
Projektant strony WWW.............................................................................................98
Inspektor obiektw......................................................................................................98
Dodatkowe paski narzdzi ..........................................................................................98
Edycja pozostaych plikw........................................................................................100
Opcje HTML w Delphi.............................................................................................100
Projektowanie interfejsu..................................................................................................101
Paski narzdziowe.....................................................................................................101
Ikony dla paska narzdzi...........................................................................................103
Menu narzdzi...........................................................................................................104
Menu podrczne........................................................................................................106
Pozostae elementy interfejsu ...................................................................................106
Kilka wersji jzykowych programu ................................................................................110
Tworzenie angielskiej wersji jzykowej...................................................................110
Tumaczenie projektu................................................................................................112
Kompilacja projektu..................................................................................................113
Opcje Translation Manager.......................................................................................114
Opcje rodowiska ............................................................................................................115
FAQ.................................................................................................................................116
Podsumowanie ................................................................................................................117

Rozdzia 3.

Jzyk Delphi................................................................................................................................................119
Aplikacje konsolowe .......................................................................................................120
Zapisywanie projektu................................................................................................120
Po kompilacji ........................................................................................................121
Najprostszy program .......................................................................................................122
Podstawowa skadnia ......................................................................................................122
Czytanie kodu ...........................................................................................................122
Wielko liter ............................................................................................................123
Pamitaj o redniku! .................................................................................................123

Delphi 8 .NET. Kompendium programisty


Bloki begin i end.......................................................................................................123
Dyrektywa program ..................................................................................................124
Komentarze .....................................................................................................................125
Umiejtne komentowanie .........................................................................................126
Wypisywanie tekstu ........................................................................................................126
Pooenie instrukcji...................................................................................................128
Instrukcja Writeln .....................................................................................................128
Zmienne...........................................................................................................................129
Deklaracja zmiennych...............................................................................................129
Typy zmiennych........................................................................................................130
Deklaracja kilku zmiennych .....................................................................................131
Przydzia danych.......................................................................................................132
Deklaracja zakresu danych .......................................................................................134
Restrykcje w nazewnictwie.......................................................................................135
Stae.................................................................................................................................135
Domylne typy staych..............................................................................................135
Uywanie zmiennych ......................................................................................................136
czenie danych........................................................................................................137
Tablice danych ................................................................................................................138
Tablice jako stae ......................................................................................................139
Tablice wielowymiarowe..........................................................................................140
Tablice dynamiczne ..................................................................................................142
Polecenia Low i High................................................................................................143
Operatory.........................................................................................................................144
Operatory przypisania...............................................................................................144
Operatory porwnania ..............................................................................................144
Operatory logiczne....................................................................................................145
Operatory arytmetyczne............................................................................................146
Operatory bitowe ......................................................................................................148
Pozostae operatory...................................................................................................148
Instrukcje warunkowe .....................................................................................................149
Instrukcja if..then.......................................................................................................149
Instrukcja case..of .....................................................................................................152
Instrukcja else ...........................................................................................................155
Programowanie proceduralne..........................................................................................158
Procedury i funkcje .........................................................................................................158
Procedury ..................................................................................................................158
Funkcje......................................................................................................................161
Zmienne lokalne........................................................................................................162
Parametry procedur i funkcji ....................................................................................163
Parametry domylne..................................................................................................165
Przecianie funkcji i procedur.................................................................................166
Przekazywanie parametrw do procedur i funkcji....................................................167
Procedury zagniedone ...........................................................................................169
Wasne typy danych ........................................................................................................169
Tablice jako nowy typ...............................................................................................170
Aliasy typw ...................................................................................................................171
Rekordy ...........................................................................................................................171
Przekazywanie rekordw jako parametrw procedury.............................................172
Deklarowanie rekordu jako zmiennej .......................................................................173
Instrukcja packed ......................................................................................................173
Deklarowanie tablic rekordowych ............................................................................174
Deklarowanie dynamicznych tablic rekordowych....................................................174

Spis treci

9
Instrukcja wica with...................................................................................................175
Programowanie strukturalne ...........................................................................................176
Moduy ............................................................................................................................176
Tworzenie nowego moduu.......................................................................................176
Budowa moduu ........................................................................................................177
Wczanie moduu ....................................................................................................178
Funkcje wbudowane .................................................................................................178
Sekcje Initialization oraz Finalization ......................................................................179
Dyrektywa forward ...................................................................................................180
Konwersja typw.............................................................................................................182
Rzutowanie......................................................................................................................182
Parametry nieokrelone.............................................................................................184
Ptle.................................................................................................................................184
Ptla for..do...............................................................................................................185
Ptla while..do...........................................................................................................187
Ptla repeat..until ......................................................................................................188
Procedura Continue...................................................................................................189
Procedura Break........................................................................................................189
Zbiory ..............................................................................................................................190
Przypisywanie elementw zbioru .............................................................................191
Odczytywanie elementw ze zbioru .........................................................................192
Dodawanie i odejmowanie elementw zbioru..........................................................193
Typy wariantowe.............................................................................................................193
VarType, VarTypeAsText ........................................................................................194
VarToStr ...................................................................................................................195
VarIs*........................................................................................................................195
Pliki doczane ................................................................................................................195
Etykiety ...........................................................................................................................196
Dyrektywy ostrzegawcze ................................................................................................197
Wstp do algorytmiki ......................................................................................................198
Schematy blokowe ....................................................................................................198
Przykad obliczanie silni ......................................................................................200
Funkcje konsolowe w .NET ............................................................................................203
Przykad odczyt zawartoci pliku ........................................................................204
Efektywny kod ................................................................................................................206
Instrukcje warunkowe...............................................................................................206
Typ Boolean w tablicach ..........................................................................................207
Zbiory........................................................................................................................209
czenie znakw w acuchach................................................................................209
FAQ.................................................................................................................................210
Podsumowanie ................................................................................................................211

Rozdzia 4.

Delphi bardziej zaawansowane.............................................................................................................213


Na czym polega programowanie obiektowe? .................................................................214
Biblioteki wizualne .........................................................................................................214
Podstawowy kod formularza...........................................................................................215
Formularz w VCL.NET...................................................................................................217
Sekcja uses ................................................................................................................217
Klasa .........................................................................................................................218
Zmienna wskazujca na klas...................................................................................218
Plik *.nfm..................................................................................................................218
Generowanie kodu ....................................................................................................219
Nazwy komponentw ...............................................................................................219

10

Delphi 8 .NET. Kompendium programisty


Programowanie zdarzeniowe ..........................................................................................220
Generowanie zdarze................................................................................................220
Lista zdarze w inspektorze obiektw......................................................................222
Jedno zdarzenie dla kilku obiektw..........................................................................223
Edytor kodu .....................................................................................................................224
Ukrywanie kodu........................................................................................................225
Makra ........................................................................................................................225
Code Insight ..............................................................................................................226
Code Completion ......................................................................................................227
Menu podrczne edytora kodu..................................................................................227
Opcje edytora kodu ...................................................................................................229
Skrawki kodu ............................................................................................................234
To-Do List .......................................................................................................................235
Generowanie komentarza TODO .............................................................................236
Menu podrczne okna ...............................................................................................237
Szablony kodu .................................................................................................................237
Klasy................................................................................................................................238
Skadnia klasy ...........................................................................................................239
Do czego su klasy?...............................................................................................239
Hermetyzacja ............................................................................................................240
Dziedziczenie............................................................................................................240
Polimorfizm ..............................................................................................................241
Instancja klasy...........................................................................................................241
Konstruktor ...............................................................................................................241
Destruktor .................................................................................................................242
Pola ...........................................................................................................................242
Metody ......................................................................................................................243
Tworzenie konstruktorw i destruktorw.................................................................244
Destruktory w .NET..................................................................................................247
Poziomy dostpu do klasy ........................................................................................251
Dziedziczenie............................................................................................................253
Przecianie metod ...................................................................................................254
Typy metod ...............................................................................................................254
Przedefiniowanie metod............................................................................................256
Typy zagniedone ...................................................................................................260
Parametr Self.............................................................................................................261
Brak konstruktora......................................................................................................261
Brak instancji klasy...................................................................................................263
Class helpers .............................................................................................................264
Klasy zaplombowane ................................................................................................265
Sowo kluczowe static...............................................................................................266
Waciwoci ..............................................................................................................267
Parametr Sender procedury zdarzeniowej.......................................................................270
Przechwytywanie informacji o nacinitym klawiszu..............................................270
Obsuga parametru Sender........................................................................................272
Operatory is i as...............................................................................................................273
Metody w rekordach........................................................................................................274
Interfejsy..........................................................................................................................275
Przeadowanie operatorw ..............................................................................................277
Jakie operatory mona przeadowa? .......................................................................277
Deklaracja operatorw ..............................................................................................279
Binary i Unary...........................................................................................................279

Spis treci

11
Wyjtki ............................................................................................................................280
Sowo kluczowe try..except ......................................................................................280
Sowo kluczowe try..finally ......................................................................................281
Sowo kluczowe raise ...............................................................................................282
Klasa Exception ........................................................................................................283
Selektywna obsuga wyjtkw..................................................................................284
Zdarzenie OnException ............................................................................................284
Meneder projektu...........................................................................................................287
Model View ..............................................................................................................288
Data Explorer ............................................................................................................288
Programowanie w .NET..................................................................................................288
Wsplny model programowania ...............................................................................288
Klasa System.Object .................................................................................................288
Gwne przestrzenie nazw ........................................................................................290
Komponenty .NET....................................................................................................291
Atrybuty podzespou.................................................................................................294
Mechanizm Reflection ..............................................................................................297
Identyfikatory ..................................................................................................................310
Aplikacje .NET................................................................................................................311
Deasembler .NET......................................................................................................311
Global Assembly Cache Tool ...................................................................................312
WinCV ......................................................................................................................314
Narzdzie konfiguracji .NET Framework.................................................................315
PEVerify narzdzie weryfikacji...........................................................................315
Eksplorator moduw ......................................................................................................316
Opcje eksploratora ....................................................................................................317
FAQ.................................................................................................................................318
Podsumowanie ................................................................................................................319

Rozdzia 5.

Wykrywanie bdw w aplikacjach..................................................................................................321


Rodzaje bdw ...............................................................................................................322
Opcje kompilatora ...........................................................................................................323
Czste bdy programisty ................................................................................................325
Niezainicjowane zmienne obiektowe .......................................................................325
Zwalnianie obiektw.................................................................................................326
Tablice.......................................................................................................................326
Wskaniki a .NET ...........................................................................................................327
Rejestry .....................................................................................................................328
Stos............................................................................................................................328
Sterta .........................................................................................................................329
Do czego su wskaniki? .......................................................................................329
Debuger Delphi ...............................................................................................................329
Interfejs Debug..........................................................................................................330
Opcje projektu...........................................................................................................330
Punkty przerwa .......................................................................................................332
Polecenie Run to Cursor ...........................................................................................337
Podgld zmiennych...................................................................................................337
Inspektor ledzenia....................................................................................................340
Evaluate/Modify .......................................................................................................341
Okno Call Stack ........................................................................................................342
Okno Local Variables ...............................................................................................343
Okno Thread Status...................................................................................................344
Okno Event Log........................................................................................................345

12

Delphi 8 .NET. Kompendium programisty


Okno moduw..........................................................................................................346
Okno deasemblacji....................................................................................................346
Polecenie Go to Address...........................................................................................347
Okno Message View .................................................................................................347
Praca krokowa .................................................................................................................348
Ikony na gutterze.......................................................................................................348
Przekraczanie i wkraczanie.......................................................................................349
Opcje debugera................................................................................................................350
Strona Borland .NET Debugger................................................................................351
Zakadka Language Exceptions ................................................................................351
Zakadka Event Log..................................................................................................352
Menu zwizane z debugerem ..........................................................................................352
FAQ.................................................................................................................................354
Podsumowanie ................................................................................................................354

Rozdzia 6.

Migracja do .NET......................................................................................................................................355
Czy warto przechodzi do .NET? ...................................................................................356
Ewolucja platform programistycznych ...........................................................................356
WinFX.......................................................................................................................357
Brakujce komponenty....................................................................................................357
Zmiany we waciwociach ......................................................................................358
Elementy jzyka ..............................................................................................................358
Wszystko jest klas!..................................................................................................358
Przestrzenie nazw......................................................................................................361
Kompilacja warunkowa ............................................................................................363
Brakujce elementy...................................................................................................364
acuchy w Delphi ...................................................................................................373
Komunikaty...............................................................................................................378
Destruktory ...............................................................................................................379
WinForms........................................................................................................................380
Brak pliku *.dfm/*.nfm.............................................................................................380
VCL i WinForms ......................................................................................................385
Platform Invoke...............................................................................................................386
Wywoanie tradycyjne ..............................................................................................387
Uycie atrybutu DLLImport .....................................................................................388
Parametry wyjciowe ................................................................................................388
Dane wskanikowe ...................................................................................................390
Pobieranie danych z bufora.......................................................................................391
Kod zarzdzany i niezarzdzany...............................................................................392
Uywanie funkcji Win32 ..........................................................................................393
Marshaling ................................................................................................................394
Wady PInvoke...........................................................................................................406
.NET a obiekty COM ......................................................................................................406
Terminologia COM...................................................................................................406
Mechanizm COM Callable Wrappers.......................................................................408
Przykadowy podzesp ............................................................................................408
Utworzenie biblioteki typu .......................................................................................411
Uycie biblioteki typu...............................................................................................412
Korzystanie z klasy COM.........................................................................................414
Kontrolki COM w aplikacjach .NET ........................................................................417
Aplikacje sieciowe ..........................................................................................................418
Bazy danych ....................................................................................................................419
FAQ.................................................................................................................................419
Podsumowanie ................................................................................................................420

Spis treci

13

Cz II .......................................................................................................................................421
Rozdzia 7.

Bazodanowa architektura Delphi.......................................................................................................423


Czym jest baza danych? ..................................................................................................423
Dziaanie baz danych ......................................................................................................424
Rozwizania alternatywne...............................................................................................425
Baza danych kontra wasny mechanizm .........................................................................426
Rodzaje baz danych.........................................................................................................427
Bazy proste................................................................................................................427
Relacyjne bazy danych .............................................................................................427
Bazy danych typu klient-serwer................................................................................428
Wielowarstwowa architektura baz danych ...............................................................429
Borland Database Engine ................................................................................................429
Sterowniki bazy danych............................................................................................430
Zbiory danych ...........................................................................................................430
Komponenty bazodanowe.........................................................................................431
Praca z komponentami ....................................................................................................435
Otwieranie i zamykanie zbioru danych.....................................................................435
Przemieszczanie si wrd rekordw .......................................................................435
Modyfikacja zawartoci ............................................................................................437
Pola rekordu bazy danych.........................................................................................439
Edytor pl........................................................................................................................442
Pola obliczeniowe .....................................................................................................443
Pola przegldowe ......................................................................................................445
BDE Administrator .........................................................................................................445
Tworzenie aliasu .......................................................................................................446
Praca z tabelami ..............................................................................................................447
Tworzenie tabel.........................................................................................................447
Tworzenie kolumn w kodzie programu ....................................................................447
Filtrowanie tabel..............................................................................................................449
Wykorzystanie waciwoci Filter ............................................................................450
Zdarzenie OnFilterRecord ........................................................................................451
Wyszukiwanie rekordw.................................................................................................452
Metoda Locate ..........................................................................................................453
Metoda FindKey .......................................................................................................454
Przykadowa aplikacja.....................................................................................................454
Zaoenia...................................................................................................................455
Tworzenie interfejsu .................................................................................................455
Kod rdowy aplikacji.............................................................................................460
wiczenia dodatkowe ...............................................................................................471
Zakadki...........................................................................................................................471
Pozostae komponenty bazodanowe................................................................................472
Komponent TDbGrid ................................................................................................472
Komponent TDbNavigator .......................................................................................473
Komponent TDbText ................................................................................................473
Komponent TDbEdit.................................................................................................474
Komponent TDbMemo.............................................................................................474
Komponent TDbRichEdit .........................................................................................474
Komponent TDbImage .............................................................................................475
Komponent TDbCheckBox ......................................................................................475
FAQ.................................................................................................................................475
Podsumowanie ................................................................................................................477

14
Rozdzia 8.

Delphi 8 .NET. Kompendium programisty

dbExpress .....................................................................................................................................................479
Architektura klient-serwer...............................................................................................479
Klient.........................................................................................................................480
Serwer .......................................................................................................................480
Klient-serwer oraz bazy lokalne ...............................................................................481
Jzyk SQL .......................................................................................................................481
Baza MySQL ............................................................................................................482
InterBase ...................................................................................................................482
Schemat tworzenia aplikacji klient-serwer .....................................................................483
Analiza ......................................................................................................................483
Projekt .......................................................................................................................483
Budowa .....................................................................................................................483
Programowanie w SQL-u................................................................................................484
Klient MySQL ..........................................................................................................484
Tworzenie bazy danych ............................................................................................486
Tworzenie tabel.........................................................................................................487
Zmiana struktury tabeli .............................................................................................493
Indeksy......................................................................................................................495
Dodawanie rekordw ................................................................................................498
Wywietlanie informacji...........................................................................................500
Uaktualnianie zawartoci ..........................................................................................505
Usuwanie danych z tabeli .........................................................................................506
Eksport i import bazy................................................................................................506
Aplikacja zarzdzajca MySQL......................................................................................507
Praca z programem MySQL Control Center ............................................................508
Praca z tabelami ........................................................................................................509
InterBase..........................................................................................................................511
Uruchomienie............................................................................................................512
Program IBConsole...................................................................................................512
MySQL a InterBase ..................................................................................................516
Tworzenie tabel InterBase ........................................................................................525
dbExpress ........................................................................................................................526
dbExpress kontra BDE..............................................................................................527
Poczenie z baz danych..........................................................................................527
Komponent TSQLDataSet ........................................................................................533
Komponent TSQLMonitor........................................................................................537
Pozostae komponenty dbExpress.............................................................................540
Dystrybucja aplikacji dbExpress...............................................................................540
Okno Data Explorer ........................................................................................................540
Wprowadzanie zmian w tabeli..................................................................................541
Edytor pocze ........................................................................................................541
FAQ.................................................................................................................................542
Podsumowanie ................................................................................................................543

Rozdzia 9.

IBX.................................................................................................................................................................. 545
Dlaczego IBX? ................................................................................................................545
Zalety IBX ................................................................................................................546
Komponenty IBX ............................................................................................................546
Komponent TIBDatabase..........................................................................................547
TIBDataSet ...............................................................................................................550
Komponenty reprezentujce dane.............................................................................553
TIBSQLMonitor .......................................................................................................554
Komponenty administracyjne ...................................................................................554

Spis treci

15
czenie ze zdalnym serwerem.......................................................................................554
Przykad wykorzystania IBX ..........................................................................................555
Tworzenie bazy danych ............................................................................................556
Piszemy aplikacj Helion DB!..................................................................................562
FAQ.................................................................................................................................566
Podsumowanie ................................................................................................................566

Rozdzia 10.

ADO.NET i BDP.NET.......................................................................................................................... 567


Czym jest ADO? .............................................................................................................567
Terminologia ...................................................................................................................568
Warstwy dostpu .............................................................................................................569
Architektura baz danych..................................................................................................570
ADO.NET .......................................................................................................................570
Architektura ADO.NET............................................................................................571
rdo danych ...........................................................................................................571
Dostarczyciel danych ................................................................................................571
Zbiory danych ...........................................................................................................572
ADO.NET w praktyce.....................................................................................................572
czenie ze rdem ODBC .....................................................................................573
czenie ze rdem OleDB .....................................................................................574
Wysyanie zapyta (MS Access) ..............................................................................575
Sterowniki zarzdzane.....................................................................................................578
BDP.NET ........................................................................................................................579
czenie z baz InterBase.........................................................................................579
Komponent BdpCommand .......................................................................................582
Komponent BdpDataAdapter....................................................................................583
Wywietlanie zwartoci tabeli ..................................................................................585
Praca z danymi..........................................................................................................585
Dystrybucja aplikacji BDP.NET .....................................................................................588
MySQL w ADO.NET .....................................................................................................588
Korzystanie ze sterownika MySQL ..........................................................................589
Komponenty wizualne ..............................................................................................595
FAQ.................................................................................................................................597
Podsumowanie ................................................................................................................597

Cz III......................................................................................................................................599
Rozdzia 11.

XML ...............................................................................................................................................................601
Niezaleno XML-a.......................................................................................................602
XHTML...........................................................................................................................602
Budowa dokumentu.........................................................................................................602
Prolog........................................................................................................................603
Znaczniki...................................................................................................................604
Atrybuty ....................................................................................................................606
Podstawowa terminologia.........................................................................................606
Wze gwny ...........................................................................................................607
Komentarze ...............................................................................................................607
Przestrzenie nazw......................................................................................................607
Skadnia przestrzeni nazw.........................................................................................608
Przestrzenie nazw i atrybuty .....................................................................................608

16

Delphi 8 .NET. Kompendium programisty


DTD.................................................................................................................................609
Deklaracja elementu..................................................................................................610
Deklaracja atrybutu...................................................................................................610
DTD w osobnym pliku..............................................................................................612
Encje tekstowe.................................................................................................................613
XSD.................................................................................................................................614
Nagwek XSD .........................................................................................................614
Elementy XSD ..........................................................................................................615
Typy danych..............................................................................................................615
Typy proste ...............................................................................................................616
XML a bazy danych ........................................................................................................619
XSL .................................................................................................................................619
DOM ...............................................................................................................................620
SAX.................................................................................................................................621
Korzystanie z System.XML ............................................................................................621
adowanie pliku XML..............................................................................................621
Odczyt dowolnego elementu.....................................................................................622
Odczyt wartoci atrybutw .......................................................................................624
Tworzenie pliku XML ..............................................................................................627
Eksport danych do postaci XML ..............................................................................632
Modyfikacja plikw ..................................................................................................634
FAQ.................................................................................................................................637
Podsumowanie ................................................................................................................638

Rozdzia 12.

Programowanie sieciowe......................................................................................................................... 639


Odrobina teorii ................................................................................................................640
IP ..............................................................................................................................640
TCP ...........................................................................................................................641
Porty..........................................................................................................................641
HTTP.........................................................................................................................641
HTTPS ......................................................................................................................642
FTP............................................................................................................................642
SMTP ........................................................................................................................643
Narzdzia.........................................................................................................................643
Pakiet Indy.......................................................................................................................644
Protok HTTP..........................................................................................................644
Przestrze nazw System.Net ...........................................................................................655
danie i odpowied .................................................................................................655
DNS oraz adres IP.....................................................................................................661
Korzystanie z gniazd .......................................................................................................663
Przestrze System.Net.Sockets.................................................................................663
Tworzenie aplikacji-serwera.....................................................................................664
Tworzenie aplikacji-klienta ......................................................................................668
FAQ.................................................................................................................................672
Podsumowanie ................................................................................................................672

Rozdzia 13.

ASP.NET...................................................................................................................................................... 673
Dynamiczne strony WWW .............................................................................................673
CGI............................................................................................................................674
PHP ...........................................................................................................................675
ASP ...........................................................................................................................676
ASP.NET ..................................................................................................................676

Spis treci

17
ASP i ASP.NET ..............................................................................................................677
Zmiany w kodzie.......................................................................................................677
Kompilacja kodu.......................................................................................................677
Migracja do ASP.NET ..............................................................................................677
Zgodno ze standardem XHTML............................................................................680
Narzdzia.........................................................................................................................681
Edytor........................................................................................................................681
Serwer .......................................................................................................................682
Instalacja ASP.NET ..................................................................................................683
Co trzeba umie?.......................................................................................................684
ASP.NET w Delphi .........................................................................................................684
Elementy interfejsu ...................................................................................................685
Pierwszy projekt........................................................................................................686
Opcje ASP.NET........................................................................................................687
Web Forms ......................................................................................................................687
Przestrze nazw System.Web.UI..............................................................................687
Praca z ASP.NET ............................................................................................................688
Kontrolki dziaajce po stronie serwera....................................................................688
Zdarzenia komponentw...........................................................................................690
Kontrolki Web Forms ...............................................................................................693
Code Behind..............................................................................................................698
Kontrolki uytkownika .............................................................................................700
Tworzenie kontrolek w Delphi .................................................................................701
Komponenty .NET w ASP.NET...............................................................................706
Konfiguracja stron ASP.NET ...................................................................................714
Sesje ..........................................................................................................................716
Wysyanie e-maili .....................................................................................................721
Monitorowanie stron ASP.NET................................................................................722
Pami podrczna .....................................................................................................723
Bazy danych w ASP.NET ...............................................................................................724
czenie si z baz....................................................................................................724
Kontrolki bazodanowe ..............................................................................................726
Technologie internetowe .................................................................................................729
Komponenty HTML Producer..................................................................................729
WebBroker................................................................................................................729
Internet Express ........................................................................................................730
WebSnap ...................................................................................................................730
IntraWeb ...................................................................................................................730
ASP.NET ..................................................................................................................730
FAQ.................................................................................................................................731
Podsumowanie ................................................................................................................731

Rozdzia 14. Usugi sieciowe ........................................................................................................................................... 733


Czym s usugi sieciowe? ...............................................................................................733
Dziaanie usug sieciowych.............................................................................................735
HTTP.........................................................................................................................735
XML..........................................................................................................................735
Infrastruktura usug sieciowych................................................................................735
Uycie usug sieciowych.................................................................................................738
Wyszukiwarka google.com.......................................................................................738
Interfejs aplikacji ......................................................................................................740
adowanie usugi sieciowej......................................................................................740
Korzystanie z usugi Web .........................................................................................742

18

Delphi 8 .NET. Kompendium programisty


Usugi sieciowe w Delphi ...............................................................................................748
Tworzenie usugi sieciowej.......................................................................................749
Podgld usugi sieciowej...........................................................................................751
Usuga Web na stronie ASP.NET.............................................................................754
Plik rdowy *.asmx................................................................................................757
Bezpieczestwo usug sieciowych ..................................................................................757
Bazy danych ....................................................................................................................759
Projektowanie usugi.................................................................................................759
Sprawdzanie usugi sieciowej ...................................................................................766
Usuga sieciowa w aplikacji ASP.NET ....................................................................767
FAQ.................................................................................................................................769
Podsumowanie ................................................................................................................770

Dodatki.......................................................................................................................................771
Dodatek A

Akronimy ..................................................................................................................................................... 773

Dodatek B

Spis przestrzeni nazw .NET.................................................................................................................. 775

Dodatek C

Sowniczek....................................................................................................................................................779

Dodatek D

Zasady pisania kodu................................................................................................................................ 793


Stosowanie wci ............................................................................................................794
Instrukcje begin i end ......................................................................................................794
Styl wielbdzi w nazwach procedur ...........................................................................795
Stosuj wielkie litery.........................................................................................................795
Parametry procedur .........................................................................................................796
Instrukcja if .....................................................................................................................796
Instrukcja case .................................................................................................................796
Obsuga wyjtkw...........................................................................................................797
Klasy................................................................................................................................797
Komentarze .....................................................................................................................797
Pliki i nazwy formularzy .................................................................................................798
Notacja wgierska ...........................................................................................................798
Czy warto?.......................................................................................................................799

Skorowidz .....................................................................................................................................................801

Delphi bardziej zaawansowane


Jak dotd mwilimy o programowaniu strukturalnym, proceduralnym, ale nie wspomnielimy o obiektach. Idea programowania obiektowego jest teraz niezwykle istotna oraz bardzo
popularna. Wikszo jzykw wysokiego poziomu, np. Delphi, C++, C#, Java, Python, PHP
i inne, umoliwia tworzenie obiektw. Na przykad dobry skdind C nie umoliwia programowania obiektowego. I to jest wielka wada tych jzykw w obecnych czasach.
Rozdzia niniejszy powicony bdzie przede wszystkim opisowi tworzenia klas w Delphi.
Omwimy take nowoci wprowadzone do Delphi za spraw .NET, a take zwrcimy uwag
na wiele narzdzi i opcji Delphi zwizanych z edycj kodu rdowego.

W tym rozdziale:
G nauczysz si korzysta z edytora kodu,
G poznasz opcje edytora kodu,
G dowiesz si, czym jest programowanie obiektowe i jak tworzy klasy,
G poznasz nowe elementy jzyka programowania wprowadzone za spraw .NET,
G zapoznasz si z podstawowymi ideami programowania na platformie .NET,
G dowiesz si, czym s wyjtki,
G zostan Ci przedstawione podstawowe narzdzia doczone do pakietu .NET

Framework.

214

Cz I

Na czym polega programowanie obiektowe?


Programy rozrastaj si coraz bardziej i bardziej. Tak samo jak kiedy nie wystarczaa idea
programowania proceduralnego, teraz nie wystarcza ju programowanie strukturalne.
Koncepcja programowania obiektowego pojawia si ju w latach 60. za spraw jzyka Simula 67
zaprojektowanego przez naukowcw z Oslo w celu przeprowadzania symulacji zachowania
si statkw. Jednake idea programowania obiektowego swoj popularyzacj zawdzicza jzykowi SmallTalk. Poowa lat 80. to czas, kiedy programowanie obiektowe stao si dominujc technik gwnie za spraw C++. Wtedy to te w wielu innych jzykach pojawia si
moliwo tworzenia obiektw.
Mona powiedzie, e klasa to paczuszka, pewien element programu, ktry wykonuje jakie
funkcje. Klasa zawiera metody (procedury i funkcje) wspdziaajce ze sob w celu wykonania
jakiego zadania. Programowanie obiektowe przyczynio si do tego, e takie podprogramy
jak klasy mog by wykorzystywane w wielu innych projektach uatwia to jeszcze bardziej
zarzdzanie i konserwacj kodu.
Zamy, e napisae klas do obsugi poczty (wysyanie i odbieranie). Klasa moe mie procedury  (pocz), 
(wylij e-mail),  (rozcz). Z kolei procedura 
moe wywoywa inn, np.  (ktra te jest procedur znajdujc si w klasie), wywietlajc bd w razie niepowodzenia i zapisujc odpowiedni tekst w dzienniku programu (czyli,
inaczej mwic, w logach plikach z rozszerzeniem *.log). Teraz tak klas moesz wykorzysta w wielu swoich aplikacjach wystarczy skopiowa fragment kodu i ju gotowa jest
obsuga bdw, czenie itp. Tak klas moesz udostpni innym uytkownikom lub swoim
wsppracownikom. Taki inny uytkownik nie musi wiedzie, jak dziaa klasa wane jest dla
niego, co ona robi (wysya e-maile). Uytkownik musi jedynie wiedzie, e istnieje metoda 
, ktra poczy go z danym serwerem oraz musi mie wiadomo obecnoci kilku innych
procedur. To wszystko nie interesuje go obsuga bdw nie musi nawet zdawa sobie
sprawy z jej istnienia.
Mona by oczywicie utworzy nowy modu, a w module umieci take procedury ,

oraz ,  i reszt potrzebnego kodu. Jednak w takim przypadku metody
i zmienne (zmienne take mog by elementami danej klasy) nie oddziauj na siebie w takim
stopniu. Przykadowo, uytkownik korzystajcy z takiego kodu bdzie mia dostp do tych
zmiennych, do ktrych nie powinien go mie. Bdzie mg te wywoa swobodnie procedur
 a nie powinien, bo moe to spowodowa niepodane skutki. Dziki klasom moesz
sprawi, i taka procedura  nie bdzie dostpna poza klas; jej elementy (zmienne) te
bd nie do odczytania przez przyszego uytkownika.

Biblioteki wizualne
W rzeczywistoci biblioteki takie jak VCL.NET (ang. Visual Component Library) to szereg moduw i klas wsppracujcych ze sob. Dziki idei programowania obiektowego to wszystko
dziaa bardzo sprawnie i jest nad wyraz czytelne. Gwnie dziki funkcji dziedziczenia, ktra

Rozdzia 4. G Delphi bardziej zaawansowane

215

polega na rozszerzeniu funkcjonalnoci klas. Klasa potomna moe dziedziczy po klasie bazowej, przejmujc od niej ca funkcjonalno, ale jednoczenie mona rozszerzy j o nowe
funkcje. Tak samo zbudowana jest biblioteka VCL w oparciu o dziedziczenie szeregu klas.

Podstawowy kod formularza


Poprzednio zajmowalimy si jedynie Windows Forms, ale od strony wizualnej, czyli gwnie
projektantem formularzy. Nie zajmowalimy si szczegami takimi jak kod rdowy formularza. Po otwarciu nowego projektu WinForms na pierwszym planie pojawi si czysty formularz. Klawiszem F12 przejd do edytora kodu. Podstawowy kod moduu rdowego
przedstawiony zosta na listingu 4.1.
Listing 4.1. Podstawowy kod moduu WinForms


 
 

 
 

  






 


!
"#$%&'()*    *+
  ,
---.

 /
---$ 0   , 1 
---.-

 /

 2

  
---.

 /
---$ 0 
3    4

---3  3
333    
---.-

 /
   '5 
 
"#%)$%&'()+
    
---.

 /
---    1  
---.-

 /
    26 ! , 
 ,
"7 ,   +
1
   
 
8
12$
$ 0 9 1  ( 
!!:




216

Cz I
"#$%&'()*
      *+
---.

 /
---$ 0 
3    44

---3  3
333    
---.-

 /
   
'5 
 
1 
 
 2

    
 5 2
 5   ;<<;<<!
  =2*
*

"#%)$%&'()+
   
 26 !
1 
3 
1 

 ./3 

  !
 
3   !

  
 
1 
3   
---$ 0  
   
-'5 
 
---((29    '5 
 
- 


Naley ju na samym pocztku zaznaczy, e skadnia moduu WinForms znaczco rni si


od standardowego VCL.NET (listing 4.2).
Listing 4.2. Kod formularza w VCL.NET
>?
 
 
  >@  & 3 




? 
!
 ,
"7 ,   +
1
"71  +
 

Rozdzia 4. G Delphi bardziej zaawansowane

217

,

?2
?



"#$A
+


Na pierwszy rzut oka wida wyran rnic pomidzy kodem formularza WinForms a VCL.
NET. Przede wszystkim ten drugi jest prostszy i krtszy.
Na razie omwimy podstawowe czci kodu formularza w VCL.NET, gdy jest on prostszy
i moe uatwi uytkownikowi zrozumienie znaczenia poszczeglnych elementw.

Formularz w VCL.NET
Moduy i ich budowa zostay szczegowo omwione w poprzednim rozdziale powiconym
elementom jzyka Delphi. Zapamitaj! Kademu formularzowi odpowiada jeden modu z odpowiednim kodem, lecz to stwierdzenie nie dziaa w drug stron modu niekoniecznie
musi by formularzem.
Podczas projektowania wizualnego Delphi samodzielnie edytuje kod rdowy, dodajc lub
zmieniajc odpowiednie elementy dziki temu projektowanie staje si szybsze, a my nie
musimy martwi si o szczegy zwizane z dodaniem jakiego potrzebnego elementu.
Kod rdowy formularza (moduu) skada si take ze standardowych sekcji i sw kluczowych typu:  , 
, ,  
 .

Sekcja uses
Podczas tworzenia nowego projektu Delphi doda do sekcji  standardowe moduy konieczne do prawidowego dziaania aplikacji. W tych moduach znajduj si deklaracje odpowiednich klas, dziki czemu projekt moe zosta skompilowany. Przykadowo, doprowad sekcj
 do takiego wygldu:
 


Po prbie kompilacji Delphi ju na pocztku wywietli bd:  




    !" . Komunikat mwi o tym, e nazwa !" nie jest rozpoznawana
dla kompilatora. Stao si tak dlatego, e usunlimy z sekcji  modu ", ktry zawiera
deklaracj typu !".

218

Cz I

Klasa
Poniszy fragment w kodzie rdowym jest deklaracj klasy, o ktrej tyle mwilimy:


? 
!
 ,
"7 ,   +
1
"71  +
 

W tym momencie zadeklarowany zosta nowy typ !", ktry jest klas wywodzc si
z kolei z klasy bazowej !".

Wskazwka
W VCL.NET nazwy wszystkich klas zaczynaj si od litery !.

Zmienna wskazujca na klas


Poniej deklaracji klasy, jeszcze w sekcji 
, zadeklarowana jest standardowo zmienna, ktra wskazuje na nasz typ !":
,

?2
?

Plik *.nfm
Komponenty umieszczane na formularzu mog mie rne waciwoci. Te dane musz by
gdzie przechowywane. W VCL.NET miejscem, gdzie zapisywane s te informacje, jest plik
*.nfm (w poprzednich wersjach Delphi plik mia rozszerzenie *.dfm), ktrego zawarto zostaa przedstawiona na listingu 4.3.
Listing 4.3. Zawarto pliku *.nfm
1B 
?2
?
*
?*
 6
3  %9>CDE9$%
  =
E 34??
)
*3
*
 8:
E 3 F<
3;FG

Rozdzia 4. G Delphi bardziej zaawansowane

219

C ?;
?;
7= 7 '3HI
 =E 3?;


Praktycznie nigdy nie zachodzi potrzeba, aby rcznie edytowa ten plik. To zadanie naley ju do
Delphi, ktre dokonuje zapisu i odczytu danych wanie z tego pliku. Pliki *.nfm zawieraj informacje na temat formularza, jego waciwoci, komponentw oraz waciwoci komponentw.
W pliku rdowym formularza znajduje si dyrektywa kaca kompilatorowi doczy do
projektu plik *.nfm:
"#$A
+

Jest to specjalna instrukcja na pierwszy rzut oka wygldajca jak komentarz, jednak jest
informacj dla kompilatora o wczeniu do projektu wszystkich plikw z rozszerzeniem *.nfm.

Generowanie kodu
Powr do projektanta formularzy. Odszukaj na palecie narzdzi komponent #$  i umie
go na formularzu. Z powrotem przejd do edytora kodu zauwa, e Delphi w sekcji 
dodao nowe moduy: #
% $  oraz #
%  #$ , ktre s wymagane do
prawidowego skompilowania aplikacji. Dodao rwnie now linijk w klasie ":
6& ?26& 

Dziki temu oszczdzamy na czasie, nie muszc wpisywa tego rcznie.


Powysza linia w klasie " identyfikuje komponent typu ! #$  o nazwie #$ . Delphi
automatycznie nadaje wasne nazwy tworzonym komponentem, przypisujc im kolejne numery: #$ , #$ & itd. Jeeli na formularzu umiecisz kilka komponentw typu !#, to
Delphi nazwie je odpowiednio: #, #& itd.

Nazwy komponentw
Nazwa komponentu jest symboliczna. Z punktu widzenia kompilatora nie jest wane, czy komponent nazywa si # czy !' ("
()# *+. Wane jest jedynie to, aby nazwa
bya unikalna, a wic nie mog istnie dwa komponenty o tej samej nazwie. W nazwie komponentu nie mog by uyte polskie znaki; nie moe take zaczyna si ona od cyfry. W nazewnictwie komponentu istniej takie same reguy co w deklaracji zmiennej.
Nazw komponentu mona zmieni, korzystajc z inspektora obiektu. Znajd waciwo +
,
ktrej moesz nada now warto bdc nazw komponentu. Po zmianie nazwy Delphi
uaktualni rwnie wszelkie wpisy w kodzie rdowym zwizane z t nazw.

220

Cz I

Wskazwka
Nigdy nie pozostawiaj domylnych nazw komponentw, jakie nadaje Delphi
(tzn. #, #& itd.). W pniejszym czasie atwo jest si pogubi w takim
nazewnictwie. Staraj si nazywa komponenty opisowo to znaczy tak,
aby opisyway rol, jak peni. Jeeli, przykadowo, masz komponent, ktry
wywietla informacje o autorze programu, nazwij go ,-,; w przypadku
przycisku, ktry bdzie zamyka program niech bdzie to nazwa , .

Programowanie zdarzeniowe
Programy napisane w Delphi s programami zdarzeniowymi, ktre wykonuj pewne czynnoci
pod wpywem nakazu uytkownika. Co to oznacza? Kiedy program jest uruchamiany, nastpuje jego zaadowanie do pamici, rezerwowanie pamici itp. Nastpnie program taki czeka
na zadania. Projektujc nasze aplikacje wizualne, programujemy pewne zdarzenia, na jakie ma
reagowa program np. kliknicie przyciskiem myszy w obszarze komponentu. Jeeli aplikacja odbierze takie zdarzenie (uytkownik kliknie w obszarze komponentu), podejmowane
jest pewne dziaanie. To samo tyczy si innych przypadkw poruszanie mysz, wprowadzanie tekstu z klawiatury itp.

Generowanie zdarze
W kodzie rdowym moduu nie moesz rcznieumieszcza instrukcji wykonujcych pewne
czynnoci (pomijamy tu sekcj  
.
  oraz  
.
 ) wszystko musi by zawarte w procedurach zdarzeniowych.

1. Utwrz nowy projekt VCL.NET.


2. Umie na formularzu komponent !#.
3. Kliknij dwukrotnie w przycisk (komponent !#).
W tym momencie Delphi powinno wygenerowa w kodzie rdowym zdarzenie i przenie
Ci do edytora kodu, natomiast kursor ustawi w ciele procedury:
   
?6?J   2(1B !
1 


Wanie we wntrzu tej procedury naley umieci kod, ktry bdzie wykonywany po naciniciu w trakcie dziaania programu przycisku. W naszym przykadzie spowodujemy tym
zmian waciwoci komponentu.

Rozdzia 4. G Delphi bardziej zaawansowane

221

Przykadowy program
Jak dotd zmieniae waciwoci komponentu jedynie z poziomu inspektora obiektw. Powiniene wiedzie, e jest to moliwe take z poziomu kodu rdowego za pomoc operatora
odwoania ().
Nasz przykadowy program zmienia bdzie pozycj przycisku na formularzu. Nowa pozycja
bdzie losowana i ustawiana za kadym razem, gdy uytkownik kliknie przycisk.
Kada kontrolka wizualna w VCL.NET posiada waciwo / 0 (szeroko), 1 20 (wysoko), 3 (pozioma pozycja na formularzu), ! (pionowa pozycja na formularzu). Tak wic
nadanie nowej wartoci dla waciwoci z poziomu kodu wyglda nastpujco:
6?32?<< --5 JKLJ
 

Do konkretnych waciwoci odwoujemy si za pomoc operatora odwoania (kropka), a wartoci nadajemy tak jak zwykym zmiennym.

Rozwizanie
Przy kadorazowym naciniciu przycisku program powinien losowa now warto z zakresu i ustawia komponent na tej wylosowanej wartoci. Pytanie: jaki to bdzie zakres? Szeroko i wysoko formularza!
Listing 4.4 przedstawia kod caego moduu programu.
Listing 4.4. Kod moduu
>?
 
 
  @ >& 3



  6 @ 
6 @ 


? 
!
6?26
   6?J   2(1B !
 ,
"7 ,   +
1
"71  +
 
,

?2
?



"#$A
+

222

Cz I
   
?6?J   2(1B !
,

3
E 32' 
1 
" 55 KBM 5 JKLJKL
 5+

32
?34?<<

E 32
?E 34N<
$
5 --
" 3 KOKK
C +
6?C 2$

3!
6?2$

E 3!



Szeroko i wysoko formularza odczytujemy z waciwoci / 0 oraz 1 20, a nastpnie


przypisujemy te wartoci do zmiennych zadeklarowanych wczeniej: "/ 0 oraz "1 20:

32
?34?<<

E 32
?E 34N<

Zwr uwag, e dodatkowo odjlimy od tych wartoci odpowiednio liczby 100 i 50, tak aby
zachowa pewien margines podczas losowania liczb.
Nastpnie wylosowane wartoci posu jako nowe wsprzdne pooenia komponentu !#:
6?C 2$

3!
6?2$

E 3!

Wiesz ju, dlaczego odjlimy 100 i 50 od wartoci zmiennej "/ 0 i "1 20? Zakadajc, e szeroko formularza to 500, program bdzie losowa jedynie z zakresu od 0 do 400,
tak aby nie wylosowa liczby 500 gdyby tak si stao, to komponent nie zmieciby si cakowicie w oknie formularza (jego krawd wystawaaby poza obszar formularza). Wszystko
dlatego, e waciwo 3 okrela pozycj lewej krawdzi komponentu wzgldem formularza.

Zmiany kosmetyczne
1. W inspektorze obiektw zmie waciwo / 0 oraz 1 20 formularza na 455.
2. Zmie waciwo 
  przycisku (#) na 6 * ( 7.
Dziaanie programu przedstawione zostao na rysunku 4.1.

Lista zdarze w inspektorze obiektw


Wspominalimy wczeniej o zakadce Events inspektora obiektw. Po wykonaniu wczeniejszego wiczenia na licie Events przy pozycji 8 * bdzie widnia napis: # * (rysunek 4.2).

Rozdzia 4. G Delphi bardziej zaawansowane

223

Rysunek 4.1. Program w trakcie dziaania

Rysunek 4.2. Inspektor obiektw z wygenerowanym zdarzeniem OnClick


Po zaznaczeniu zdarzenia 8 * zostanie ono podwietlone na szaro. Po przeniesieniu kursora
nad tekst, powinien on zmieni ksztat. W tym miejscu po podwjnym klikniciu zostaniesz
przeniesiony do deklaracji zdarzenia 8 *. Tak samo jest z generowaniem innych zdarze
np. 86) 9.

Jedno zdarzenie dla kilku obiektw


Czasami moe zaj potrzeba podpicia tego samego zdarzenia 8 * (lub jakiegokolwiek
innego) w kilku przyciskach lub innych komponentach.

224

Cz I

W takim wypadku po zaznaczeniu wybranej pozycji, np. 8 *, po prawej stronie pojawia
si strzaka, po naciniciu ktrej rozwija si lista z dostpnymi w programie zdarzeniami.
Moesz dla swojego komponentu wybra dowolne zdarzenie.

Generowanie pozostaych zdarze


Moesz korzysta ze wszystkich zdarze, jakie w obrbie danego komponentu oferuje Ci Delphi.
Przykadowo, zdarzenie 8  : umoliwia Ci oprogramowanie zdarzenia przesuwania
kursora nad obiektem. Innymi sowy, moesz odpowiednio na tak sytuacj zareagowa.
Jak odbywa si generowanie zdarze z poziomu inspektora obiektw? Zaznacz zdarzenie,
niech to bdzie 8  :, klikajc je. Po prawej stronie pojawi si lista rozwijalna, ktra na
razie jest pusta. Przesu kursor nad biae pole kursor powinien zmieni swj ksztat. W tym
momencie kliknij dwukrotnie spowoduje to wygenerowanie zdarzenia 8  :.
   
1 ,   2(1B  323
PQ2'  !
1 


Wskazwka
W niniejszej ksice dla okrelenia nazw komponentw bd posugiwa si
prawidowym okreleniem z liter T na pocztku np. !# czy !3
, . S to
prawidowe nazwy dla komponentw VCL, chocia wiele osb nadaje komponentom
nazwy pozbawione tej litery #, 3
, .
Jeeli wygenerowane zdarzenie pozostanie puste, tj. nie bdzie zawierao adnego
kodu, zostanie ono usunite podczas kompilacji lub zapisu projektu.

Edytor kodu
Zanim przystpimy do dalszej pracy, wypadaoby, aby pozna gwne narzdzie pracy uywane w tym rozdziale edytor kodu (rysunek 4.3).
Edytor kodu to zwyky edytor tekstw. Podzielony jest na zakadki, co daje moliwo jednoczesnej edycji wielu plikw. W przypadku gdy mamy do czynienia z kodem rdowym
formularza, okno dodatkowo jest podzielone na dole na dwie zakadki Code (pisanie kodu)
oraz Design (projektowanie wizualne).
Trzeba przyzna, e w nowej wersji edytor kodu uleg zmianie przede wszystkim dziki
dodaniu nowych opcji i moliwoci.

Rozdzia 4. G Delphi bardziej zaawansowane

225

Rysunek 4.3. Edytor kodu

Ukrywanie kodu
Jedn z nowoci jest moliwo ukrywania fragmentu kodu. W takim przypadku po lewej
stronie edytora wywietlone zostan mae ikonki, ktrych kliknicie spowoduje rozwinicie
ukrytego fragmentu. Jest to do ciekawe rozwizanie umoliwia zwikszenie przejrzystoci w kodzie i schowanie fragmentu, ktry nas nie interesuje.
Wszystko to odbywa si za spraw dyrektywy ;<=$>8+?, ktr naley wstawi przed blokiem,
ktry chcemy ukry. Wyglda to nastpujco:
"#$%&'()R)5 S+
--JJT 3
J L
"#%)$%&'()+

Po wpisaniu takich instrukcji moliwe bdzie ukrycie danych zapisanych pomidzy tymi dyrektywami.

Makra
Mwic oglnie, makra (rwnie wprowadzone jako nowo w Delphi 8) umoliwiaj nagrywanie pewnych operacji dokonanych w kodzie rdowym, a nastpnie ich odtwarzanie.
Wszystkie trzy przyciski z tym zwizane znajduj si w lewym dolnym rogu edytora kodu.

226

Cz I

Przeprowad pewien eksperyment potwierdzajcy moje sowa: kliknij przycisk Record Macro
(rodkowy przycisk) i wpisz w edytorze kodu tekst:
3  *) 

J *!

Po wpisaniu kliknij przycisk Stop Recording Macro. Od tej pory aktywny powinien by
pierwszy przycisk Playback Macro. Po jego klikniciu w edytorze kodu ponownie zostanie
wstawiona nagrana instrukcja.

You might also like