P RO JE KT O WANI E O BI E KT O WE –
ûZLF]HQLD ODERUDWRU\MQH
TEMAT 3: Borland Delphi – podstawy tworzenia aplikacji cz. 3.
TEMAT 3: Borland Delphi – podstawy tworzenia aplikacji cz. 3.
1.
7ZRU]HQLH SDVND ] QDU] G]LDPL
'R WZRU]HQLD SDVND ] QDU] G]LDPL VáX*\ NRPSRQHQW ToolBar ] ]DNáDGNL Win32. Przyciski dodajemy na pasku,
NRU]\VWDMF ] PHQX SRGU F]QHJR NRPSRQHQWX ToolBar. 'R WDN XWZRU]RQ\FK SU]\FLVNyZ PR*QD SRGSLü OLVW REUD]NyZ
]D SRPRF NRPSRQHQWX ImageList.
Zadanie aplikacji: a
SOLNDFMD Z\ZLHWOD RNQR GR ZSLV\ZDQLD WHNVWX L WZRU]\ SDVHN ] QDU] G]LDPL GR NRSLRZDQLD
wklejania i wycinania tekstu.
•
1D IRUP ZVWDZ NRPSRQHQW\ Memo ] ]DNáDGNL Standard, ToolBar i ImageList ] ]DNáDGNL Win32.
•
Wyselekcjonuj ToolBar
L SUDZ\P SU]\FLVNLHP P\V]\ SU]HMG( GR PHQX
SRGU
F]QHJR D QDVW
SQLH Z\ELHU] F]WHURNURWQLH New Button;
w ten sposób dodajemy przyciski do paska ToolBar.
•
Wyselekcjonuj ImageList,
SUDZ\P SU]\FLVNLHP P\V]\ SU]HMG( GR PHQX
SRGU F]QHJR D QDVW SQLH Z\ELHU] ImageListEditor L XWZyU] OLVW REUD]NyZ QD
WZRU]RQH SU]\FLVNL QDU] G]LRZH
ZFLQLM SU]\FLVN Add,
wybierz z foldera: Borland Shared\Images\Buttons
REUD]NL NWyUH V
symbolami operacji wycinania, wklejania, kopiowania, czyszczenia,
SRWZLHUG( SU]\FLVNLHP Yes SRG]LDá REUD]ND QD GZD PQLHMV]H L Z\NDVXM GUXJL
] SRZVWDá\FK REUD]NyZ ELWPDS\ Z NDWDORJX PDM UR]PLDU\ ZL NV]H QL* SU]\MPRZDQH SU]H] OLVW ImageList),
]DWZLHUG( OLVW SU]\FLVNLHP OK.
•
Ustaw dla komponentu ToolBar
ZáDFLZRü Images, Z\ELHUDMF ] OLVW\ Z\ERUX QD]Z utworzonej listy obrazków.
•
'R ND*GHJR SU]\FLVNX XWZyU] G\PHN REMDQLDMF\ G]LDáDQLH
•
6SUDZG( G]LDáDQLH DSOLNDcji.
2. Korzystanie z pola Memo.
Komponent Memo –
WR SROH WHNVWRZH VáX*FH GR Z\NRQ\ZDQLD RSHUDFML QD WHNFLH
3RGVWDZRZH PHWRG\ L ZáDFLZRFL NRPSRQHQWX Memo:
CutToClipboard – metoda wycinania wyselekcjonowanego tekstu do schowka,
CopyToClipboard – metoda kopiowania wyselekcjonowanego tekstu do schowka,
PasteFromClipBoard –
PHWRGD ZNOHMDQLD WHNVWX ]H VFKRZND Z PLHMVFX SRáR*HQLD kursora,
ClearSelection – metoda odznaczenia tekstu,
Clear –
PHWRGD F]\V]F]HQLD ]DZDUWRFL SROD Memo,
Lines –
ZáDFLZRü W\SX RELHNWRZHJR 76WULQJV OLVWD áDFXFKyZ GRW\F]\ OLQLL WHNVWX
7X ]DVWRVRZDQR GZLH PHWRG\ WHM ZáDFLZRFL
— Lines.LoadFromFile (nazwa
6WULQJ áDGRZDQLH ]DZDUWRFL SOLNX R QD]ZLH danej parametrem nazwa
do pola Memo,
— Lines.SaveToFile (nazwa: String) zapisywanie
]DZDUWRFL SROD Memo w pliku
o nazwie danej parametrem nazwa.
Zadanie aplikacji:
SRSU]HGQLD DSOLNDFMD X]XSHáQLDQD MHVW SURFHGXUDPL REVáXJL SROD 0HPR UHDOL]XMF\PL NRSLRZDQLH
Z\FLQDQLH L ZNOHMDQLH WHNVWX 3RQDGWR GR DSOLNDFML GRGDZDQ\ MHVW SDVHN QDU] G]LRZ\ ]DZLHUDMF\ WU]\ SU]\FLVNL
V\PEROL]XMFH RSHUDFMH QD SOLNX &]\WDM =DSLV] &]\ü :FLQL
FLH SU]\FLVNX Zapisz, powoduje zapisanie w pliku
tekstowym o nazwie moj.txt
]DZDUWRFL SROD 0HPR :FLQL FLH SU]\FLVNX &]\ü powoduje wyczyszczenie pola Memo.
Przycisk Czytaj
ZF]\WD GR SROD 0HPR ]DZDUWRü SOLNX moj.txt.
•
2WZyU] SRSU]HGQL DSOLNDFM
•
Dla zdarzenia OnClick przycisków ToolButton wpisz procedury:
dla przycisku Wytnij:
Memo1.CutToClipboard;
dla przycisku Wklej:
Memo1.PasteFromClipboard;
dla przycisku Kopiuj:
Memo1.CopyToClipboard;
dla przycisku
:\F]\ü zaznaczone:
Memo1.ClearSelection.
•
8UXFKRP DSOLNDFM :SLV] GR SROD Memo tekst, wyselekcjonuj klawiszami Shift +
→
L Z\SUyEXM G]LDáDQLH
SU]\FLVNyZ ] SDVND QDU] G]LRZHJR
•
'R SDVND QDU] G]LRZHJR GRGDM VHSDUDtor i kolejne trzy SU]\FLVNL V\PEROL]XMFH RSFMH Czytaj, Zapisz, &]\ü.
6SRVyE WZRU]HQLD RSLVDQ\ MHVW Z SRSU]HGQLP üZLF]HQLX
•
W zmiennych globalnych dodaj:
const st:string = 'c:\moj.txt';
VWDáD W\SRZDQD LQDF]HM OLWHUDá
] QD]Z SOLNX
•
Dla zdarzenia OnClick przycisków ToolButton
ZSLV] WUHü SURFHGXU
dla przycisku Czytaj:
Memo1.Lines.LoadFromFile(st);
]DáDGRZDQLH GR SROD 0HPR ]DZDUWRFL SOLNX
dla przycisku Zapisz
: Memo1.Lines.SaveToFile(st);
VFKRZDQLH GR SOLNX ]DZDUWRFL SROD 0HPR
dla przycisku
&]\ü
: Memo1.Clear;
Z\F]\V]F]HQLH ]DZDUWRFL SROD 0HPR
•
6SUDZG( G]LDáDQLH DSOLNDFML
6WURQ\ ] ]DNáDGNDPL
3.1.
6WURQ\ ] ]DNáDGNDPL GOD SDVNyZ QDU] G]LRZ\FK
Komponentem prezentowanym tutaj jest PageControl
6áX*\ RQ GR WZRU]HQLD VWURQ ] ]DNáDGNDmi na formie, notesu
] ]DNáDGNDPL OXE VWURQ ] SDVNDPL QDU] G]LRZ\PL 3U]HGVWDZLRQR WX VSRVyE tworzenia stron przez wykorzystanie menu
SRGU
F]QHJR NRPSRQHQWX
Zadanie aplikacji:
DSOLNDFMD MHVW UR]V]HU]HQLHP SRSU]HGQLHM DSOLNDFML 3DVNL QDU] G]LRZH ToolBar XPLHV]F]RQH V QD
VWURQDFK ] ]DNáDGNDPL 1DSLV\ QD ]DNáDGNDFK 2SHUDFMH QD WHNFLH, Zapis, Odczyt. 7UHFL SURFHGXU Z\ZRá\ZDQ\FK
SU]H] SU]\FLVNL V G]LDáDQLD QD SROX Memo, DQDORJLF]QH MDN Z SRSU]HGQLP üZLF]HQLX
•
1D IRUPLH XPLHü NRPSRQHQW Memo oraz komponent PageControl
] ]DNáDGNL Win32 VáX*F\ GR WZRU]HQLD VWURQ ] ]DNáDGNDPL
•
8WZyU] GZLH VWURQ\ QRWDWQLND Z QDVW SXMF\ VSRVyE
wyselekcjonuj PageControl,
XDNW\ZQLM PHQX SRGU F]QH SUDZ\ SU]\FLVN P\V]\
wybierz New Page.
•
W ObjectInspectorze wybierz kolejno TabSheet1, TabSheet2 i ustaw
ZáDFLZRFL Caption ]DNáDGHN QD SRND]XMFH VL QD ]DNáDGNDFK
2SHUDFMH QD WHNFLH Zapis i Odczyt.
•
8PLHü QD VWURQLH SLHUZV]HM NRPSRQHQW ToolBar i utwórz przyciski
QDU] G]LRZH s\PEROL]XMFH NRSLRZDQLH Z\FLQDQLH L ZNOHMDQLH Wekstu.
•
1D GUXJLHM VWURQLH QRWDWQLND XWZyU] GUXJL SDVHN QDU] G]LRZ\ ] SU]\FLVNDPL GR RWZLHUDQLD pliku i zapisu do pliku.
•
:SLV] SURFHGXU\ REVáXJL GOD SU]\FLVNyZ ] SDVNyZ QDU] G]LRZ\FK
•
:\SUyEXM G]LDáDQLH
3.2.
1RWDWQLN ] ]DNáDGNDPL W\SX :LQ 3.1.
Ten typ not
DWQLND E\á SRZV]HFKQLH VWRVRZDQ\ Z SRSrzedniej wersji programu dla Win 3.11. Obecnie stosowany jest typ
oparty na PageControl,
QDWRPLDVW RSLVDQ\ QL*HM QRWDWQLN PR*QD ]EXGRZDü SRG NWHP LQQHJR W\SX ]DNáDGHN
Komponenty tu zaprezentowane to NoteBook – do tworzenia stron notesu, i TabSet –
GR WZRU]HQLD ]DNáDGHN
3RGVWDZRZH ZáDFLZRFL L PHWRG\ NRPSRQHQWX NoteBook:
ActivePage –
ZáDFLZRü RNUHOD QD]Z VWURQ\ DNW\ZQHM
PageIndex –
ZáDFLZRü RNUHOD LQGHNV VWURQ\ QRWDWQLND
Refresh –
PHWRGD SRZRGXMH RGZLH*DQLH notatnika.
3RGVWDZRZH ZáDFLZRFL NRPponentu Tabset:
TabIndex –
RNUHODMFD LQGHNV ]DNáDGNL
Zadanie aplikacji:
DSOLNDFMD SUH]HQWXMH WU]\VWURQLFRZ\ QRWDWQLN ] ]DNáDGNDPL 3DVWZD, Miasta, Rzeki. Wybór danej
]DNáDGNL XZLGRF]QL RGSRZLHGQL VWURQ
QRWDWQLND, gdzie w polu Memo Z\SLVDQH E
G QD]Z\ NLONX SDVWZ PLDVW OXE
rzek.
•
8PLHü QD IRUPLH NRPSRQHQW Bevel ] ]DNáDGNL Additional (dla zaznaczenia
wyp
XNáRFL L XVWDZ MHJR ZáDFLZRü: Style na bsRaised.
•
Na komponencie Bevel
XPLHü ] ]DNáDGNL Win 3.1 komponent\ ZHGáXJ
SRQL*V]HJR V]NLFX
NoteBook – strona notesu
TabSet – ]DNáDGND QRWHVX
•
Wyselekcjonuj TabSet,
NOLNQLM QD ZáDFLZRü 7DEV L ZSLV] QDSLV\
SRND]XMFH VL QD ]DNáDGNDFK 3DVWZD 0LDVWD 5]HNL
•
Wyselekcjonuj NoteBook,
Z\ELHU] ZáDFLZRü Pages i nazwij trzy strony
notatnika: pierwsza, druga, trzecia,
Z\ELHUDMF ]D ND*G\P UD]HP przycisk Add (XVX SR]\FM Default).
•
Ustaw dla komponentu NoteBook
ZáDFLZRü ActivePage na pierwsza.
•
8PLHü QD VWURQLH SLHUZV]HM NRPSRQHQW Memo, NOLNQLM RERN ZáDFLZRFL Lines i wpisz tam w kolejnych liniach
QD]Z\ NLONX SDVWZ :áDFLZRü Enabled dla pola Memo ustaw na False.
•
3RZWyU] GZD SRSU]HGQLH SXQNW\ GOD NROHMQ\FK VWURQ QRWDWQLND ZSLVXMF odpowiednio nazwy miast i rzek. Ustaw
ponownie dla komponentu NoteBook
ZáDFLZRü ActivePage na pierwsza.
•
Wpisz dla zdarzenia OnClick komponentu TabSet
QDVW SXMF SURFHGXU V\QFKURQL]DFMD VWURQLF QRWDWQLND
] ]DNáDGNDPL
procedure TForm1.TabSet1Click(Sender: TObject);
begin
Notebook1.PageIndex := Tabset1.TabIndex;
Notebook1.Refresh;
end;
•
Sp
UDZG( G]LDáDQLH QRWDWQLND
4. Komponent StringGrid –
Z\SHáQLDQLH WDEHOL
Komponent StringGrid
VáX*\ GR Z\ZLHWODQLD áDFXFKyZ Z WDEHOL GZXZ\PLDURZHM SU]\SRPLQDMFHM DUNXV]
NDONXODF\MQ\ 3RGVWDZRZH ZáDFLZRFL
Cells[ACol, ARow
,QWHJHU@ W\S 6WULQJ ZáDFLZRü RGGDMFD Z SRVWDFL áDFXFKD ]DZDUWRü NRPyUNL ZVND]DQHM
parametrami,
Cols[Index
,QWHJHU@ W\S 76WULQJV ZáDFLZRü RGGDMFD Z SRVWDFL WDEOLF\ áDFXFKyZ NROXPQ o numerze Index,
Rows[Index
,QWHJHU@ W\S 76WULQJV ZáDFLZRü RGGDMFD Z SRVWDFL WDEOLF\ áDFXFKyZ ZLHUV] o numerze Index,
ColCount
W\S /RQJLQW ZáDFLZRü RGGDMFD OLF]E NROXPQ
RowCount
W\S /RQJLQW ZáDFLZRü RGGDMFD OLF]E ZLHUV]\
Zadanie aplikacji: dziennik elektroniczny –
DSOLNDFMD WZRU]\ QRWDWQLN QDSLV\ QD MHJR ]DNáDGNDFK V QD]ZDmi
SU]HGPLRWyZ 1D ND*GHM VWURQLH QRWDWQLND XPLHV]F]RQD MHVW WDEHOND ] OLVW RVyE Z JUXSLH ,VWQLHMH PR*OLZRü ZSLV\ZDQLD
RFHQ DOH RFHQ\ ZSLV\ZDQH GR WDEHOL QLH V ]DSDPL
W\ZDQH 6SRVyE ]DSLVX GR SOLNX omawiany jest Z F]
FL GRW\F]FHM
plików.
•
Wykorzystuj
F NRPSRQHQW PageControl zbuduj notatnik o liczbie stron
UyZQHM OLF]ELH SU]HGPLRWyZ NWyUH FKFHV] ZSLVDü GR G]LHQQLND 1DSLV\ QD
]DNáDGNDFK SRZLQQ\ E\ü QD]ZDPL SU]HGPLRWyZ
•
Na pierwszej stronie notatnika wstaw komponent StringGrid
] ]DNáDGNL
Additional. Ob
HMU]\M MHJR ZáDFLZRFL L ]GDU]HQLD =QDMG(
w Helpie typ TStringGrid
L ]DSR]QDM VL ] RSLVHP ZáDFLZRFL Cells,
RowCount, ColCount.
Ustaw w ObjectInspectorze ZáDFLZRFL NRPSRQHQWX StringGrid:
Align
alClient
WDEHOD E G]LH Z\SHáQLDü FDá VWURQ
notatnika
ColCount
6 // liczba kolumn
FixedCols
2
OLF]ED ]DPUR*RQ\FK NROXPQ VWDOH ZLGRF]QH EH] PR*OLZRFL edycji)
RowCount 10 // liczba wierszy w tabeli = liczba uczniów w grupie
5R]ZL OLVW ZáDFLZRFL Options SU]H] SRGZyMQH NOLNQL FLH L XVWDZ
goEditing
7UXH XPR*OLZL WR ZSLV\ZDQLH ZDUWRFL GR WDEHOL
goColSizing
7UXH ]PLDQD UR]PLDUyZ V]HURNRFL NROXPQ\
goColMoving
7UXH PR*OLZRü SU]HQRV]HQLD NROXPQ
goRowMoving
7UXH PR*OLZRü SU]HQRV]HQLD ZLHUV]\
goTabs
7UXH SU]HPLHV]F]DQLH VL SR NRmórkach klawiszem Tab
•
7DN SU]\JRWRZDQ WDEHO
SU]HNRSLXM QD LQQH VWURQ\ QRWDWQLND Z\NRU]\VWXMF ] PHQX Edit\Copy, Edit\Paste
(w ObjectInspectorze
Z\ELHU] RGSRZLHGQL VWURQ L ]D]QDF] M P\V]N.
•
3U]HMG( GR HG\FML PRGXáX L SR F]
FL Implementation wpisz pURFHGXU
Z\SHáQLD RQD ZDUWRFL SRF]WNRZH
pojedynczej tabeli):
procedure pisztab(var s:TStringGrid);
var i: integer;
begin
with s do
begin
WZRU]HQLH QDJáyZND WDEHOL ZáDFLZRü &HOOV SRELHUD OXE RGGDMH ZDUWRü HOHPHQWX WDEHOL
Cells[0,0] := 'NR';
Cells[1,0
@ 1D]ZLVNR L LPL
Cells[2,0 ] := 'Data';
Cells[3,0 ] := 'Ocena za okres';
// ustawienie numerów w tabeli
for i := 1 to 20 do
Cells[0,i ] := IntToStr(i);
// wpisanie nazwisk osób w grupie
Cells[1,1] := 'Nowak Anna';
Cells[1,2] := 'Kowalska Alicja';
&HOOV>@ 1RZLVND (ZD
Cells[1,4] := 'Maj Anna';
end;
end;
•
:\VHOHNFMRQXM IRUP L GOD ]GDU]HQLD OnActivate ZSLV] SURFHGXU Z\SHáQLDMF WDEHONL notesu:
procedure TForm1.FormActivate(Sender: TObject);
begin
pisztab(StringGrid1);
pisztab(StringGrid2);
pisztab(StringGrid3);
pisztab(StringGrid4);
pisztab(StringGrid5);
pisztab(StringGrid6);
end;
•
8UXFKRP DSOLNDFM L VSUDZG( MHM G]LDáDQLH
VSUDZG( PR*OLZRü ZSURZDG]DQLD GDQ\FK
SRZL NV] V]HURNRü NROXPQ\ SU]H]QDF]RQHM QD GDW UR]VXZDMF QDJáyZHN NROXPQ\ P\V]
VSUDZG( G]LDáDQLH NODZLV]D Tab i NODZLV]\ VWU]DáHN SR ]DWZLHUG]HQLX HG\FML NODZiszem Enter,
VSUDZG( *H Z\NRU]\VWXMF NODZLV] F2 PR*QD SRSUDZLü ZSLVDQ\ WHNVW
VSUDZG( PR*OLZRü SU]HQRV]HQLD P\V] ZLHUV]\ L NROXPQ WDEHOL FKZ\WDMF QDJáyZHN NROXPQy lub NRPyUN
z numerem wiersza).
Zadania
Zadanie 10
=EXGXM DSOLNDFM SU]HGVWDZLDMF QRWDWQLN NWyUHJR ]DGDQLHP E G]LH
D SUH]HQWDFMD Uy*Q\FK VW\OyZ OLQLL EU]HJRZHM
E SUH]HQWDFMD Uy*Q\FK VW\OyZ Z\SHáQLDF]D
Wskazówka
Zbuduj notatnik dowolnego typu.
1D ]DNáDGNDFK QRWDWQLND XPLHü QD]Z\ D QD NDUWDFK NV]WDáW SURVWRNWD Z\NRU]\VWXMF
komponent Shape.
Zadanie 11
Zastosuj komponent StringGrid
GR Z\ZLHWOHQLD WDEOLF]NL PQR*HQLD ] ]DNUHVX RG O GR 10.
Zadanie 12
=EXGXM SRGU F]Q\ NDONXODWRU. W tabelce powLQQ\ E\ü F\IU\ L ]QDNL G]LDáD – Z\ELHUDP\ F\IU\ L G]LDáDQLH SU]H] NOLNQL FLH
P\V] D Z RNLHQNX HG\F\MQ\P SRND]XMH VL
Z\QLN G]LDáDQLD
Wskazówka
:\SHáQLM F\IUDPL WDEHON
NRPSRQHQWX StringGrid. Wykorzystaj zdarzenie OnSelectCell dla odbioru wyselekcjonowanej
komórki.