P RO JE KT O WANI E O BI E KT O WE –
ûZLF]HQLD ODERUDWRU\MQH
TEMAT 5: Borland Delphi –
NRPXQLNDFMD ] X*
ytkownikiem cz. 2, rozbudowywanie aplikacji.
TEMAT 5: Borland Delphi –
NRPXQLNDFMD ] X*\WNRZQLNLHP cz. 2,
rozbudowywanie aplikacji.
1
.RPSRQHQW\ ] ]DNáDGNL 'LDORJV
1.1. Korzystanie z komponentu OpenDialog
-HVW WR NRPSRQHQW NWyU\ Z\ZLHWOD ]QDQH ] DSOLNDFML :LQGRZV RNQR GLDORJRZH RWZDUFLD SOLNX Uruchamiany jest przez
Z\ZRáDQLH PHWRG\ Execute.
Zadanie aplikacji:
SU]HJOGDUND SOLNyZ JUDILF]Q\FK ]DSLVDQ\FK Z IRUPLH EPS QD G\VNX 3OLNL SRELHUDQH V SRSU]H]
OpenDialog.
•
8PLHü QD IRUPLH NRPSRQHQW OpenDialog ] ]DNáDGNL
Dialogs. Jest to komponent niewi
GRF]Q\ RWZLHUDMF\ GLDORJ
wyboru pliku z dysku.
•
.OLNDMF Z SROX ZáDFLZRFL Filter ZHMG( GR HG\WRUD
filtrów i wpisz w tabelce pod wska
]DQ\P QDJáyZNLHP
Filter Name
Filter
bitmapy
*.bmp
wszystkie pliki *.*
•
8VWDZ ZáDFLZRFL
FilterIndex
Z\ELHUD RQD SLHUZV] PDVN SOLNyZ
MDNR GRP\OQ
InitialDir
C:\Program Files\Common Files\Borland Shared\Images\Splash\256Color\ // ustawia katalog
GRP\OQ\
•
Dodaj Bevel
] ]DNáDGNL Additional MDNR SRGNáDGN GOD NRPSRQHQWX Image oraz na Bevelu Image ] ]DNáDGNL
Additional –
NRPSRQHQW XPR*OLZLDMF\ SRND]\ZDQLH REUD]NyZ
•
Wyselekcjonuj Image
L ] PHQX SRGU F]QHJR SUDZ\ SU]\FLVN P\V]\ Z\ELHU] BringToFront.
8VWDZ ZáDFLZRü GOD NRPSRQHQWX Image:
Stretch
True // dostosowanie obrazka do rozmiarów komponentu Image
•
8PLHü QD IRUPLH SpeedButton (przycisk szybkiego reagowania) – ] ]DNáDGNL Additional – E G]LH WR SU]\FLVN
RWZLHUDMF\ GLDORJ 8PLHü QD SU]\FLVNX U\VXQHN NRMDU]F\ VL ] RWZDUFLHP SOLNX
NOLNQLM QD ZáDFLZRü Glyph w ObjectInspectorze,
SU]HMG( GR Picture Editor,
ZFLQLM SU]\FLVN Load SU]HMG( GR NDWDORJX Borland Shared\Images\Buttons,
Z\ELHU] ZáDFLZ\ U\VXQHN
]DWZLHUG( Z\EyU
•
Dla zdarzenia OnClick komponentu SpeedButton
ZSLV] SURFHGXU
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
•
6SUDZG( G]LDáDQLH DSOLNDFML
1.2. Korzystanie z komponentu SaveDialog
-HVW WR NRPSRQHQW NWyU\ Z\ZLHWOD RNQR GLDORJRZH ]DSLVDQLD ]DFKRZDQLD SOLNX UruchamiaQ\ MHVW SU]H] Z\ZRáDQLH
metody Execute.
Zadanie aplikacji: aplikacja zapisuje do pli
NX R ZVND]DQHM QD]ZLH SU]HJOGDQ\ REUD]HN
•
2WZyU] SRSU]HGQL DSOLNDFM
•
Dodaj do formy komponent SaveDialog
]DNáDGND Dialogs) oraz SpeedButton z rysunNLHP ]DPNQL FLD
•
3RGREQLH MDN Z SRSU]HGQLP üZLF]HQLX XVWDZ ILOWU\ RUD] ZáDFLZRFL FilterIndex i InitialDir. 8VWDZ ZáDFLZRü
DefaultExt
EPS QDGDZDQLH GRP\OQHJR UR]V]HU]HQLD ]DSLV\ZDQ\P SOLNRP
•
Dla zdarzenia OnClick komponentu SpeedButton wpisz:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
Image1.Picture.SaveToFile(SaveDialog1.FileName);
end;
•
6SUDZG( G]LDáDQLH DSOLNDFML
1.3. Korzystanie z komponentu ColorDialog.
-HVW WR NRPSRQHQW NWyU\ Z\ZLHWOD RNQR GLDORJRZH Z\ERUX NRORUX 8UXFKDPLDQ\ MHVW SU]H] Z\ZRáDQLH PHWRG\ Execute.
Zadanie aplikacji: ustawianie koloru komponentu Shape
SRSU]H] X*\FLH NRPSRQHQWX ColorDialog.
•
Wstaw na formie przycisk z napisem Nowy kolor oraz komponenty: Shape, ColorDialog.
•
Dla zdarzenia OnClick przycisku Nowy kolor wpisz
SURFHGXU
procedure TForm1.Button1Click(Sender: TObject);
begin
if ColorDialog1.Execute then
Shape1.Brush.Color := ColorDialog1.Color;
end;
•
6SUDZG( G]LDáDQLH DSOLNDFML
1.4. Korzystanie z komponentu FontDialog.
-HVW WR NRPSRQHQW NWyU\ Z\ZLHWOD RNQR GLDORJRZH Z\ERUX F]FLRQNL 8UXFKDPLDQ\ MHVW SU]H] Z\ZRáDQLH PHWRG\
Execute.
Zadanie aplikacji: ustawianie parametrów czcionki w oknie Memo poprzez wykorzystanie komponentu FontDialog.
•
Wstaw na formie przycisk z napisem Zmiana czcionki oraz
komponenty Memo i FontDialog.
•
Dla zdarzenia OnClick przycisku Zmiana czcionki wpisz
SURFHGXU
procedure TForm1.Button1Click(Sender:
TObject);
begin
if FontDialog1.Execute then
Memo1.Font := FontDialog1.Font;
end;
•
6SUDZG( G]LDáDQLH DSOLNDFML
2. Aplikacje na wielu formach.
Zadanie aplikacji:
DSOLNDFMD ]DZLHUD IRUP SRGVWDZRZ NWyUa ma
trzy przyciski z nazwami:
2WZyU] IRUP 2WZyU] 'LDORJ i Info. Po
QDFLQL
FLX SU]\FLVNX SRND]XMH VL
QRZD IRUPD RNUHORQHJR W\SX
About, Standard Dialog i forma pusta.
•
1D IRUPLH ZVWDZ HW\NLHW L trzy przyciski z napisami: 2WZyU] IRUP 2WZyU] 'LDORJ i Info.
•
.RU]\VWDMF ] PHQX File\New Form GRGDM GR DSOLNDFML QRZ IRUP
•
Dla zdarzenia OnClick przycisku
2WZyU] IRUP ZSLV] SURFHGXU
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;
•
Wybierz z opcji menu: File\New i dodaj do projektu f
RUP typu About box ] ]DNáDGNL Forms =PLH QDSLV\ QD
etykietach i dodaj do przycisku z napisem Info
IRUP\ SRGVWDZRZHM SURFHGXU –zdarzenie:
procedure TForm1.Button3Click(Sender: TObject);
begin
AboutBox.Show;
end;
•
Dla przycisku OK formy About box dodaj tre
ü SURFHGXU\
procedure TAboutBox.OKButtonClick(Sender: TObject);
Close;
end;
•
Wybierz z menu: File\New
L GRGDM ] ]DNáDGNL Dialogs IRUP typu Standard Dialog:
]PLH QDSLV QD SU]\FLVNX Cansel na Anuluj,
dodaj okno edycyjne,
wpisz dla przycisku OK WUHü SURFHdury:
Form1.Label1.Caption := Edit1.Text;
OkBottomDlg.Close;
dla przycisku Anuluj ZSLV] WUHü SURFHGXU\:
OkBottomDlg.Close;
Dla przycisku Otwórz Dialog
IRUP\ SRGVWDZRZHM GRGDM WUHü SURFHGXU\
OKBottomDlg.Show;
•
6NRPSLOXM PRGXá :FLVNDMF SU]\FLVN Yes w pokD]XMF\P VL SRGF]DV NRPSLODFML RNQLH NRPXQLNDWX SRWZLHUG(
GRáF]DQLH EUDNXMF\FK HOHPHQWyZ GR SURMHNWX
•
6SUDZG( G]LDáDQLH DSOLNDFML
•
2EHMU]\M NRG\ GRáF]RQ\FK PRGXáyZ
3. Wykorzystanie komponentów Calendar i ProgressBar.
Komponent Calendar to tabelka
RNUHODMFD GQL PLHVLFD L GQL W\JRGQLD Z GDQ\P PLHVLFX
Komponent ProgressBar
WR ZVND(QLN SU]HELHJX SURFHVX
=DSR]QDü VL ] ZáDFLZRFLDPL NRPSRQHQWyZ &DOHQGDU L 3URJUHVV%DU ]Dá QU
Zadanie aplikacji:
$SOLNDFMD SRND]XMH NDOHQGDU] ] ]D]QDF]RQ ELH*F GDW 1D HW\NLHFLH XZLGRF]QLRQH MHVW LOH GQL
XSá\Q áR RG SRF]WNX URNX GZD VáXSNL Z\NUHVX SRND]XM Z SURFHQWDFK MDN F] ü URNX RUD] MDN F] ü PLHVLFD PDP\
MX* ]D VRE
•
1D IRUPLH XPLHü NRPSRQHQW\
Calendar ] ]DNáDGNL Samples,
dwa komponenty ProgressBar ] ]DNáDGNL Win32; pierwszy do pokazywania przeELHJX F]DVX GOD PLHVLFD
i drugi dla roku,
GZLH HW\NLHW\ XPLHV]F]DMF MH RERN VáXSNyZ ProgressBar, ustaw napisy na etykietach odpowiednio: 0LHVLF
Rok.
•
Wyskaluj ProgressBar
] HW\NLHW Rok Z QDVW SXMF\ VSRVyE
Min
1
Max
365
•
Dla komponentu ProgressBar
] HW\NLHW 0LHVLF XVWDZ ZáDFLZRü
Min
1
•
:SLV] SURFHGXU OnActivate dla formy:
procedure TForm1.FormActivate(Sender: TObject);
//
WDEOLFD VWDá\FK RNUHODMFD OLF]E GQL Z PLHVLFX
const Miesiac: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30,
31, 30, 31);
var
m, i, ile_dni: Integer;
begin
m := Calendar1.Month;
ProgressBar1.Max := Miesiac[m];
PDNV\PDOQD OLF]ED GQL Z GDQ\P PLHVLFX
ProgressBar1.Position := Calendar1.Day;
ELH*F\ G]LH Z PLHVLFX
Ile_dni := 0;
S WOD REOLF]D LOH GQL XSá\Q áR RG SRF]WNX URNX GR GDQHJR PLHVLFD
for i := 1 to m - 1 do
ile_dni := ile_dni + Miesiac[i];
ile_dni := ile_dni + Calendar1.Day - 1;
Label2.Caption := Label2.Caption + IntToStr(ile_dni );
ProgressBar2.Position := ile_dni;
Label1.Caption := Label1.Caption + IntToStr(Calendar1.Day;
end;
•
8UXFKRP DSOLNDFM L VSUDZG( MHM G]LDáDQLH
4. Wykorzystanie komponentu DateTimePicker do wprowadzania daty.
Komponent DateTimePicker
NWyUHJR SRVWDü SU]\SRPLQD OLVW Z\ERUX ComboBox, pozwala ZSURZDG]Lü GDW SU]H]
Z\EyU ] NDOHQGDU]D .DOHQGDU] Z\ZLHWOD VL Z SRVWDFL WDEHONL SR NOLNQL FLX RNQD OLVW\ 3U]\FLVNL ]H VWU]DáN XPR*OLZLDM
SU]HFKRG]HQLH PL G]\ PLHVLFDPL -HOL NOLNQLHP\ Z QDJáyZHN WDEHONL DateTimePickera Z REU ELH QD]Z\ PLHVLFD
SRND]XMH VL OLVWD ] QD]ZDPL PLHVL F\ klikDMF Z REU ELH Z\ZLHWODQHJR URNX PDP\ PR*OLZRü HG\FML URNX lub selekcji
URNX VWU]DáNDPL SRND]XMF\PL VL
]D URNLHP
Komponent UpDown
WR VWU]DáNL GR SU]HVXZDQLD ZDUWRFL Z RNUHORQHM VNDOL ] RNUHORQ\P NURNLHP 3R Z\SHáQLHQLX
ZáDFLZRFL Associate (skojarzenie z innym komponentem) komponent UpDown VDP XPLHV]F]D VL
SU]\ VNRMDU]RQ\P
komponencie.
=DSR]QDü VL
] SRGVWDZRZ\PL ZáDFLZRFLDPL NRPSRQHQWyZ 'DWH7LPH3LFNHU L 8S'RZQ ]Dá QU 4).
4.1. Zadanie aplikacji: aplikacja odbiera od komponentu DateTimePicker
Z\EUDQ SU]H] X*\WNRZQLND GDW L ]DSLVXMH M QD
etykiecie.
•
1D IRUPLH XPLHü HW\NLHW L NRPSRQHQW DateTimePicker ] ]DNáDGNL Win32.
•
8VWDZ ZáDFLZRFL NRPSRQHQWX 'DWH7LPH3Lcker:
DateFormat
dfShort
Date
99–11–25
MinDate
95–01–01
MaxDate
05–01–01
•
Dla zdarzenia OnClick komponentu DateTimePicker
ZSLV] WUHü SURFHGXU\
Label1.Caption := DateToStr(DateTimePicker1.date);
•
8UXFKRP DSOLNDFM L VSUDZG( MHM G]LDáDQLH
4.2. Zadanie aplikacji:
DSOLNDFMD SU]HGVWDZLD ]ZL NV]DQLH GDW\ Z WDEHOFH NRPSRQHQWX DateTimePicker R G]LHVL ü ODW 'R
SU]HVXZDQLD GDW\ ZHGáXJ ODW ]DVWRVRZDQR NRPSRQHQW UpDown.
•
Do poprzedniej aplikacji dodaj komponent UpDown
] ]DNáDGNL Win32. 8VWDZ MHJR ZáDFLZRFL
Associate
DateTimePicker1 // kojarzenie ze wskazanym komponentem
Increment
1 // krok zmiany
Min 1995
Max
2005
Position
1999 // pozycja wy
MFLRZD ZVND(QLND
•
Dla zdarzenia OnChanging komponentu UpDown
ZSLV] SURFHGXU
procedure TForm1.UpDown1Changing(Sender: TObject);
begin
// ustawienie daty na 1 stycznia wybranego roku
DateTimePicker1.Date := StrToDate(IntToStr(UpDown1.Position) + '–01–01');
end;
•
6SUDZG( G]LDáDQLH DSOLNDFML
Uwaga:
$E\ RGELHUDü GDW EH]SRUHGQLR SR ]PLDQLH QDOH*\ Z RNQLH ObjectInspectora wyEUDü ] OLVW\ W SURFHGXU GOD
zdarzenia OnChange.
=DáF]QLN nr 4
3RGVWDZRZH ZáDFLZRFL komponentu Calendar:
Month –
ZáDFLZRü RNUHODMFD QXPHU PLHVLFD
Day –
ZáDFLZRü RNUHODMFD QXPHU GQLD Z PLHVLcu.
3RGVWDZRZH ZáDFLZRFL komponentu ProgressBar:
Min –
PLQLPDOQD ZDUWRü VáXSND ZVND(QLND – pozycja startowa,
Max –
PDNV\PDOQD ZDUWRü VáXSND ZVND(QLND – SR]\FMD NRFRZD
Position –
ELH*FD SR]\FMD ZVND(QLND – proporcjonalQLH GR WHJR ZVND]DQLD QDVW SXMH
]DPDORZDQLH VáXSND ZVND(QLND LQQ\P NRORUHP
Podstawowe
ZáDFLZRFL komponentu DateTimePicker:
DateFormat – format daty,
PR*OLZH ZDUWRFL dfShort, dfLong,
Date – data ustawiana jako
GRP\OQD Z RNQLH, VWDQGDUGRZR MHVW WR GDWD ELH*FD ] V\VWHPX,
MinDate – minimalna data pokazywana w kalendarzu,
MaxDate – maksymalna data pokazywana w kalendarzu.
3RGVWDZRZH ZáDFLZRFL komponentu UpDown:
Associate –
ZáDFLZRü XPR*OLZLDMFD NRMDU]HQLH ] wskazanym komponentem,
Min –
ZáDFLZRü RNUHOD PLQLPDOQ ] GRSXV]F]DOQ\FK ZDUWRFL
Max –
ZáDFLZRü RNUHOD PDNV\PDOQ ZDUWRü
Position –
ELH*FD ZDUWRü ZVND(QLND
Zadania
Zadanie 19
8WZyU] DSOLNDFM
NWyUD PDOXMH SDQHO Z\EUDQ\P SU]H] &LHELH NRORrem. .RORU Z\SHáQLHQLD Z\ELHUDQ\ MHVW ] Z\NRU]\VWDQLHP
komponentu ColorDialog.
Zadanie 20
Dodaj do aplikacji z zadania 3
UHDNFM QD ]PLDQ GDW\ Z NDOHQGDU]X WDN DE\ DNWXDOL]RZDá\ VL VáXSNL VWDQX
Zadanie 21
Dodaj do aplikacji z zadania 3
OLVW Z\ERUX ] QD]ZDPL PLHVL F\ L XVWDZLDM ] OLVW\ QXPHU\ PLHVL F\ ZáDFLZRü Month
komponentu Calendar).
Zadanie 22
$E\ ]DEH]SLHF]\ü SU]HG ZSURZDG]DQLHP SU]H] X*\WNRZQLND EH]SRUHGQLR Z RNLHQNX Eá GQ\FK ZDUWRFL GRGDM REVáXJ
Eá GX GR DSOLNDFML z zadania 4.1.