Page 1 of 19
Praktyczny kurs programowania w Delphi
na przykładzie wygaszacza ekranu Windows
Ryszard Paweł Kostecki
rpkost@fuw.edu.pl
www.rysieq.prv.pl
17 czerwca 2002∗
Motto:
Nasz j ̨ezyk, tak jak i nasza poezja, wywodzi si ̨e z arytmetycznego, binarnego
funkcjonowania naszego mózgu. Klasyfikujemy na tak, na nie, na pozytywnie,
na negatywnie. (...) Mój j ̨ezyk dowodzi jedynie powolnosci wizji ́ swiata zre- ́
dukowanej do binarnego punktu widzenia. Ta niewystarczalnos ́c j ̨ezyka jest ́
oczywista i dokuczliwa. Ale có ̇z mo ̇zna powiedzie ́c o niewystarczalnosci in- ́
teligencji binarnej jako takiej? Wewn ̨etrzna egzystencja, własciwa esencja ́
spraw wymyka jej si ̨e. Mo ̇ze odkry ́c, ̇ze swiatło jest równocze ́ snie ci ̨agłe i ́
nieci ̨agłe, ̇ze cz ̨asteczka benzenu ustala mi ̨edzy swoimi szescioma atomami ́
wi ̨azania podwójne, niemniej wzajemnie si ̨e wykluczaj ̨ace; ona uznaje to wszys- tko, ale nie pojmuje, jej własna struktura nie jest w stanie przyswoi ́c sobie
rzeczywistosci zło ̇zonych struktur, które bada... ́
Louis Pauwels & Jacques Bergier, Le matin des magiciens
Streszczenie
Praca ta jest praktycznym kursem j ̨ezyka i srodowiska programistycznego Delphi. Kurs ten polega na dokład- ́
nym omówieniu konstrukcji prostego wygaszacza ekranu napisanego w Delphi. W efektywnej lekturze tej pracy
przydatna b ̨edzie znajomos ́c jakiego ́ s j ̨ezyka programowania wy ̇zszego poziomu. ́
Abstract
This paper is a practical course of the Delphi language and programming environment. This course proceeds
comprehensive discussion of simple screensaver written in Delphi. For the effecive reading of this paper, some
knowledge in any high level programming language will be usefull.
∗poprawki: 11 lutego 2003, 3 sierpnia 2003, 1 czerwca 2004, 13 listopada 2004.
Page 2 of 19
2 Praktyczny kurs programowania w Delphi
Wst ̨ep
Klasyczne programowanie polegało kiedys na otworzeniu edytora i linia po linii wklepywaniu tego co ma kom- ́
puter czynic. W tych zamierzchłych czasach pisano bardzo cz ̨esto w kodzie maszynowym lub w assemblerze. ́
Był to j ̨ezyk bardzo nieprzejrzysty i zale ̇zny sci ́ sle od hardware’u (np. programy napisane na procesory Mo- ́
toroli nie dawały si ̨e uruchomic na procesorach Intela i vice versa). Jednak ̇ze wzrost mocy obliczeniowej komput- ́
erów umo ̇zliwił powszechne pisanie programów w j ̨ezykach wysokiego poziomu, znacznie bardziej intuicyjnych,
oraz niezale ̇znych od platformy sprz ̨etowej. Sposród rozmaitych j ̨ezyków programowania wysokiego poziomu ́
najbardziej popularnymi i wszechstronnymi okazały si ̨e C/C++ i Pascal.
Współczesnie najbardziej popularnymi s ̨a obiektowo zorientowane j ̨ezyki C++, Delphi (nast ̨epca Object Pas- ́
cala), oraz Java. Programowanie polega dzis na zintegrowanym współdziałaniu ró ̇znych ́ srodowisk i standardów, ́
zarówno programistycznych, jak i u ̇zytkownika. Jest to tzw. integrated development. Współczesnie programuje si ̨e ́
głównie „składaj ̨ac z klocków” – ł ̨acz ̨ac ze sob ̨a rozmaite moduły, klasy, obiekty, nie interesuj ̨ac si ̨e przy tym ich
wewn ̨etrznymi zachowaniami, a jedynie wejsciem/wyj ́ sciem. Jest to tzw. OOP ( ́ object oriented programming).
Programista nie zajmuje si ̨e tym, jak obiekty maj ̨a cos zrobi ́ c, ale ́ co maj ̨a zrobic. Funkcjonowanie programu ́
nie polega na realizacji kolejnych linii kodu, tylko na reakcjach obiektów na zdarzenia generowane przez inne
obiekty. Jest to tzw. event handling. Powszechny stał si ̨e równie ̇z wymóg łatwosci modyfikacji, rozszerzalno ́ sci, ́
przenosno ́ sci i ponownej u ̇zywalno ́ sci kodu ( ́ extensibility, reusability, ...). Delphi jest powszechnie u ̇zytkowanym
srodowiskiem programistycznym spełniaj ̨acym te cechy. Kurs ten, po krótkim wst ̨epie teoretycznym, b ̨edzie prak- ́
tyczn ̨a nauk ̨a srodowiska i j ̨ezyka Delphi na przykładzie konstrukcji wygaszacza ekranu. ́
Spis tresci ́
1 Programowanie w Delphi 3
1.1 VCL: klucz do programowania wizualnego i projektowania w stylu drag-and-drop . . . . . . . . . 3
1.2 Teoria programowania w Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Praktyczna realizacja: program SCRSAV 5
2.1 Specyfikacja programu wygaszacza ekranu w systemie Windows . . . . . . . . . . . . . . . . . . 5
2.2 Plik scrsav.dpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Unit1.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Unit2.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Unit3.pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Pliki *.dfm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.7 Plik scrsav.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.8 Plik scrsav.res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Page 3 of 19
Praktyczny kurs programowania w Delphi 3
1 Programowanie w Delphi
1.1 VCL: klucz do programowania wizualnego i projektowania w stylu drag-and-drop
Rysunek 1: Paleta komponentów.
Programowanie w Delphi opiera si ̨e na bibliotece wizualnych komponentów VCL (Visual Component Library).
Komponenty s ̨a to klocki, których programisci u ̇zywaj ̨a do stworzenia interfejsu u ̇zytkownika oraz oprogramowa- ́
nia niektórych sposród niewizualnych wła ́ sciwo ́ sci aplikacji. Dla tworz ̨acego aplikacj ̨e programisty komponent ́
jest głównie obiektem, którego przeci ̨aga si ̨e myszk ̨a z palety komponentów i umieszcza na formie (form ̨a nazywa
si ̨e programistyczny szkic okienka programu). Nast ̨epnie, ju ̇z po umieszczeniu komponentu na formie, mo ̇zna ma- nipulowac jego wła ́ sciwo ́ sciami oraz oprogramowywa ́ c specyfik ̨e zachowa ́ n komponentu na rozmaite zdarzenia. ́
Niektóre komponenty reaguj ̨a na zdarzenia systemu (np. zegar czasu rzeczywistego TTimer) inne zas pełni ̨a rol ̨e ́
„naczyn po ́ srednicz ̨acych” - wlewa si ̨e do nich pewne zdarzenia, a one generuj ̨a inne... VCL zawiera w sobie kom- ́
ponenty w pełni obsługuj ̨ace wszystkie elementy interfejsu u ̇zytkownika Windows: drzewa, paski narz ̨edzi, menu,
paski post ̨epu, edytorki, itp., jak równie ̇z wiele innych dodatkowych komponentów. Te dodatkowe komponenty
uzupełniaj ̨a istniej ̨acy interfejs u ̇zytkownika, obsług ̨e danych, zdarzen czy te ̇z narz ̨edzi multimedialnych, wszys- ́
tko w celu przyspieszenia procesu produkcji aplikacji. Tworzenie aplikacji zachodzi wi ̨ec poprzez proste przeci ̨a- ganie komponentów z palety komponentów (Visual Component Palette) na obszar projektowania okienka, oraz
ustawianie ich własciwo ́ sci w inspektorze obiektów (Object Inspector). Kod obsługi zdarzenia jest generowany au- ́
tomatycznie, oszcz ̨edzaj ̨ac czasu programiscie, jakkolwiek ten ma pełny dost ̨ep do niego i mo ̇ze go modyfikowa ́ c ́
wedle potrzeb.
Rysunek 2: Widok okien Delphi.
1.2 Teoria programowania w Delphi
Windows jest wielozadaniowym systemem okienkowym, w którym centraln ̨a rol ̨e pełni reagowanie i zarz ̨adzanie
zdarzeniami, generowanymi przez wiele procesów naraz. Dlatego te ̇z centralnym poj ̨eciem w programowaniu