You are on page 1of 18

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

Aplikacje w Delphi.
Przykady
Autor: Teresa Pamula
ISBN: 83-7361-212-2
Format: B5, stron: 260

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

Delphi jest narzdziem do programowania obiektowego w systemie Windows, opartym


na jzyku Object Pascal, ktrego skadnia jest zgodna ze skadni jzyka Turbo Pascal.
rodowisko Delphi IDE (ang. Integrated Development Environment) umoliwia
zaprojektowanie w prosty sposb interfejsu uytkownika, generujc cz kodu
programu automatycznie.
Istnieje wiele ksiek powiconych Delphi, ta jednak rni si od pozostaych.
Przedstawia ona przykady kodu rdowego pokazujcego, jak w praktyce uywa
Delphi. Jest wic uzupenieniem ksiek omawiajcych sam jzyk Object Pascal
i prezentuje wykorzystanie wiedzy teoretycznej w praktyce programistycznej.
Przykadowym tekstom programw towarzysz komentarze autora wyjaniajce
dlaczego uyto takiego, a nie innego rozwizania.
Zagadnienia omwione w tej ksice obejmuj szeroki zakres tematyczny:
Projektowanie interfejsu uytkownika, tworzenie menu
Formatowanie tekstu i liczb
Tworzenie okien dialogowych, list wyboru
Pisanie prostego edytora tekstu
Prezentacja danych w tabelach i za pomoc wykresw
Pisanie aplikacji graficznych
Korzystanie z zasobw dyskowych i drukarek
Posugiwanie si wieloma komponentami tego samego typu
Dynamiczne tworzenie komponentw, tworzenie nowych klas komponentw
Pisanie aplikacji opartych na bazach danych
Nie odkrywaj Ameryki: sprawd najpierw, jak inni rozwizali problemy, ktre napotkae
programujc w Delphi. Ta ksika zaoszczdzi Twj czas i pozwoli pisa programy
znacznie efektywniej a przy okazji sprawi, e poznasz wiele nowych moliwoci
wspaniaego narzdzia jakim jest Delphi.

Spis treci
Wprowadzenie ................................................................................... 7
Rozdzia 1. Projektowanie aplikacji w Delphi ........................................................ 9
rodowisko zintegrowane Delphi IDE ............................................................................9
Elementy projektu aplikacji ..............................................................................................10
Standardowe waciwoci komponentw..........................................................................13
Standardowe zdarzenia......................................................................................................14

Rozdzia 2. Podstawowe skadniki aplikacji........................................................ 17


Okno aplikacji ...................................................................................................................17
Ikona aplikacji ...................................................................................................................22
Wywietlanie napisw.......................................................................................................22
Rodzaje przyciskw, podobiestwa i rnice ...................................................................27
Etykiety i przyciski............................................................................................................30

Rozdzia 3. Menu gwne i podrczne................................................................. 35


Wielopoziomowe menu gwne........................................................................................35
Przyporzdkowanie polece opcjom menu.......................................................................37
Menu podrczne ................................................................................................................40
Polskie litery w nazwach polece menu........................................................................41

Rozdzia 4. Wprowadzanie danych, formatowanie i wywietlanie na ekranie ........ 43


Liczby funkcje konwersji i formatowanie liczb. Przecinek czy kropka?.....................44
Daty funkcje konwersji i formatowanie daty i czasu ...................................................46
Systemowe separatory liczb i daty ....................................................................................49
Wprowadzanie danych za pomoc okienek edycyjnych TEdit.........................................49
Wprowadzanie danych za pomoc okienek InputBox i InputQuery.................................54
Sposoby zabezpieczenia programu przed bdami przy wprowadzaniu danych ..............55
Obliczenia. Wybrane funkcje moduu Math .....................................................................61

Rozdzia 5. Okienka komunikatw ..................................................................... 65


Wywietlanie komunikatw z napisami staymi w jzyku systemowym
MessageBox...............................................................................................................66
Wywietlanie komunikatw za pomoc funkcji ShowMessage, MessageDlg,
MessageDlgPos...............................................................................................................67

Aplikacje w Delphi. Przykady

Rozdzia 6. Okienka dialogowe z karty Dialogs ................................................... 73


Rozdzia 7. Listy wyboru TListBox i TComboBox............................................. 79
Dodawanie elementw do listy .........................................................................................81
Wybieranie elementw z listy ...........................................................................................82
Sposoby wywietlania elementw listy.............................................................................84
Blokowanie edycji dla listy TComboBox .........................................................................86
Czytanie i zapisywanie zawartoci listy do pliku dyskowego ..........................................87

Rozdzia 8. Prosty edytor komponent TMemo................................................. 89


Kopiowanie, wycinanie i wklejanie tekstu........................................................................90
Czytanie i zapisywanie tekstu do pliku .............................................................................91
Wywietlanie informacji o pooeniu kursora ..................................................................92
Automatyczne kasowanie linii nie zawierajcych liczb lub wybranych znakw .............93

Rozdzia 9. Grupowanie komponentw................................................................. 95


Pola opcji i pola wyboru....................................................................................................95
Komponenty grupujce .....................................................................................................96
Ramka TBevel.................................................................................................................100

Rozdzia 10. Tabelaryzacja danych komponent TStringGrid ............................. 101


Ustalanie podstawowych parametrw tabeli...................................................................104
Wypenianie tabeli danymi..............................................................................................106
Wybieranie komrek tabeli .............................................................................................108
Filtrowanie wprowadzanych danych...............................................................................110
Niestandardowe przejcie do kolejnej komrki klawisz Enter ..................................112
Zmiana koloru i wyrwnania tekstu w wybranych komrkach ......................................114
Wywietlanie tekstu w komrce w dwch wierszach.....................................................117
Totolotek .........................................................................................................................119
Tabela i lista ....................................................................................................................121

Rozdzia 11. Graficzna prezentacja danych komponent TChart ........................ 123


Rysowanie wykresw z wykorzystaniem komponentu TChart ......................................123
Opis wybranych waciwoci, metod i zdarze komponentw TChart i TChartSeries ..125
Wykresy koowe..............................................................................................................128
Wykresy kolumnowe.......................................................................................................131
Wykresy funkcji matematycznych ..................................................................................134
Formatowanie i skalowanie wykresw ...........................................................................138
Posugiwanie si wieloma wykresami.............................................................................142

Rozdzia 12. Odmierzanie czasu komponent TTimer........................................ 147


Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas............... 149
Wywietlanie prostych figur geometrycznych i tekstu ...................................................150
Rysowanie trwae zdarzenie OnPaint .....................................................................156
Przykady animacji w Delphi ..........................................................................................158

Rozdzia 14. Wywietlanie obrazw komponent TImage.................................. 163


Rysowanie po obrazie .....................................................................................................165
Binaryzacja obrazu..........................................................................................................166

Rozdzia 15. Wsppraca programu z plikami dyskowymi .................................... 169


Wybr foldera plikw .....................................................................................................169
Wyszukiwanie plikw .....................................................................................................171
Zapisywanie danych z okienek TEdit i tabeli do pliku tekstowego................................174
Czytanie danych z pliku tekstowego...............................................................................175
Zapisywanie i odczytywanie danych z tabeli do pliku *.csv ..........................................177

Spis treci

Rozdzia 16. Drukowanie w Delphi ..................................................................... 179


Drukowanie napisw i tekstu z okienek edycyjnych ......................................................180
Drukowanie tabeli i wykresu...........................................................................................181
Drukowanie obrazu .........................................................................................................184

Rozdzia 17. Programy z wieloma oknami ........................................................... 187


Wymiana danych i metod midzy moduami..................................................................187
Program z hasem ............................................................................................................190
Wywietlanie tytuu programu ........................................................................................192

Rozdzia 18. Posugiwanie si wieloma komponentami tego samego typu.


Operatory Is i As............................................................................ 195
Wprowadzanie i kasowanie danych dla kilku okienek edycyjnych................................196
Przypisywanie grupie komponentw tej samej procedury obsugi zdarzenia.................197
Wywietlanie informacji o numerach kontrolek, ich nazwach i klasach ........................200

Rozdzia 19. Tablice dynamiczne........................................................................ 203


Rozdzia 20. Dynamiczne tworzenie komponentw.............................................. 207
Wywietlanie kontrolek i przypisywanie zdarzeniom procedur obsugi ........................208
Przykady dynamicznego tworzenia wykresw ..............................................................212
Tworzenie menu w czasie dziaania programu ...............................................................215

Rozdzia 21. Definiowanie nowych klas komponentw ........................................ 219


Klasa tabel z wyrwnaniem zawartoci komrek do prawej strony ...............................219
Klasa okienek z waciwoci Alignment.......................................................................221
Instalowanie nowych komponentw na palecie komponentw......................................223
Nowy komponent do ankiety ..........................................................................................227

Rozdzia 22. Podstawowe operacje na bazach danych ........................................ 231


Przegldanie istniejcych baz danych w formacie .dbf...................................................233
Tworzenie wasnej bazy danych .....................................................................................235
Modyfikowanie bazy.......................................................................................................237
Filtrowanie rekordw bazy danych .................................................................................238
Wyszukiwanie rekordw.................................................................................................240
Sortowanie.......................................................................................................................241
Rysowanie wykresw na podstawie danych z bazy........................................................242
Obliczanie redniej ze wszystkich wartoci danego pola................................................243
Biblioteka przykad relacyjnej bazy danych ..............................................................244

Literatura ...................................................................................... 249


Skorowidz...................................................................................... 251

Rozdzia 13.

Grafika w Delphi
korzystanie z metod
obiektu TCanvas
Niektre komponenty posiadaj waciwo typu obiektowego  (tzw. ptno).
S to m.in.: 
, 
 , , 
, 
,    , ,
  .
Waciwo  zawiera metody, ktre umoliwiaj rysowanie na tych komponentach za pomoc linii rnych figur, kolorowanie powierzchni oraz wywietlanie
tekstu. Moliwa jest rwnie zmiana koloru i gruboci linii, koloru i wzoru wypenienia, atrybutw czcionki itd.
Rysowanie za pomoc metod obiektu  rnych obiektw moe by przydatne
do zmiany cech niektrych komponentw, np.     czy  , a take przy
drukowaniu formularza i tekstu.
Wybrane waciwoci obiektu :
 okrela wzr lub kolor wypenienia figur (tzw. pdzel);
 krj czcionki dla wywietlanych napisw;

 okrela cechy krelonych linii: grubo, styl, kolor (tzw. piro);


 okrela wsprzdne kursora graficznego.

Podstawowymi parametrami wikszoci procedur i funkcji graficznych s wsprzdne


punktu na komponencie, po ktrym rysujemy. Lewy grny rg ma wsprzdne (0, 0),
a prawy dolny najczciej (,   ). Na rysunku 13.1 przedstawiono wsprzdne
okna formularza, ktre wykorzystano w zadaniach tego rozdziau.

150

Aplikacje w Delphi. Przykady

Rysunek 13.1.
Formularz
z zaznaczonymi
wartociami
wsprzdnych
wierzchokw (x, y)

Wywietlanie prostych
figur geometrycznych i tekstu
Proste figury i tekst moemy wywietli na formularzu, korzystajc z procedur i funkcji
obiektu typu  tabela 13.1. Waciwoci takiego obiektu umoliwiaj m. in.
zmian gruboci i stylu rysowanych linii, zmian koloru i wzoru wypenienia figur oraz
wybr kroju i stylu czcionki dla tekstu.
Tabela 13.1. Wybrane metody obiektu TCanvas
Metoda

Znaczenie


 

Za pomoc funkcji 
 mona odczyta kolor piksela
w miejscu o wsprzdnych (x, y) zmienna  jest typu
.


   


Ta sama funkcja wywoana w ten sposb powoduje


wywietlenie na formularzu czerwonego punktu w miejscu
o wsprzdnych [10, 20] wsprzdn poziom (x) liczymy
od lewej do prawej, a wsprzdn pionow od gry w d.
Wsprzdne lewego grnego wierzchoka to (0, 0).


 



Przenosi kursor graficzny do punktu o wsprzdnych x, y.

!
 



Rysuje lini od biecej pozycji kursora graficznego do punktu


o wsprzdnych x, y.



     "



Procedura rysuje prostokt wypeniony standardowym


kolorem pdzla (    ).

# $
     "



Procedura rysuje elips (lub koo) parametrami s


wsprzdne dwch przeciwlegych wierzchokw prostokta
(kwadratu), w ktry elipsa jest wpisana.

  
%

Procedura rysuje lini aman lub wielokt. Parametrami s


wsprzdne punktw, ktre zostan poczone lini. Jeli
wsprzdne punktu pierwszego i ostatniego s takie same,
to rysowany jest wielokt; w przeciwnym razie linia amana,
np. procedura:

 !
""  #

narysuje gwiazd picioramienn (patrz pomoc dla polyline).

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

151

Tabela 13.1. Wybrane metody obiektu TCanvas (cig dalszy)


Metoda

Znaczenie

 %

Procedura umoliwia narysowanie wielokta wypenionego


biecym kolorem i stylem pdzla. Przykadowo, instrukcje:
   $%
&'
 ("
""#'

spowoduj narysowanie czworokta wypenionego kolorem


czerwonym. Wsprzdne punktu pierwszego i ostatniego nie
musz si pokrywa, poniewa procedura i tak czy na kocu
punkt ostatni z punktem pierwszym.

%
&

Odwieanie formularza procedura kasuje wszystkie obiekty


rysowane za pomoc metod obiektu  i nieumieszczone
w procedurze obsugi zdarzenia ).

'( 

)
*$&*$&

Rysuje obraz okrelony parametrem *+$ w miejscu


o wsprzdnych x i y (przykad 13.14).

+       , ,  - -




Rysuje krzyw eliptyczn w prostokcie o wsprzdnych (x1, y1;


x2, y2), od punktu o wsprzdnych (x3, y3) do punktu (x4, y4).


./ 

)



Wywietla tekst od punktu o wsprzdnych x, y lewy grny


rg prostokta zawierajcego tekst;
 to parametr w postaci
tekstu staego w apostrofach, np. ,-./,, lub zmienna
zawierajca acuch znakw, np. ,-./, ($ 
w nagwku procedury oznacza podobne wywoanie jak
w przypadku wartoci, lecz umoliwia bardziej efektywne
wykorzystanie pamici).

$
'

)
)0/




Kopiuje cz obrazu z jednego ptna na inne ptno.

1 




Rysowanie prostokta wypenionego biecym kolorem i wzorem.

1 1 2 3"

) 
 )1 0
1 0

Wypenianie tzw. powodziowe obiektw.

14





Rysowanie obwodu prostokta.


2 3 2 3 2, 3, 2-
3-"

 )

Rysowanie wycinka koa.

/
2 3 2 3 2,
3,"



Rysowanie prostokta z zaokrglonymi naronikami.

0
&'(

)
*$&*$&

Dopasowanie rysunku do obszaru danego prostokta.


5
&
 
"



Funkcja zwraca wysoko tekstu w pikselach.


./2 3"

)



Procedura wywietla napis na komponencie posiadajcym


waciwo  .





)2 3
"

)


Procedura wywietla napis w prostokcie, ktrego wsprzdne


s podane w postaci typu %
$ (pierwszy parametr). Procedura
bya wykorzystywana przy formatowaniu komrek tabeli.


6&
 
"



Funkcja zwraca szeroko tekstu w pikselach.

152

Aplikacje w Delphi. Przykady

Oprcz wymienionych metod zdefiniowane s metody, ktre korzystaj z tzw. mechanizmw niskopoziomowych i waciwoci  komponentu, np. instrukcja:
/*
0

 1.  2&
%*3 !'

spowoduje przypisanie zmiennej  koloru najbardziej zblionego do podanego


w przypadku, gdy biecy tryb graficzny nie posiada koloru typu RGB.

Przykad 13.1.
Wywietl na etykiecie wsprzdne prawego dolnego wierzchoka formularza lewy
grny ma wsprzdne (0, 0).

Rozwizanie
Wstaw etykiet  . Wsprzdne prawego dolnego wierzchoka formularza moemy
odczyta, korzystajc z waciwoci   i     formularza. Naley
wpisa np. w procedurze obsugi zdarzenia  etykiety instrukcj:
45
 +6 7 
8&9,,96 7 
2
('

lub uy funkcji      , ktra zwraca warto typu   okrelajc


wsprzdne dwch przeciwlegych wierzchokw formularza:
%1.*
 
%
$(
'::%+ %
$.;<&
/=>?/<.
@/@
45
 +6 %%(9,,96 %.'

Przykad 13.2.
Na rodku formularza wywietl punkt koloru czerwonego, przy czym nie moe w tym
miejscu znajdowa si inny obiekt (np. przycisk), bo wywietlony piksel zostanie przez
ten obiekt przesonity.

Rozwizanie
Ponisz instrukcj wpisz np. w procedurze obsugi przycisku:
 
  
8&& 
2
(&#$%
&'

Przykad 13.3.
Narysuj linie koloru czerwonego bdce przektnymi formularza rysunek 13.2.
Rysunek 13.2.
Formularz
z przektnymi
pozostajcymi
po zmianie
jego rozmiaru

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

153

Rozwizanie
Ponisze instrukcje wpisz np. w procedurze obsugi przycisku.
Pierwsza przektna:
 
 $%
&'::<./+A$<
=
::+<
B$
/ (C$<
(&+/= +AD<B&$
 E
'
:: =
&5
;@$
(+D;
/ (C$<
(&+/<+=
(
&
(=
<$D/
 4
 
8& 
2
('

Narysuj drug przektn.


Aby przektne pozostay na formularzu podczas zmiany jego rozmiaru, naley wykorzysta dwa zdarzenia:  i  ! . W procedurach obsugi tych zdarze powinny
znale si instrukcje, jak w procedurach poniej:
$
/
 1.1.7
&
 )5?
$'
7

  
 $%
&'
  E
'
  4
 
8& 
2
('
  E
 
8&'
  4
 
2
('

)

i
$
/
 1.1.%
<
7
&
 )5?
$'
7

%
C
'::+<<.
<./
::/ =
 @++<
&
+<
/@

)

Przykad 13.4.
Wywietl na formularzu punkty rozmieszczone losowo i o losowych kolorach.

Rozwizanie
Wstaw przycisk i w procedurze obsugi zdarzenia  wpisz odpowiednie instrukcje:
::4 =
+/
$
/
 1. $/7
&
 )5?
$'

(
'
7

%
 
 %&. 
8&%&. 
2
(#
%*%&.33%&.33%&.33'

)

Przykad 13.5.
Wywietl na formularzu trzy rne prostokty ramk, prostokt wypeniony kolorem
 "# , prostokt z zaokrglonymi brzegami.

154

Aplikacje w Delphi. Przykady

Rozwizanie
W procedurze obsugi przycisku wpisz instrukcje jak poniej:
$
/
 1." $/7
&
 )5?
$'

+  %
$'
7

+ %
$"'
    $$/'
::./
  1.
%
$+ '
    $*

'
::+ /@=+
D
  %
$(
"'
::+ /@<</@(.5<
(.
  %&%
$"""'

)

Przykad 13.6.
Wywietl na rodku formularza napis Zadania z Delphi w kolorze niebieskim, o rozmiarze czcionki rwnym 36 pt, bez ta rysunek 13.3.
Rysunek 13.3.
Napis na rodku
formularza

Rozwizanie
W procedurze wykorzystano funkcje zwracajce szeroko i wysoko napisu oraz
rozmiary formularza i na tej podstawie obliczono wsprzdne lewego grnego
wierzchoka wywietlanego napisu:
$
/
 1. $/7
&
 )5?
$'
 
(
'
7

  10.
,-,'
  1  
'
  17<
'
   7
5 
'
  
8&F  
8&,G&
<H
+,'
 
2
(F  
2
(,G,'
  
) &&,G&<H
+,'

)

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

155

Przykad 13.7.
Narysuj elips o maksymalnych wymiarach na formularzu.

Rozwizanie
W procedurze obsugi przycisku wpisz instrukcj:
::
+ =+ =+ /@<.$C.<
 I+
 
8& 
2
('

Przykad 13.8.
Narysuj na formularzu trjkt o zielonym obwodzie i tym wypenieniu.

Rozwizanie
$
/
 1. $/7
&
 )5?
$'
7

    $J
='
  
 $*

'
:: =
A?/@
  
#'
  1&C3$(

C 5&
'::+$
&=+
D5
/ =
::/
.<
.=
=@</A
(<?&?
 B+/= +AD<B&$3

)

Przykad 13.9.
Wywietl na formularzu linie rysowane rnymi stylami.

Rozwizanie
Wstaw przycisk ". W procedurze obsugi zdarzenia  przycisku wpisz
instrukcje, jak w poniszej procedurze:
:: 

$
/
 1. $/7

&
 )5?
$'
 
(
'
7

 %&. 
8&F'
%&. 
2
(F'
  
 %*%&.3 %&.3 %&.3 '

%&.3%
  
7
+ 7&'
  
7
+ H '
  
7
+ H'
"  
7
+ H H'
  
7
+ H HH'

)
  4
 '

)

156

Aplikacje w Delphi. Przykady

Przykad 13.10.
Wywietl na formularzu prostokt malowany rnymi stylami pdzla po kadym klikniciu przycisku.

Rozwizanie
Wstaw przycisk ". W procedurze obsugi zdarzenia  przycisku wpisz
instrukcje, jak w poniszej procedurze:
:: 
+B&<
$
/
 1. $/7
&
 )5?
$'
7

%
C
'::/ ?
++<
&+ /@
    %*%&.3 %&.3 %&.3 '::/
.+B&<
::.=
 @=<

%&.!%
   7
5 
'
   7
5 7&'
   7
5 H('
"   7
5 1H('
   7
5  '
3   7
5 H(  '
    7
5 2<'
!   7
5 K
$'

)
  %
$(
'

)

Rysowanie trwae
zdarzenie OnPaint
Instrukcje zawierajce metody obiektu  mona umieszcza w procedurach obsugi zdarzenia  dla przyciskw, dla formularza i innych komponentw. Mona
rwnie korzysta z innych zdarze komponentw. Jednak tylko niektre z nich umoliwiaj tzw. trwae rysowanie, czyli rysowanie odnawiane po kadej zmianie, np. po
zmianie rozmiaru okna i przykryciu w ten sposb czci obiektw graficznych. Dla okna
formularza korzysta si w tym celu ze zdarzenia . Dla innych komponentw
podobne zdarzenia maj inne nazwy. Przedstawiono je w tabeli 13.2.

Przykad 13.11.
Narysuj na formularzu prostokt koloru czerwonego, tak aby nie kasowa si po przykryciu okna formularza innym oknem. Prostokt powinien rysowa si po klikniciu
przycisku i kasowa po klikniciu drugiego przycisku rysunek 13.4.

Rozwizanie
Wstaw dwa przyciski ".

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

157

Tabela 13.2. Zdarzenia umoliwiajce rysowanie trwae


Zdarzenie

Znaczenie

.

Zdarzenie dla formularza generowane kadorazowo, gdy zawarto okna formularza


wymaga odwieenia. Sytuacja taka ma miejsce przy tworzeniu okna formularza,
a take wtedy, gdy np. jedno okno zostanie przesonite innym oknem lub gdy nastpuje
zmiana jego rozmiaru.

8 

Odpowiednik zdarzenia ) dla komponentu  .

.'(

Zdarzenie wystpujce dla komponentu typu H=*& i 7(*& umoliwia


trwae rysowanie obiektw i wywietlanie tekstu w komrkach.

.+%
'(

Zdarzenie dla komponentu typu , odpowiednik zdarzenia ).

Rysunek 13.4.
Rysowanie
i kasowanie
prostokta
na formularzu

Gdyby instrukcj rysujc prostokt umieci w procedurze obsugi zdarzenia ,


to prostokt byby na formularzu bezporednio po uruchomieniu programu. Dlatego
procedur obsugi tego zdarzenia z now instrukcj naley wywoa za pomoc przycisku.
W przykadzie pokazano, jak wykona takie zadanie.
$
/
 1.E?$7
&
 )5?
$'
7

  %
$(
 
8&F 
2
(F'

)
::+$
& ?
+ /@/$<
=
(+<+ ?
+$
&<
5 D(
<&<
)+$
&BE?$
$
/
 1. $/7
&
 )5?
$'
7

  
 $%
&'
  %
$(
 
8&F 
2
(F'
)E?$'::+<+ 
+$
&<
5 D(<&<
+$
& ?@$
?
+ 

)
::&D@$<

+$
&E?$&<&<
)L=/ =
+ /@
$
/
 1. $/7
&
 )5?
$'
7

)':: /$? +=&?
;
 
/+ /@
5B&<
&=
%
C
'::+$
&/ ?
+ /@

)

158

Aplikacje w Delphi. Przykady

Przykad 13.12.
Wypenij formularz bitmap, np. kawa.bmp.

Rozwizanie
W procedurze obsugi zdarzenia  dla formularza wpisz instrukcje, jak w procedurze poniej.
Zadeklaruj zmienn globaln lub pole klasy 
$ (w sekcji "):
.+ .+'
$
/
 1.1.7
&
 )5?
$'
 6
(
'
7

'
(&
M2
(
7

 '
(&
 M8&
7

  H= .+'
  9.+8&'

)
9.+2
('

)

)

W metodzie 
$#
  dopisz instrukcje:
.+ .+ 

'
.+4&1.1
, N8600 N/=5.+,'

Przykady animacji w Delphi


W programowaniu stosuje si rne techniki animacji. Jednym z prostszych sposobw
jest rysowanie obiektu, nastpnie kasowanie i ponowne rysowanie w innym miejscu.
Wad tego sposobu jest trudno w uzyskaniu pynnoci ruchu obiektw.
Inna metoda polega na zastosowaniu dwch obszarw, na ktrych rysujemy. W danej
chwili widoczny jest tylko jeden z nich. Drugi jest wwczas modyfikowany i wywietlany dopiero po zakoczeniu operacji w miejsce pierwszego.
W zadaniach przykadowych zastosowano pierwszy sposb animacji. Udao si uzyska
odpowiedni pynno ruchu obiektw, dlatego nie wykorzystano sposobu z uyciem
dwch obszarw rysowania.

Przykad 13.13.
Wykonaj nastpujc animacj: kko o rednicy 30 punktw przesuwa si od lewego
do prawego brzegu formularza i z powrotem.

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

159

Rozwizanie
W procedurze obsugi przerwania od Timera wpisz:
OPQ9R
$
/
 1. .
 .
7
&
 )5?
$'
 
(
'

(
'
//
(
3'
7

::/ =
5
/
   $ '::/C.<
  
$ '::/+A
1.  I+
  9"9"'
:: =
/AD//
.$<
=.
   $$%
&'
  9//'
  I+
  9"9"'
% 9"S 
=&&
//F//'
% M&
//F//'

)

Dyrektywa %&'()przed treci procedury wcza opcj kompilatora umoliwiajc zmian


wartoci staych typowanych (ang. Assignable typed constans). Opcja ta powinna by
standardowo wczona, ale jeli nie mamy pewnoci, lepiej doda dyrektyw %&'().

Przykad 13.14.
Wykonaj animacj tak jak w zadaniu poprzednim, gdy formularz jest wypeniony
wzorem rysunek 13.5.
Rysunek 13.5.
Animacja z tem

Rozwizanie
Na formularzu umie przycisk " i komponent 
. Waciwo  
ustaw na 200 ms, a waciwo *  na + . Tre procedur obsugi przycisku
i przerwania od Timera przedstawiono poniej.
Zadeklaruj zmienn globaln:
.+.+ .+'
::+$
&+5
+ /@C(.
C.<$. .

$
/
 1. $/7
&
 )5?
$'
 
(
'

160

Aplikacje w Delphi. Przykady


7

::=<

5
/.+
.+ .+ 

'
.+8& 
8&'
.+2
("'
::+5
+ /@
(=$/C.<F5 <+/A.5B&<
 B+ <D
::/AD/
%  
8&F
%T
.+  
  #1.  
  9#'
 .
I5
&
'::=6 +
/<
)5
/A=<5/? .


)
::+$
&5 D(+<
=& .
F =
/ =
5
/$.
$
/
 1. .
 .
7
&
 )5?
$'
 
(
'

(
'
//
(
3'
 
(
'
7

::?
U<=B/ <.<.C.<<
5=+$
&<
5 D(<&<

::)%
<
?
<$<
<+5>5.+B
  H=.+'::=U=


=$<
U
?+5
(+ /C.<
::/ =
5
/
:: =
/AD/
  I+
  9"9"'
  9//'
% 9TS 
=&&
//F//'
% M&
//F//'

)
::=+
D
C.<5.+@
$
/
 1.1.7
&
 )5?
$'
 6
(
'
7

'
(&
M2
(
7

 '
(&
 M8&
7

  H= .+'
  9.+8&'

)
9.+2
('

)

)
::+$
&1.H
<=+.B>
::<?.=@+<
<5.+
$
/
 1.1.H
7
&
 )5?
$'
7

.+1

'
.+1

'

)

Rozdzia 13. Grafika w Delphi korzystanie z metod obiektu TCanvas

161

Przykad 13.15.
Wykonaj animacj polegajc na przemieszczaniu si kulki w losowych kierunkach
w prostoktnym obszarze o wymiarach (0, 0, 200, 200). Wykorzystaj komponent
 z zakadki System rysunek 13.6.
Rysunek 13.6.
Animacja
niebieskiej kulki

Rozwizanie
Na formularzu umie komponent  i 
. Komponent  jest stosowany do wywietlania (krelenia) grafiki, ktra ma by ograniczona do obszaru prostoktnego. Korzystajc z komponentu , programista nie musi kontrolowa, czy
obszar ten nie zosta przekroczony jeli narysowany obiekt nie mieci si wewntrz
komponentu , to zostaje obcity. Dodatkowo zawarty w nim rysunek moemy
przesuwa po formularzu, zmieniajc waciwoci  + i  tego komponentu. Procedura przedstawiona poniej dziaa poprawnie z komponentem  i bez niego
wtedy kulka przesuwa si po formularzu.
W zadaniu mona rwnie doda przycisk, ktry bdzie wcza zegar (animacj) po
wpisaniu w procedurze obsugi instrukcji 
$#* ,- " . (wczeniej naley
zegar zablokowa w okienku Inspektora Obiektw * - " ).
{J+}
$
/
 1. .
 .
7
&
 )5?
$'
 
(
 '

(
 '
// 
(
 '
//
(
 '
7

(&   
7

::$< <$<

+ /@
  $8
'
%
$(
'
::5$<

= +AD<B&$
  9// '
9//'
:: =
/D=/=&$
5/
::A=. +/

  $
'
I+
 F F  9 9 '
% ST&

7

//  9%&.3'

162

Aplikacje w Delphi. Przykady


// F// '

)
%ST&

7

// 9%&.3'
//F//'

'
% M &
// F// '
%M &
//F//'

'::=

'

Przykad 13.16.
Umie na formularzu komponent typu " i  . Zadaniem przycisku jest
wywietlanie po kadym klikniciu na przemian kka lub prostokta.
Po naciniciu klawiszy strzaek komponent  przesuwa si zgodnie z kierunkiem
strzaki rysunek 13.7.
Rysunek 13.7.
Przesuwanie koa
za pomoc
klawiszy strzaek

Aby klawisze strzaek nie byy przechwytywane przez komponent Button1, naley
ustawi dla kadego z nich waciwo   na + .

Rozwizanie
Wstaw komponenty " i  . W procedurze obsugi kliknicia przycisku wpisz
instrukcje, jak poniej:
$
/
 1. $/7
&
 )5?
$'
7

%7+
7+
  $
&
7+
7+
 %
$(



7+
7+
  $
'
1.-$
'

)

W celu sprawdzenia klawiszy strzaek wykorzystaj zdarzenie / 012 dla formularza.
Tre procedury obsugi tego zdarzenia przedstawiono poniej:
$
/
 1.1.
H=7
&
 )5?
$'
8&'7C 7C7
'
7



%
/V%(7+
4
C7+
4
C9'
/V4
C7+
4
C7+
4
CF'
/VW+7+
 +7+
 +F'
/VH=7+
 +7+
 +9'

)

'

You might also like