Professional Documents
Culture Documents
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
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
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
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
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.
10
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.
12
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.
14
Rozdzia 8.
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.
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
Rozdzia 12.
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
18
Dodatki.......................................................................................................................................771
Dodatek A
Dodatek B
Dodatek C
Sowniczek....................................................................................................................................................779
Dodatek D
Skorowidz .....................................................................................................................................................801
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
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
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.
/
---$
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
-
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:
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 !.
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
3F<
3;FG
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&
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.
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.
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), 120 (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!
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 "120? 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 120 formularza na 455.
2. Zmie waciwo
przycisku (#) na 6*(7.
Dziaanie programu przedstawione zostao na rysunku 4.1.
223
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.
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.
225
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.