Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
Aplikacje w Delphi.
Przykady
Autor: Teresa Pamula
ISBN: 83-7361-212-2
Format: B5, stron: 260
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
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
Spis treci
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 wsprzdne kursora graficznego.
150
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
.
!
"
#$
"
%
151
Znaczenie
%
'(
)
*$&*$&
+
,
,
-
-
./
)
$
'
)
)0/
1
112
3"
)
)10
10
14
2
3
2
3
2,
3,
2-
3-"
)
/
2
3
2
3
2,
3,"
0
&'(
)
*$&*$&
5
&
"
./2
3"
)
)2
3
"
)
6&
"
152
Oprcz wymienionych metod zdefiniowane s metody, ktre korzystaj z tzw. mechanizmw niskopoziomowych i waciwoci
komponentu, np. instrukcja:
/*
0
1.
2&
%*3 !'
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
+67
8&9,,967
2
('
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
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
('
)
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
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
+,'
)
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$(
C5&
'::+$
&=+
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
+HH'
7
+HHH'
)
4
'
)
156
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
57&'
7
5H('
"
7
51H('
7
5
'
3
7
5H(
'
7
52<'
!
7
5K
$'
)
%
$(
'
)
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 ".
157
Znaczenie
.
8
.'(
.+%
'(
Rysunek 13.4.
Rysowanie
i kasowanie
prostokta
na formularzu
)
::+$
&?
+/@/$<
=
(+<+?
+$
&<
5D(
<&<
)+$
&BE?$
$
/
1.
$/7
&
)5?
$'
7
$%
&'
%
$(
8&F
2
(F'
)E?$'::+<+
+$
&<
5D(<&<
+$
&?@$
?
+
)
::&D@$<
+$
&E?$&<&<
)L=/=
+/@
$
/
1.
$/7
&
)5?
$'
7
)'::/$?+=&?
;
/+/@
5B&<
&=
%
C
'::+$
&/?
+/@
)
158
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
,
N8600N/=5.+,'
Przykad 13.13.
Wykonaj nastpujc animacj: kko o rednicy 30 punktw przesuwa si od lewego
do prawego brzegu formularza i z powrotem.
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//'
)
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
)
::+$
&5D(+<
=&.
F=
/=
5
/$.
$
/
1..
.
7
&
)5?
$'
(
'
(
'
//
(
3'
(
'
7
::?
U<=B/<.<.C.<<
5=+$
&<
5D(<&<
::)%
<
?
<$<
<+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
'
)
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
'
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&'7C7C7
'
7
%
/V%(7+
4
C7+
4
C9'
/V4
C7+
4
C7+
4
CF'
/VW+7+
+7+
+F'
/VH=7+
+7+
+9'
)
'