Download - delphi jegyzet
-
7/21/2019 delphi jegyzet
1/277
VGH Ladislav
PROGRAMOZS DELPHIBEN I.
Komrno, 2012
Selye Jnos Egyetem - Komrno
-
7/21/2019 delphi jegyzet
2/277
Elsz
A "Programozs Delphiben I." tanknyv azok szmra kszlt,
akik mr foglalkoztak programozssal Turbo Pascal, Borland Pascalvagy FreePascal krnyezetben s meg szeretnnek ismerkedni a
Windows opercis rendszer alatti, vizulis, esemnyvezrelt
programozssal Borland Delphi krnyezetben.
A tanknyv gyakorlati pldkon keresztl mutatja be a
programozst Borland Delphi krnyezetben, teljesen az alapoktl. Az
alapkomponensek bemutatsa utn rviden kitrnk a sajt osztlyok,
objektumok ltrehozsra, hibakezelsre, fjlokkal val mveletekre s
egyb hasznos programrszek bemutatsra is. Az olvas ezek
elsajttsa utn kpes lesz egyszerbb alkalmazsok ltrehozsra
Borland Delphi krnyezetben.
Az elmagyarzott feladatok forrskdjai megtallhatk a
mellkletben, ezek mappinak nevt egy kis CD ikon jelli a tanknyv
szvegben. Javasoljuk, hogy a tanknyv olvassa kzben prblja
meg sajt maga elkszteni a lertak alapjn az egyes alkalmazsokat
s csak vgszksg esetn hasznlja a mellkletet.
A tanknyv vgn tovbbi, magyarzat nlkli gyakorl
feladatok tallhatk. Ezek elksztst teljes mrtkben az olvasrabzzuk. Egy-egy mintamegolds azonban itt is megtallhat a CD
mellkletben.
Mint minden tanknyv elskiadsnak, ennek a tanknyvnek is
lehetnek hinyossgai. Ennek ellenre hisznk abban, hogy a knyv
mindenki szmra hasznos segdeszkzknt fog szolglni.
-
7/21/2019 delphi jegyzet
3/277
Tartalom
1 Mi a Delphi? .....................................................................................7
2 Az integrlt fejleszti krnyezet ....................................................93 Elsprogramunk Delphiben ........................................................13
3.1 Komponensek kivlasztsa.........................................................133.2 Objektumok tulajdonsgainak belltsa.....................................143.3 A reakcik belltsa az esemnyekre........................................173.4 Program mentse, fordtsa, futtatsa........................................19
4 A projekt fjlfelptse..................................................................22
5 A forrskdok ttekintse............................................................245.1 Az ablak forrskdja (.pas) .........................................................245.2 Alkalmazs projekt fjlja (.dpr)....................................................27
6 Alap komponensek ttekintse ...................................................28
7 Komponensek tulajdonsgai .......................................................33
7.1 A komponens neve s felirata.....................................................347.2 A komponens mrete s elhelyezkedse ...................................35
7.3 A komponens engedlyezse s lthatsga ............................367.4 A komponens Tag tulajdonsga ...............................................377.5 A komponens szne s bettpusa..............................................377.6 A komponens lebegsgja.......................................................397.7 Az egrmutat belltsa ............................................................407.8 Tabultor .....................................................................................40
8 Esemnyek ....................................................................................41
9 Hibakeress ...................................................................................46
10 Nagyobb projektek ksztse.......................................................5111 Standard zenetablakok...............................................................53
11.1 ShowMessage...........................................................................5311.2 MessageDlg ..............................................................................5411.3 MessageDlgPos ........................................................................55
12 Informcik bevitele .....................................................................57
12.1 Jellngyzet hasznlata CheckBox .....................................5712.2 Vlasztgomb RdioButton....................................................5912.3 Vlasztgomb csoport RadioGroup .......................................59
-
7/21/2019 delphi jegyzet
4/277
12.4 Beolvass zenetablak segtsgvel......................................6112.5 Egysoros szveg beviteli doboz Edit......................................6212.6 Tbbsoros szveg beviteli doboz Memo................................6412.7 Grgetsv - ScrollBar..............................................................6612.8 Szm bevitele SpinEdit segtsgvel.....................................6912.9 Listadoboz ListBox .................................................................7012.10 Kombinlt lista ComboBox...................................................7512.11 StringGrid komponens ............................................................7712.12 Idzt Timer ........................................................................8312.13 Gauge, ProgressBar komponensek........................................85
13 Tovbbi komponensek .................................................................87
13.1 Kp hasznlata Image ...........................................................8713.2 Vlasztvonal Bevel ...............................................................93
13.3 Alakzat Shape ........................................................................9513.4 Grafikus nyomgomb BitBtn ..................................................9513.5 Eszkztr gomb SpeedButton................................................9713.6 Kp lista ImageList .................................................................9813.7 Eszkztr ToolBar ..................................................................9913.8 llapotsv StatusBar............................................................10213.9 Knyvjelzk TabControl, PageControl .................................10313.10 Formzhat szvegdoboz RichEdit ...................................10513.11 XPManifest komponens ........................................................106
14 Menk ltrehozsa ......................................................................10814.1 Fmen MainMenu ..............................................................10814.2 Loklis (popup) men PopupMenu ......................................114
15 Objektum orientlt programozs...............................................116
15.1 Konstruktor ..............................................................................12115.2 Destruktor, free metdus.........................................................12315.3 Hozzfrs az adatokhoz........................................................123
15.4 rkls ....................................................................................12615.5 Polimorfizmus, virtulis s absztrakt metdusok ....................127
16 Az osztlyok hierarchija, VCL..................................................130
17 Billentyzet, egr ........................................................................132
17.1 Az egr ....................................................................................13217.2 Billentyzet..............................................................................13517.3 Pldaprogramok az egr s a billentyzet hasznlatra ........13517.4 Drag & Drop fjlok tartalmnak megtekintse .....................139
-
7/21/2019 delphi jegyzet
5/277
18 Grafika, rajzols, szveg kirsa................................................144
18.1 Ecset stlusa ............................................................................14518.2 Bitmap beolvassa llomnybl..............................................14718.3 Szveg grafikus kirsa...........................................................147
18.4 Egyszer
grafikus editor..........................................................14918.5 Szntmenet ltrehozsa ........................................................15218.6 Kp kirajzolsa megadott koordintkra.................................15418.7 Animci megjelentse ..........................................................157
19 Hibk a program futsakor, kivtelek kezelse .......................159
19.1 Hibk kezelse hagyomnyos mdon ....................................16019.2 Hibk kezelse kivtelek segtsgvel....................................16119.3 Except blokk szintaxisa ...........................................................165
20 Mveletek fjlokkal .....................................................................16720.1 Fjltmogats az Object Pascal-ban ......................................16720.2 Fjltmogats a Delphiben .....................................................16920.3 Hibk a fjlokkal val munka sorn.........................................17020.4 Tovbbi fjlokkal kapcsolatos parancsok................................172
21 Standard dialgusablakok .........................................................174
21.1 OpenDialog, SaveDialog.........................................................17721.2 OpenPictureDialog, SavePictureDialog ..................................180
21.3 FontDialog ...............................................................................18021.4 ColorDialog..............................................................................18321.5 PrinterSetupDialog, PrintDialog ..............................................18421.6 FindDialog, ReplaceDialog......................................................185
22 Tbb ablak (Form) hasznlata ...................................................187
22.1 Alkalmazs kt ablakkal (modlis ablak) ................................18722.2 Ablakok, melyekbl t lehet kapcsolni msik ablakokba
(nem modlis ablak) ................................................................19122.3 Knyvnyilvntart program .....................................................195
23 SDI, MDI alkalmazsok ...............................................................202
23.1 Alkalmazs, mely tbb dokumentummal tud egyszerredolgozni (MDI) .........................................................................202
24 A Windows vglapja .................................................................207
24.1 A vglap hasznlata a programozsban...............................208
25 A Windows zenetei ...................................................................21825.1 zenet kezelse Delphiben ....................................................220
-
7/21/2019 delphi jegyzet
6/277
25.2 Berkezzenetek szmllsa ..............................................22325.3 Felhasznl ltal definilt zenetek kldse...........................22625.4 A kpernyfelbontsnak rzkelse ....................................23025.5 A Windows nhny kivlasztott zenete.................................231
26 Tovbbi hasznos programrszek ..............................................23226.1 Hang lejtszsa az alkalmazsban.........................................23226.2 Erforrs (resource) llomnyok hasznlata ..........................23426.3 Kp mozgatsa a kurzor billentyk segtsgvel....................23826.4 Objektumokbl ll tmb.........................................................23926.5 Aktulis dtum, idlekrdezse .............................................24226.6 INI llomnyok, rendszerler adatbzis (regiszterek)
hasznlata...............................................................................246
Gyakorlatok .......................................................................................254Mellklet: Leggyakrabban hasznlt vltozk..................................273
Mellklet: Magyar - Angol - Szlovk sztr.....................................275
Irodalomjegyzk ................................................................................276
-
7/21/2019 delphi jegyzet
7/277
7
1 Mi a Delphi?
Bevezetsknt nzzk meg, milyen f jellemvonsai vannak a
Delphi programozsi krnyezetnek. A Delphi alapja az Object Pascal
programozsi nyelv, amely a Turbo Pascal objektumos felptmnye.
ppen ezrt sok mindent, amit mr megtanultunk Turbo Pascal, Borland
Pascal vagy FreePascal programozsi nyelvben, fel fogunk tudni
hasznlni a Delphiben val programozs sorn. Fontos, hogy
valamilyen szinten mr tudjunk programozni ismerjk a vezrlsi
szerkezetek: ciklusok (for..do, while..do, repeat..until), elgazsok
(if..then..else, case..end) fogalmt. Tudnunk kne, hogyan kell a
program elejn vltozkat deklarlni (var..) s ismernnk kne a
pascalban hasznlt vltozk alaptpusait (a Delphiben hasznlt
egyszer vltozk tpusait a jegyzet vgn tallhat mellkletben
tekinthetjk t).
Mirt jobb a Delphi fejleszti krnyezetben programozni?
Elssorban a produktivits vgett. A Delphi az egyik legeffektvebb
eszkz, mellyel a Windows opercis rendszer alatt alkalmazsokat
hozhatunk ltre. A rengeteg vizulis eszkznek s integrlt
krnyezetnek ksznheten az alkalmazs ltrehozsnak maximlisan
leegyszerstett fejleszti fzisa van. Amit eddig 8-10 rn t rtunk meg
Turbo Pascalban, azt Delphiben ltre tudjuk hozni pr ra alatt.
Ezen kvl a Windows alatti programozs ltalban (teht
Delphiben is) klnbzik a szekvencilis programozstl, melyet a
Turbo Pascal programozsi nyelvnl megismerhettnk. A Windows
alatti programozs esemnyekkel irnytott programozs. A program
irnytst az opercis rendszer vgzi, a programoznak csak arendszer klnfle esemnyeire kell reaglnia. Az irnyts teht
-
7/21/2019 delphi jegyzet
8/277
8
tovbbra is az opercis rendszernl marad. Ha trtnik valami (pl. a
felhasznl kattint az egr valamelyik gombjval), a rendszer kld az
alkalmazsunknak egy zenetet. Ezt az zenetet valahogy gy
kpzelhetjk el: kedves alkalmazs, a te f
ablakodban balegrkattints trtnt az X, Y koordintkon. Az alkalmazs erre az
zenetre reaglhat (pl. gy, hogy kir valamit), vagy figyelmen kvl
hagyhatja a programoznak csak ezt a reakcit kell megfogalmaznia.
Ezekrl termszetesen mg lesz sz bvebben a kvetkez
fejezetekben.
Ebben a jegyzetben lev brk s a mellkleten tallhatforrskdok a Delphi 2005-s (Delphi 9) verzijban kszltek.
Termszetesen az alkalmazsok ltrehozhatk a lertak alapjn
alacsonyabb, ill. magasabb verziszm Delphiben is.
-
7/21/2019 delphi jegyzet
9/277
9
2 Az integrlt fejleszti krnyezet
A Delhielindtsa utn j alkalmazs ltrehozshoz vlasszuk
ki a File New VCL Form application - Delphi for Win32
menpontot. (VCL = Visual Component Library = Vizulis
komponensknyvtr)
Itt lthatjuk, hogy Delphi 2005-ben nem csak Delphi Win32
alkalmazst, de C#, illetve .Net alkalmazsokat is ltrehozhatunk. Mi
ebben a knyvben csak Delphi Win32 alkalmazsokat fogunk
ltrehozni.
-
7/21/2019 delphi jegyzet
10/277
10
Miutn ltrehoztunk egy j alkalmazst, az albbi brhoz
hasonlt lthatunk. Nzzk meg rszletesebben milyen rszekbl ll a
Delphifejleszti krnyezete:
Men: A klnfle belltsok, programfuttats, segtsg,
keress, stb. megvalstst vgezhetjk el itt.
Eszkztr: A menbl is meghvhat funkcik gyors elrst
teszik lehetv. Ha az egrkurzort valamelyik ikon fl visszk, akkor
egy buborkban tjkoztatst kapunk az adott funkcirl.
Ablak tervez: A leendprogramunk formjt tervezhetjk meg
itt arnylag egyszer mdon. Megvltoztathatjuk az ablak (form)
MMeennEEsszzkkzzttrr
EElleemm
ppaalleettttaa
OObbjjeekkttuumm--
ffeellggyyeell
AAbbllaakktteerrvveezz
FFoorrrrsskk
sszzeerrkkeesszztt
!!ttrruu
kktt""rraa
##rroojjeekktt
mmaannaaggeerr
-
7/21/2019 delphi jegyzet
11/277
11
mrett, komponenseket (nyomgombokat, cmkket, kpeket, stb.)
helyezhetnk el rajta.
Elempaletta: Itt vlaszthatjuk ki az alkalmazsunk ptelemeit
(komponenseket), pl. nyomgombokat, beviteli mezket, stb.
Objektum felgyel: Ez a Delphi egyik legfontosabb rsze.
Segtsgvel bellthatjuk az ablakunkon elhelyezett komponensek
tulajdonsgait (properties) s reakciit az esemnyekre (events).
TIPP: Az objektum felgyelben a tulajdonsgok s az
esemnyek kategrik szerint vannak sorba rendezve. Ezt tllthatjuk,
ha rkattintunk az egr jobb gombjval az objektum felgyel
tetszleges mezjre s kivlasztjuk az Arrange by Name
menpontot. Hasonlan az Arrange by Category segtsgvel
visszallthatjuk a kategrik szerinti elrendezst.
Forrskd szerkeszt: A Delphinek az a rsze, ahova magt a
forrskdot (programot) rjuk. Ezt az ablakot kezdetben nem ltjuk, azablak aljn lev code fl segtsgvel jelenthetjk meg. Ha vissza
szeretnnk menni az ablakunk (form) tervezshez, ugyanott klikkeljnk
a design flre.
Struktra: Itt lthatjuk az alkalmazsunk ablakn (form) lev
komponensek hierarchikus elrendezst.
Project manager: A Delphiben mindig egy komplex
rendszerben (projektben) dolgozunk. Minden egyes alkalmazsunk egy
projektbl ll. Egy projekt tetszleges mennyisgfjlt hasznlhat. Ezek
a fjlok lehetnek programfjlok (unit), a hozzjuk tartoz ablakok (form),
az ablakon lev komponensek elrendezst tartalmaz fjlok,
adatllomnyok, kp- s hangfjlok. Azt, hogy a projektnkhz milyen
fjlok kapcsoldnak s melyik fjl melyik fjlhoz tartozik, a project
-
7/21/2019 delphi jegyzet
12/277
12
manager-ben lthatjuk. Kezdetben a projektnkhz kt fjl ktdik egy
programkdot tartalmaz fjl (.pas kiterjeszts) s egy olyan fjl, amely
az alkalmazsunk ablakn lev komponensek elrendezst, kezdeti
belltsait tartalmazza (.dfm kiterjeszts
).
-
7/21/2019 delphi jegyzet
13/277
13
3 Elsprogramunk Delphiben
Az els programunk csupn annyit fog tenni, hogy megjelent
egy szveget az ablakunkon. Az alkalmazsunk ablakn (form) lesz
mg egy nyomgomb, amely megnyomsval az alkalmazst
bezrhatjuk.
Pelda01
Az els alkalmazsunk elksztst egy kicsit rszletesebben
fogjuk trgyalni. A tovbbi alkalmazsok ltrehozst a jvben mrennl tmrebben fogjuk elemezni.
3.1 Komponensek kivlasztsa
Az els lpsek egyike, melyet minden alkalmazs
fejlesztsnek kezdetn meg kell tennnk, a megfelel komponensek
kivlasztsa.
1. Az j alkalmazs ltrehozshoz, ha mg nem tettk meg,
klikkeljnk a File New VCL Form Application - Delphi
for Win32 menpontra. A kperny kzepn megjelenik a
fablakunk (form).
2. Az elempalettban vlasszuk ki a TLabel (cmke)
komponenst. (Megjegyzs: A T beta type rvidtse
ltalban a Delphiben minden osztlyt, teht a
komponenseket is gy szoks jellni a nevk eltt, ezzel is
segtve a programkd knnyebb megrtst. Az
osztlyokrl majd mg lesz sz bvebben a ksbbifejezetekben.)
-
7/21/2019 delphi jegyzet
14/277
14
3. Klikkeljnk az ablakunkban arra a helyre, ahov a cmkt el
szeretnnk helyezni. A cmke elhelyezsekor a Delphi
automatikusan az objektumhoz a Label1 nevet rendeli
hozz.4. Hasonlan helyezznk el az ablakunkon egy TButton
(nyomgomb) komponenst. A Delphi az elhelyezett
objektumhoz a Button1nevet rendeli hozz.
Jelenleg az ablakunkon kt objektum (komponens) tallhat, a
Label1 s Button1:
3.2 Komponensek tulajdonsgainak belltsa
Miutn kivlasztottuk s elhelyeztk az ablakunkon a szksges
komponenseket, belltjuk azok tulajdonsgait (attribtumait). Mi most
csak a komponensek feliratait, mreteit, elhelyezseit fogjuk vltoztatni.
ltalban minden komponensnek ennl jval tbb tulajdonsga van
ezekkel majd folyamatosan megismerkednk.
-
7/21/2019 delphi jegyzet
15/277
15
1. Klikkeljnk a Label1-re a fablakunkban (Form1-en). Ezzel
a kivlasztott komponens lesz aktv az Objektum felgyel
ablakban. Az ablak tetejn kt vlasztsi lehetsgnk van
Properties (tulajdonsgok) s Events (esemnyek). Hanincs kivlasztva, vlasszuk most ki a Properties flet.
Ezzel kijelltk, hogy a komponens tulajdonsgait fogjuk
belltani. Az objektum felgyelben kt oszlopot lthatunk.
A bal oldali oszlopban lthatk a komponens
tulajdonsgainak a nevei, a jobb oldali oszlopban a
hozzjuk tartoz rtkek. Keressk itt meg a Caption
(felirat) tulajdonsgot s klikkeljnk r. A Label1 rtk
helyett rjuk be: Szia!.
szrevehettk, hogy az alkalmazsunk Form-jn is rgtn
megvltozott a felirat.
2. Klikkeljnk most az ablakunkon a Button1 felirat
nyomgombra. Ekkor az objektum felgyelben a Button1
tulajdonsgai jelennek meg. Klikkeljnk a Caption
tulajdonsgra s rjuk be: Kilps.
Jegyezzk meg, hogy a Caption belltsval az objektum
(komponens) neve nem vltozik meg, csak a felirat, amely
megjelenik rajta. Pldul a mi nyomgombunk felirata
-
7/21/2019 delphi jegyzet
16/277
16
Kilps, de a programkdban tovbbra is Button1 nven
fogunk tudni r hivatkozni!
3. Vegyk szre, hogy az alkalmazsunk ablaknak fels
svjban a Form1 felirat szerepel. Ez a fablakalaprtelmezett felirata. Vltoztassuk meg ezt is. Klikkeljnk
brhova az alkalmazsunk ablakn (de gy, hogy ne
klikkeljnk se a cmkre, se a nyomgombra). Ekkor az
objektum felgyelben a fablakunk tulajdonsgait
llthatjuk be. Vlasszuk itt ismt ki a Captiontulajdonsgot
s rjuk be feliratnak: Elsalkalmazsom.
4. Vltoztassuk meg a fablak mrett kisebbre gy, ahogy
azt tennnk brmilyen Windows alkalmazsnl fogjuk
meg az alkalmazsunk jobb als sarkt (vagy jobb s utna
als szlt) s hzzuk beljebb. Az ablakunk kisebb lett. Az
ablakunk mrett bellthatjuk az objektum felgyelben is
a Width (szlessg) s Height (magassg) tulajdonsgok
segtsgvel.
5. Vgl rendezzk el az ablakunkban a cmke s a
nyomgomb objektumokat. Egyszeren fogjuk meg azt az
objektumot, amit mshova szeretnnk tenni s vigyk t
egrrel. Termszetesen ezt is bellthatjuk az objektum
felgyelben is a Top (tvolsg a Form tetejtl) s a Left
(tvolsg a Form bal szltl) tulajdonsgok segtsgvel. A
komponensek elhelyezkedst bellthatjuk szintn a
Positionkivlasztsval a loklis pop-up menbl, amely a
komponensre jobb egrgombbal klikkelve jelenik meg.
Ezzel befejeztk az alkalmazsunk klalakjnak tervezst,amely jelenleg gy nz ki:
-
7/21/2019 delphi jegyzet
17/277
17
Alkalmazsunk ablaka pontosan gy fog kinzni futtatskor is
(termszetesen rcspontok nlkl lesz). A kvetkezlpsben mr csak
be kell lltanunk, hogy a Kilps gombra kattintssal a program
bezrdjon.
3.3 A reakcik belltsa az esemnyekreA kvetkezfontos lps a reakcik belltsa az esemnyekre.
Esemnyeknek neveznk mindent, ami az opercis rendszerben
trtnik s valahogyan sszefgg az objektumainkkal, mint pldul:
kattints egrrel, billentymegnyomsa, stb.
1. Elszr is meghatrozzuk, milyen esemnyekre szeretnnk
reaglni. Ezekbl most csak egyetlen egy kell neknk. A
Kilps gombra kattintsnl szeretnnk, hogy az
alkalmazsunk bezrdjon. Megnyitjuk ezrt az objektum
felgyelben a Button1 objektumot. Ez megtehetjk gy,
hogy egyszeren rkattintunk az objektumra az ablakunkon
(form1), vagy kivlasztjuk az Objektum felgyel legrdl
listjbl.
-
7/21/2019 delphi jegyzet
18/277
18
2. Az Objektum felgyelben most vlasszuk ki az Events
(esemnyek) flet. Mivel mi az objektumra kattintsra
szeretnnk reaglni, az esemnyek kzl vlasszuk ki az
OnClick esemnyt. A jobb oldali oszlopban az OnClickmellett levres mezre klikkeljnk r dupln.
Az objektum felgyelnek ebben az res mezjben mostmegjelenik a Button1Click felirat. Ez egy eljrs neve, amely mindig
meg lesz hvva, ha a felhasznl a Kilps gombra klikkel.
Tovbb szrevehettk, hogy eltnt az ablak tervez s
helyette a forrskd szerkeszt ablaka jelent meg. Ebbe az ablakba
fogjuk megrni a programkdot. A Delphi automatikusan ltrehozta a
Button1Click eljrst s a kurzort az eljrs begin..end kulcsszavaikz tette. Neknk mr csak annyi a dolgunk, hogy ide berjuk azt a
programrszt, amely meghatrozza, hogy mit tegyen a program a
Kilps gombra kattintskor.
A mi esetnkben a programkd bersa egyetlen lpsbl fog
llni. rjuk be a begin..end kz, ahol a kurzor villog, a kvetkezsort:
Application.Terminate;
-
7/21/2019 delphi jegyzet
19/277
19
A programrsz rsakor szrevehettk, hogy megjelentek a
kurzor mellett egy kis ablakban klnfle parancsszavak. Ez az
automatikus kiegszts a programoz munkjt szeretn
megknnyteni s meggyorstani. Elg elkezdennk rni az utastst,majd kivlasztani a megjelenlistbl a megfelelparancsot. Ha a lista
vletlenl nem jelenik meg automatikusan, azt elhvhatjuk manulisan
is a Ctrl + Spacebillentykombinci segtsgvel.
Hasonl mdon fogjuk a jvben megrni a bonyolultabb
esemnyek kezelst is. Az egy sornyi programkd helyet (ami most
Application.Terminate;) fogjuk berni a nha hossz s bonyolultnaktnprogramkdot.
Ezzel az alkalmazsunk ltrehozsnak fzisa valjban
befejezdtt!
3.4 Program mentse, fordtsa, futtatsa
Az elsalkalmazsunk ksz! Htra maradt mg az alkalmazs
lefordtsa s futtatsa. Mindenekeltt azonban mentsk el az egsz
projektnket. Br nem ktelez, de ajnlatos mindig, minden fordts s
futtats eltt az alkalmazs sszes rszt elmenteni, ha ugyanis a
fordtsnl vagy futtatsnl komolyabb hiba lpne fel, elveszhetne azalkalmazsunk el nem mentett rsze.
1. Az egsz alkalmazs elmentshez klikkeljnk a File
Save All menpontra. Megjelenik egy ablak, amelyben meg
kell adnunk az elmenteni kvnt unit nevt. Ajnljuk, hogy
minden egyes projektnek hozzunk ltre egy j alknyvtrat,
s abba mentsk el a projekt sszes llomnyt a Delphiminden egyes projekthez tbb llomnyt hoz ltre, s ha
-
7/21/2019 delphi jegyzet
20/277
20
mindig ugyanabba a mappba mentennk, egy id utn
nem igazodnnk ki a mappban tallhat fjlokon.
2. Adjuk meg a unit nevt, teht annak a forrskdnak a nevt,
amelyben a Button1Click eljrsunk is van. Itt hagyhatjuk aunit1.pasnevet.
3. Majd megjelenik egy jabb dialgusablak, ahol a projekt
nevt kell megadnunk. Ide rjuk be az elso.dprnevet. Ezzel
a projektnket elmentettk.
A kvetkezlps az alkalmazs lefordtsa. Afordts
alatt a
programoz szmra rthet forrskdbl a szmtgp szmra
rthetllomny ltrehozst rtjk. A fordts kt lpsben zajlik: egy
kompiltor s egy linker segtsgvel. A kompiltoraz alkalmazs vagy
annak egy rsznek megrsa utn a projektet kompillja egy
kzbls formba (ekkor minden modulhoz ltrejn egy DCU
kiterjeszts llomny). A linker ezekbl a kompillt llomnyokbl
ltrehoz egy futtathat alkalmazst (.EXE kiterjeszts llomnyt). Ez
az llomny mr brmelyik Windows opercis rendszert hasznl
szmtgpen futtathat a Delphijelenlte nlkl is.
1. Az alkalmazs lefordtshoz s futtatshoz klikkeljnk az
eszkztrban a ikonra (vagy vlasszuk ki a fmenbl a
Run Run parancsot, ill. nyomjuk meg az F9funkcibillentyt).
2. Az els alkalmazsunk elindult. Prbljunk rkattintani a
Kilpsgombra. Mkdik?
-
7/21/2019 delphi jegyzet
21/277
21
Az elsalkalmazs ltrehozsa sikeresen magunk mgtt van.
Ha belenznk a mappba, ahov az alkalmazst elmentettk,
tallhatunk ott egy elso.exenevllomnyt. Ezt az llomnyt brhol s
brmikor elindthatjuk s gynyrkdhetnk az els mkd
alkalmazsunk futsban.
Vegyk szre, hogy az alkalmazsunk egy csom olyan
funkcival is rendelkezik, amelyet nem kellett beprogramoznunk az
ablakot lehet mozgatni, tmretezni, minimalizlni, maximalizlni,
tartalmaz rendszerment (melyet a bal fels sarokban lev ikonra
klikkellssel hvhatunk el), stb. Ezen funkcikat a Delphi
programozta be a Windowsopercis rendszerrel egyttmkdve.
Megjegyzs az elsalkalmazsunkhoz: a program befejezsre
az Application.Terminate fggvnyt hasznltuk. Ha valaki rgebbenmr programozott Delphiben, lehetsges, hogy erre ms metdust
hasznlna (pl. form1.close) s az Application.Terminate tl ers
eszkznek tnik. Az Application.Terminate nem az egyetlen
hasznlhat megolds, de elsdlegesen ez a fggvny szolgl az
alkalmazs befejezsre s hasznlata teljesen korrekt s biztonsgos.
-
7/21/2019 delphi jegyzet
22/277
22
4 A projekt fjlfelptse
Vizsgljuk meg, hogyan nz ki a projektnk fjlfelptse. Ha
megnzzk a mappnkat, ahova a projektet mentettk, tbb llomnyt
tallhatunk benne. Elssorban nzzk meg, melyik llomnyokat kell
tmsolnunk, ha a forrskdot szeretnnk ms szmtgpre tvinni:
*.DPR Delphi Project. Minden projektnek ltezik egyetlen ilyen
f forrsllomnya. Ez elssorban ltrehozza az
alkalmazs ablakait, majd sikeres ltrehozs utn
elindtja az alkalmazst.
*.BDSPROJ Borland Development Studio Project fjl. Minden
projekthez egyetlen ilyen llomny tartozik. A projekt
klnfle belltsait tartalmazza.
*.PAS Unit forrskd. Ez tartalmazza az egyes modulok
programkdjt. Egy projektnek egy vagy tbb ilyen
llomnya lehet. Gyakorlatilag az alkalmazs minden
egyes ablakhoz tartozik egy ilyen llomny, de ezeken
kvl a projekt mg tartalmazhat tovbbi ilyen
llomnyokat (modulokat) is, melyekhez ablak nem
tartozik.
*.DFM Delphi Form. Formlers. Azokhoz a modulhoz,melyekhez tartoznak ablakok, lteznek ilyen
kiterjeszts llomnyok is. Ezek az llomnyok az
ablak s a rajta lev komponensek listjt s
tulajdonsgait tartalmazzk, teht mindent, amit az
ablak tervezben s az objektum felgyelben
belltottunk (a komponensek elrendezst, mreteit,
-
7/21/2019 delphi jegyzet
23/277
23
feliratait, egyb tulajdonsgait s a komponensek
egyes esemnyeihez tartoz eljrsok neveit is).
*.RES Resource. Windows erforrsfjl. Az alkalmazsunk
ikonjt tartalmazza.
A tbbi, mappban tallhat llomnyt nem szksges
tmsolnunk, ezen llomnyok tbbsgt a Delphia fenti llomnyokbl
hozta ltre automatikusan a projekt fordtsakor. Ezek kzl szmunkra
a legfontosabb az *.EXE kiterjeszts llomny. Ha alkalmazsunkat
ms gpre szeretnnk tvinni s futtatni (a forrskd nlkl), elg ezt az
llomnyt tmsolnunk s futtatnunk (az adott gpben nem szksges
hogy legyen teleptve Delphi). Termszetesen, ha a programunk
forrskdjt meg szeretnnk nzni, ill. szeretnnk benne valamit
javtani, majd jra fordtani, nem elg ez az egyetlen llomny,
szksges hozz az sszes fent emltett llomny is.
-
7/21/2019 delphi jegyzet
24/277
24
5 A forrskdok ttekintse
Ebben a fejezetben kicsit rszletesebben ttekintjk, milyen
programkdokat hozott ltre a Delphiaz elzprogram megrsakor.
5.1 Az ablak forrskdja (.pas)
Amikor megtervezzk az alkalmazsunk ablakt s elhelyezzk
rajta az egyes komponenseket, a Delphiautomatikusan kigenerl hozzegy forrskdot. Nzzk meg most ennek a unit1.pas llomnynak a
szerkezett:
unit Unit1;
interface
usesWindows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls;
typeTForm1 = class(TForm)Button1: TButton;Label1: TLabel;procedure Button1Click(Sender: TObject);
private{ Private declarations }
public{ Public declarations }
end;
var
Form1: TForm1;
-
7/21/2019 delphi jegyzet
25/277
25
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
beginApplication.Terminate;
end;
end.
A unit unit1; a modulunk nevt adja meg. Ezt kveten
szrevehetjk, hogy a unit kt rszre van bontva. Az els rsze azinterface kulcsszval kezddik (csatlakozsi vagy publikus fellet), a
msodik az implementation(kivitelezsi vagy implementcis rsz).
Az interface rszben fel vannak sorolva azok a tpusok,
vltozk, melyeket a unitban hasznlunk, s amelyeket szeretnnk
hogy ms unitbl, programbl is elrhetk legyenek (miutn ott
megadjuk a uses unit1; sort).
Az implementation rszben egyrszt a feljebb felsorolt
eljrsok, fggvnyek megvalstst rjuk le, teht azt, mit is tegyen az
adott eljrs vagy fggvny. Msrszt ide rhatjuk azokat a tovbbi
vltozkat, eljrsokat, fggvnyeket is, melyeket csak a mi unit-unkon
bell szeretnnk hasznlni.
Nzzk meg rszletesebben, mi van a programunk interface
rszben. A uses parancs utn fel vannak sorolva azok a modulok,
melyek szksgesek a mi modulunk futtatshoz.
A typeparancs utn a TForm1tpus osztly defincijt ltjuk.
Ez valjban a mi fablakunk tpusa. Lthatjuk, hogy TForm tpus
osztlybl lett ltrehozva. (Osztly = olyan adattpus, melyet valamiflesablonnak kpzelhetnk el bizonyos objektumok mi esetnkben
-
7/21/2019 delphi jegyzet
26/277
26
fablak ltrehozshoz. Az osztly tartalmazhat adatokat, eljrsokat
s fggvnyeket. A Delphiben szoks az osztlyok neveit mindig T
betvel kezdeni.) Tovbb szrevehetjk, hogy a TForm1tartalmaz egy
nyomgombot (Button1) s egy cmkt (Label1), majd egyButton1Click nev eljrst (ez a mi eljrsunk, amit az OnClick
esemnyhez hoztunk ltre ez az eljrs kerl futtatsra, ha a
felhasznl rkattint a Kilps nyomgombra). Ezek utn a TForm1
osztly private (magn csak az osztlyon bell hasznlhat) s
public (nyilvnos az osztlyon kvlrl is elrhet) vltozk, eljrsok
defincija kvetkezhet. Neknk itt most nincs egyik sem.
A var kulcssz utn egyetlen vltoznk van deklarlva, ez a
Form1objektum, ami valjban a mi alkalmazsunk fablaka.
Az implementationrszben tallunk egy {$R *.dfm} sort. A $R
egy kls resource fjl beolvasst jelzi. A *.dfm most nem azt jelzi,
hogy az sszes .dfm vgzds llomnyt olvassa be, hanem itt a *
csak a mi unitunk nevt helyettesti, teht csak a unit1.dfm llomny
beolvassra kerl sor. Ez a fjl tartalmazza a fablakunk s a rajta
tallhat komponensek kezdeti belltsait.
Vgl a TForm1.Button1Clickeljrs megvalstst lthatjuk,
melynek begin..endkztti rszt mi rtuk be.
Vgl egy megjegyzs a modulokhoz, teht a .pas vgzdsllomnyokhoz: Egy alkalmazson bell tbb ilyen llomnyunk is lehet.
Alkalmazsunk minden egyes ablakhoz tartoz forrskd egy ilyen
kln modulban tallhat. Ezen kvl az alkalmazsunk tartalmazhat
mg tovbbi ilyen modulokat is, melyekhez ablak (form) nem tartozik.
-
7/21/2019 delphi jegyzet
27/277
27
5.2 Alkalmazs projekt fjlja (.dpr)
Nzzk meg, mit tartalmaz az alkalmazs projekt llomnya.
Valjban ez az llomny nem mst, mint egy hagyomnyos Pascal fjl.dprkiterjesztssel:
programelso;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;Application.CreateForm(TForm1, Form1);Application.Run;
end.
Lthatjuk, hogy ez a program hasznlja ez elbb elemzett
unit1.pas modult teht azt a modult, amely az alkalmazsunk
fablakt tartalmazza. Ha az alkalmazsunk tbb ablakot tartalmazna,
itt lenne felsorolva az sszes tbbi ablakhoz tartoz modul (unit) is.
A {$R *.res}sor most az elso.resllomny csatolst jelzi. Ezaz llomny tartalmazza az alkalmazsunk ikonjt.
A begin..end kztti fprogram inicializlja az alkalmazst,
ltrehozza a ablakot, majd elindtja az alkalmazst.
-
7/21/2019 delphi jegyzet
28/277
28
6 Alap komponensek ttekintse
Komponensek alatt azokat az elemeket rtjk, melyeket
elhelyezhetnk az alkalmazsunk ablakn (formon). Ezekbl a
Delphiben rengeteg van. Amennyiben ez neknk nem elg,
ltrehozhatunk sajt komponenseket is, ill. sok ksz komponenst
tallhatunk az Interneten is.
Standardpaletta komponensei:
MainMenu,
PopupMenu
A fmen s loklis pop-up men ltrehozsra
szolgl komponens. A Delphi rendelkezik egy
gynevezett Menu Designer-rel, amely
segtsgvel rszletesen bellthatjuk a men egyes
menpontjait.
Label Cmke. Ez a komponens csupn szveg
megjelentsre kpes. Ennek ellenre a cmknl
tbb klnbzesemnyre is reaglhatunk.
Edit Beviteli mez. Egysoros szveg bevitelre vagy
megjelentsre szolgl komponens.
Memo Hosszabb, tbbsoros szveg megjelentsre
szolgl komponens. Hasznlhat pldul egy
egyszer szvegszerkeszt alkalmazs
ltrehozsnl, ha nem akarjuk a bonyolultabb
RichEditkomponenst hasznlni.
-
7/21/2019 delphi jegyzet
29/277
29
Button Nyomgomb. Ez az egyike a leggyakrabban
hasznlt komponenseknek.
CheckBox Logikai rtk (igen/nem) informcik bevitelrevagy megjelentsre szolgl komponens.
Egyszerre brmennyi ilyen komponens ki lehet
jellve (piplva), de nem szksgszer kijellni
egyetlen komponenst sem.
RadioButton A CheckBox-hoz hasonl komponens, de itt a
felhasznl csak egyet jellhet ki tbb ilyen
komponens kzl. Egy kijellse mindenkppen
szksges. RadioButton-t lehetne pl. hasznlni a
szveg sznnek kijellsre (mivel egyszerre csak
egy sznt vlaszthatunk), CheckBox-ot pedig a
szveg flkvr, dlt, alhzott tpusnak
kijellsre (mivel ezeket brhogy kombinlhatjuk,egyszerre tbbet is kijellhetnk).
ListBox Lista. Tbb hasonl tpus rtk kirsra szolgl,
melyekbl lehet egyet vagy tbbet kijellni (a
komponens belltstl fggen).
ComboBox Legrdl lista. Hasonl a ListBox-hoz, de ezzelhelyet lehet megtakartani az alkalmazsunkban. A
felhasznl vlaszthat a listbl, de van lehetsge
j rtk bersra is, amely a listban nem szerepel.
ScrollBar Grgetsv. Valamilyen egsz szm rtk
belltsra szolglhat.
-
7/21/2019 delphi jegyzet
30/277
30
GroupBox,
RadioGroup,
Panel
Komponensek, melyek ms komponensek logikai
csoportokba val sorolsra szolglnak. Ezen
komponenseknek nem csak vizulis jelentsge
van, de logikai is.
Nhny az Additional, Win32, System, Dialogs, Samplespalettkrl:
BitBtn Nyomgomb, mely a Button-tl eltren bitkpet ismeg tud jelenteni a felletn, gy segtsgvel
knnyen ltrehozhatunk brmilyen klalak
nyomgombot.
SpeedButton Eszkztron hasznlhat gombok. A gomb lehet
lenyomott llapotban is, tovbb bellthat
klcsns kizrs is lenyomott llapotban
(gondoljunk pldul a Word szveg igaztsi
gombjaira balra, kzpre, jobbra, sorkizrs)
Image Kp. Az alkalmazsban ennek a komponensnek a
segtsgvel tudunk megjelenteni kpet. A
komponens rajz ltrehozsra is szolglhat (pl. egy
rajzprogramban).
RichEdit Az Memo komponens bvtett vltozata, mely jval
tbb tulajdonsggal rendelkezik. Segtsgvel
bonyolultabb szvegszerkesztis ltrehozhat.
-
7/21/2019 delphi jegyzet
31/277
31
StatusBar llapotsv. Az alkalmazsunk ablaka aljn rhatunk
ki segtsgvel a felhasznlnak klnfle
informcikat.
Timer Idzt. Ha az alkalmazsunk periodikus
idkznknt fog valamilyen mveletet vgezni,
szksgnk lesz erre a komponensre.
MediaPlayer A komponens segtsgvel hang- s vide fjlokkal
dolgozhatunk.
OpenDialog,
SaveDialog,
Standard dialgusablakok. Ha szeretnnk
megnyitni vagy menteni egy llomnyt, nem kell
kln dialgusablakokat ksztennk a fjl
megkeressre, hanem helyette hasznlhatjuk
ezeket. Hasonlan lteznek standard
dialgusablakok szn s bettpus kivlasztsra,
nyomtatsra, vagy sz keressre egy szvegben.
SpinEdit Praktikus komponens, amely alkalmas pldul
egsz szmok bevitelre. A klasszikus bers
mellett megengedi, hogy a felhasznl az rtket a
jobb szln tallhat fel s le nyilak segtsgvel
lltsa be.
Nhny komponens az ablakunkra helyezs utn mr a
vgleges llapotban jelenik meg (pl. Label, Button, Edit, ), nmelyik
azonban egy kis ngyzettel van brzolva (pl. Timer, MainMenu,
OpenDialog, ). Az utbbiak olyan komponensek, melyek az
alkalmazs futtatsakor mindig mskpp nzhetnek ki, egyltaln nem
-
7/21/2019 delphi jegyzet
32/277
32
lthatk, vagy egy sajt ablakot hoznak ltre. Ide tartozik pldul a
Timer komponens is, amely az alkalmazs futsakor nem lthat, de a
programban ott van s hasznlhatjuk az sszes funkcijt (metdust).
Nhny komponensnek van sajt tervezje (Designer-je) is,amely segtsgvel knnyebben bellthat a komponensbl ltrehozott
klalakja s tulajdonsgai. Ilyen komponens pldul a MainMenu,
PopupMenu, vagy a StatusBar.
-
7/21/2019 delphi jegyzet
33/277
33
7 Komponensek tulajdonsgai
Minden komponensnek vannak tulajdonsgaik (melyek
valjban az adott komponens osztlynak attribtumai). A
tulajdonsgok nem csak a komponens klalakjt hatrozzk meg, de a
viselkedst is. Sok tulajdonsg kzs tbb komponensnl is, de
vannak olyan egyedi tulajdonsgok is, melyek csak egy-egy
komponensnl tallhatk meg.
Az alkalmazs ltrehozsa alatt a tulajdonsgok rtkeit azobjektum felgyelsegtsgvel tudjuk megvltoztatni, az alkalmazs
futsa alatt pedig a programkd segtsgvel egyszer
hozzrendelssel (rssal ill. olvasssal). Pl.: Label1.Caption :=
Cmke j felirata;
Az objektum felgyelben a komponenseknek csak azokat a
tulajdonsgait talljuk meg, melyek hozzfrhetk a tervezs alatt. Ezenkvl lteznek mg gynevezett run-timetulajdonsgok is, melyek csak
az alkalmazs futsa alatt rhetk el.
Tovbb megklnbztetnk mg read-only (csak olvasni
lehet) s write-only (csak rni lehet) tulajdonsgokat. Ezek a
tulajdonsgok ltalban csak a program futsakor rhetk el.
Ennek a fejezetnek a tovbbi rszben csak azokkal a
tulajdonsgokkal fogunk foglalkozni, melyek a tervezs alatt is
elrhetk, teht, megtallhatk az objektum felgyelben. Most csak a
kzs tulajdonsgokat soroljuk fel, amelyek minden komponensnl
megtallhatk, a tbbi egyedi tulajdonsgot az egyes komponenseknl
fogjuk kln trgyalni.
-
7/21/2019 delphi jegyzet
34/277
34
Ha tbbet szeretnnk tudni valamelyik tulajdonsgrl,
klikkeljnk r az adott tulajdonsgra az objektum felgyelben, majd
nyomjuk meg az F1 funkcibillentyt. Ennek hatsra megjelenik a
kijellt tulajdonsgra vonatkoz sg.
7.1 A komponens neve s felirata
Minden komponensnek a Delphiben van neve (Name
tulajdonsg). Ha a komponens nevt nem lltjuk be, a Delphi
automatikusan bellt neki egy nevet, amely a komponens tpusbl (pl.
Button) s egy sorszmbl ll, pl. Button5. A komponens nevnek
egyedinek kell lennie a tulajdonosn bell. Egyszerbben
megfogalmazva az alkalmazsunkban lehet kt ablak (form), amelyeken
ugyanolyan nev komponens van, de nem lehet ugyanolyan nev
komponens egy ablakon bell. A komponens neve egy azonost,
amellyel az alkalmazsban a komponensre hivatkozni tudunk.
A nvvel ellenttben a komponens felirata (Caption
tulajdonsg) brmilyen lehet, tartalmazhat szkzket, s lehet
ugyanolyan is, mint egy msik komponens. A felirat pldul az ablak
tetejn jelenik meg a cmsorban (Form komponensnl), vagy egyenesen
rajta a komponensen (Button). Felirattal nem lehet elltni olyan
komponenseket, melyeknl ennek nincs rtelme (pl. grgetsvnak
nincs felirata).
A felirat segtsgvel lehet belltani a komponens gyors
elrst is a felhasznl szmra. Ha a komponens feliratban
valamelyik betel &jelet tesznk, akkor ez a beta feliratban al lesz
hzva, s a felhasznl ezt a komponenst kivlaszthatja az Alt +alhzott betbillentykombinci segtsgvel. Ha a feliratban az &
-
7/21/2019 delphi jegyzet
35/277
35
jelet szeretnnk megjelenteni, a megadsnl meg kell azt duplznunk
(&&).
7.2 A komponens mrete s elhelyezkedse
A komponens elhelyezkedst a Left (bal szltl) s Top
(tetejtl) tulajdonsgok adjk meg. A tulajdonsgok a koordintkat
nem az egsz kpernyhz viszonytva tartalmazzk, hanem a
tulajdonoshoz (szlhz) viszonytva. Ha pldul egy nyomgombot
helyeznk el kzvetlenl az ablakunkon (formon), akkor a tulajdonosa
az ablak (form) s ennek bal fels sarkhoz kpest van megadva a
nyomgomb elhelyezkedse (Left s Top tulajdonsga).
A komponens mrett a Width (szlessg) s Height
(magassg) tulajdonsga hatrozza meg. Hasonlan a Left s Top
tulajdonsgokhoz az rtkk kppontokban (pixelekben) van megadva.
Nhny komponensnl bellthatjuk, hogy a komponens mindig
az ablak (form) valamelyik rszhez illeszkedjen (ragadjon). Ezt az
Align tulajdonsg segtsgvel tehetjk meg. Ennek megadsval a
komponenst nem fogjuk tudni onnan levlasztani, az ablak
tmretezsnl is ott marad az ablak teljes szlessgben (ill.
magassgban).De mit tehetnk, ha a komponenst valamilyen kis tvolsgra
szeretnnk elhelyezni a Form szltl gy, hogy mindig ugyanakkora
tvolsgra legyen tle, az ablak tmretezsekor is? Erre szolgl az
Anchorstulajdonsg. Segtsgvel megadhatjuk, hogy a komponens a
Form melyik szlhez (vagy szleihez) illeszkedjen.
-
7/21/2019 delphi jegyzet
36/277
36
Az utols mrettel s elhelyezkedssel kapcsolatos rdekes
tulajdonsg a Constrains. Ennek a tulajdonsgnak ngy altulajdonsga
van, melyek segtsgvel megadhatjuk a komponens lehetsges
minimlis s maximlis mrett. Ha pldul belltjuk ezt atulajdonsgot egy alkalmazs ablaknl, akkor az ablakot az
alkalmazs futtatsakor nem lehet majd a megadott mretnl kisebbre,
illetve nagyobbra mretezni.
7.3 A komponens engedlyezse s lthatsgaA komponens engedlyezst az Enabled tulajdonsg
segtsgvel tudjuk belltani. Alaprtelmezsben ez mindig igaz (true).
Ha tlltjuk hamisra (false), tervezsi mdban nem trtnik ltszlag
semmi, de az alkalmazs futsakor a komponens szrke lesz s nem
reagl majd a rkattintsra.
A msik hasonl tulajdonsg a Visible. Segtsgvel
bellthatjuk, hogy a komponens lthat legyen-e az alkalmazs
futsakor. Az alaprtelmezett rtke ennek a tulajdonsgnak is igaz
(true). Tervezsi idben itt sem fogunk ltni klnbsget ha tlltjuk
hamisra (false), csak az alkalmazs futtatsakor vehetjk majd szre
hogy a komponens nem lthat.
Programunkban ahol lehet, hasznljuk a Visible tulajdonsg
helyett csupn az Enabled tulajdonsgot, mivel a felhasznlknak
zavar lehet ha nyomgombok tnnek el s jelennek meg. Sokkal
ttekinthetbb a felhasznl szmra, ha az alkalmazsunk ppen nem
llthat (a felhasznl szmra nem elrhet) komponensei szrkk,
teht nem hasznlhatk, de a helykn vannak s lthatk.
-
7/21/2019 delphi jegyzet
37/277
37
Megjegyzs: Ha a Visible tulajdonsg rtke igaz egy
komponensnl, az mg nem jelenti felttlenl azt, hogy a
komponensnk lthat a kpernyn. Ha ugyanis a komponens
tulajdonosnak (teht amin a komponens van, pl. TPanel, TForm, stb.)a Visibletulajdonsga hamis, akkor sem a tulajdonos, sem a rajta lev
komponensek nem lthatk. Ezrt ltezik a komponenseknek egy
Showing tulajdonsga, amely egy run-time (csak futsi idben elrhet)
s read-only (csak olvashat) tpus tulajdonsg. Ennek a
tulajdonsgnak az rtke megadja, hogy a komponensnk valban
lthat-e a kpernyn.
7.4 A komponens Tag tulajdonsga
A Tag tulajdonsg (lefordtva: hozzfztt cdula, jel) a
komponensek egy klns tulajdonsga. Ennek a tulajdonsgnak a
belltsa semmilyen hatssal nem hat ki a komponens mkdsrevagy klalakjra. Ez csupn egy kiegszt memriaterlet, ahol
klnfle felhasznli adatok trolhatk. Alapllapotban ebben a
tulajdonsgban egy LongInt tpus rtket trolhatunk. Szksg esetn
ttipizlssal brmilyen ms 4 bjt hosszsg rtket rhatunk bele (pl.
mutatt, karaktereket, stb.).
7.5 A komponens szne s bettpusa
A komponensek Color(szn) s Font(bettpus) tulajdonsgaik
segtsgvel bellthatjuk a komponensek httrsznt, ill. a
komponenseken megjelen feliratok bettpust (ha a komponensen
megjelenthetfelirat).
-
7/21/2019 delphi jegyzet
38/277
38
A Color tulajdonsg rtkt megadhatjuk elre definilt
konstansok segtsgvel: clXXXformban. Az XXX helyre vagy a szn
nevt rhatjuk angolul (pl. clRed, clGreen, clBlue, stb.), vagy a
Windowsltal definilt, a rendszerelemekre hasznlt sznek neveit (pl.clBtnFace, clWindow, stb.).
A sznt ezeken a konstansokon kvl megadhatjuk az
sszetevik (piros, zld, kk) segtsgvel is. Ebben az esetben a szn
megadsra egy 4 bjtos hexadecimlis szmot hasznlunk, melynek
formja: $AABBCCDD, ahol:
AA a sznpalettt hatrozza meg, ez ltalban 00,
BB a kk sszetevmennyisgt hatrozza meg,
CC a zld sszetevmennyisgt hatrozza meg,
DD a piros sszetevmennyisgt hatrozza meg.
Pldul:
$00FF0000 teltett kk szn (clBlue),$0000FF00 teltett zld szn (clGreen),
$000000FF teltett piros szn (clRed),
$00000000 fekete szn (clBlack),
$00FFFFFF fehr szn (clWhite),
$00609025 sttzld szn,
$003050A0 barna szn, stb.A Font tulajdonsg rtke egy TFont tpus lehet. A TFont
osztly egyes elemeit bellthatjuk az objektum felgyelben, ha a Font
mellett rkattintunk a + jelre.
Ha a program futsa alatt szeretnnk belltani a Font
tulajdonsg valamelyik elemt (altulajdonsgt), pldul egy
nyomgombon a bet mrett, azt a kvetkez paranccsal tehetjk
-
7/21/2019 delphi jegyzet
39/277
39
meg: Button1.Font.Size := 18; A betstlust hasonlan llthatjuk be,
csak ezt halmazknt kell megadnunk, teht ilyen formban:
Button1.Font.Style := [ fsBold, fsItalic ];
A legtbb komponens tartalmaz egy ParentColor(szlszne)s egy ParentFont (szl bettpusa) tulajdonsgot is. Ezekkel
bellthatjuk, hogy a komponens a tulajdonosnak (ami leggyakrabban
az alkalmazs ablaka - Form) a sznt s bettpust hasznlja. gy be
tudjuk egyszerre lltani az ablakunkon levsszes komponens sznt
s bettpust a Form-unk Font s Color tulajdonsgainak
belltsval.
7.6 A komponens lebegsgja
A komponens Hint (javaslat, bubork sg) tulajdonsgnak
ksznheten az objektum felett egrrel elhaladva egy srga
tglalapban informcit kzlhetnk a felhasznlval (ha pl. megnyomja
a gombot, akkor mi fog trtnni). A kirand segtsget a komponens
Hinttulajdonsghoz kell hozzrendelnnk.
A komponens ShowHint(javaslatot megjelent) tulajdonsgval
megadhat, hogy ez a segtsg megjelenjen-e a felhasznlnak.
A ParentShowHint tulajdonsggal meghatrozhatjuk, hogy akomponenshez a javaslat akkor jelenjen meg, ha a komponens
tulajdonosnak (ami ltalban a Form) a ShowHint tulajdonsga igaz.
gy egyetlen tulajdonsg tlltsval (a Form ShowHint
tulajdonsgval) bellthatjuk, hogy az ablak sszes komponensre
megjelenjen-e a bubork sg vagy nem.
-
7/21/2019 delphi jegyzet
40/277
40
7.7 Az egrmutat belltsa
Sok komponens rendelkezik Cursor (egrmutat)
tulajdonsggal. Ennek segtsgvel bellthatjuk, hogy azegrmutatnak milyen alakja legyen, ha az adott komponens felett ll.
Lehetsges rtkek: crHourGlass (homokra), crCross (kereszt),
crHelp(nyl krdjellel), crUpArrow(felfel mutat nyl), stb.
7.8 Tabultor
Ha az alkalmazsunknak tbb komponense van, j ha
intelligensen mkdik a komponensek kivlasztsa a TAB billenty
lenyomsakor. Azt, hogy a TAB billenty megnyomsakor milyen
sorrendben legyenek aktvak a komponensek a TabOrder (TAB
sorrend) tulajdonsg segtsgvel llthatjuk be. Ide egy szmot kell
bernunk, amely azt jelenti, hnyadik lesz a komponens a sorrendben. A
szmozs 0-tl kezddik.
A TabStop (TAB lljon meg) tulajdonsg segtsgvel
bellthatjuk, hogy az adott komponensre el lehet-e jutni a tabultor
segtsgvel (ha a TabStop rtke igaz, akkor lehet, ha hamis, akkor
nem lehet a tabultor nem ll meg a komponensen, hanem a sorban
kvetkezre ugrik t).
-
7/21/2019 delphi jegyzet
41/277
41
8 Esemnyek
A legtbb komponensnl nem elg, ha csak a tulajdonsgait
lltjuk be. Sokszor szksgnk van r, hogy az adott komponens
valamilyen tevkenysget vgezzen ha pl. rkattintunk egrrel,
megnyomunk egy billentyt, mozgatjuk felette az egeret, stb. Erre
szolglnak az esemnyek. Ahhoz, hogy egy esemnyre a komponens
gy reagljon, ahogy azt mi szeretnnk, meg kell rnunk az esemnyhez
tartoz eljrs programkdjt.
Hasonlan, ahogy a komponenseknek vannak olyan
tulajdonsgaik, amelyek szinte minden komponensnl megtallhatk,
vannak olyan esemnyek is, melyek majdnem minden komponensnl
elfordulnak. Ezek kzl a legfontosabbak a kvetkezk:
Komponensek esemnyeik:
Esemny Mikor kvetkezik be Megjegyzs
OnChange Ha a komponensvagy annak tartalmamegvltozik (pl. aszveg az Edit
komponensben).
Gyakran hasznlatos az Edits Memokomponenseknl.sszefgg a Modifiedtulajdonsggal (run-time,
read-only), amely megadja,hogy a komponens tartalmamegvltozott-e.
-
7/21/2019 delphi jegyzet
42/277
42
OnClick A komponensrekattintskor az egrbal gombjval.
Ez az egyik leggyakrabbanhasznlt esemny. Ez azesemny nem csakegrkattintskor, hanem
Enter, ill. Space billentykmegnyomsakor isbekvetkezik, ha akomponens aktv (pl. egyaktv nyomgomb esetben).
OnDblClick A komponensreduplakattintskor azegr bal gombjval.
Duplakattintskor az elsklikkelsnl OnClickesemny kvetkezik be, majd
ha rvid idn bell (ahogy aWindowsban be van lltva)rkezik msodik klikkels is,akkor bekvetkezik azOnDblClickesemny.
OnEnter Amikor akomponensaktivlva lett.
Itt nem az ablak (form)aktivlsrl van sz, amikoraz egyik ablakbl tmegynk
a msikba, hanem akomponens aktivlsrl,pldul ha Edit komponensbekattintunk.
OnExit Amikor akomponensdeaktivlva lett.
Az elzesemny ellentettje.Pldul akkor kvetkezik be,ha befejeztk a bevitelt azEdit komponensbe s
mshova kattintunk.
-
7/21/2019 delphi jegyzet
43/277
43
OnKeyDown Amikor akomponens aktv sa felhasznllenyom egy
billentyt.
Felhasznlhatjuk az eljrsKeyparamtert, amelymegadja a lenyomott billentyvirtulis kdjt (virtual key
codes). Tovbb a Shiftparamter (amely egy halmaztpus) segtsgvelmeghatrozhatjuk, hogy levolt-e nyomva az Alt, Shift,vagy Ctrl billenty(ssAlt,ssShift, ssCtrl).
Megjegyzs: Ha aztszeretnnk, hogy a lenyomott
billentyt a Form kapja meg(mghozz a komponenseltt), s ne az ppen aktvkomponens, akkor a FormKeyPreviewtulajdonsgt tkell lltanunk igazra (true).
OnKeyPress Amikor akomponens aktv s
a felhasznllenyom egybillentyt.
A klnbsg ez elzeljrstl, hogy itt a Key
paramter char tpus, amelya lenyomott billentyt ASCII
jelt (bett, szmot, rsjelet)tartalmazza. Ez az esemnycsak olyan billentylenyomsakor kvetkezik be,amelynek van ASCII kdja(teht nem Shift, F1 shasonlk).
OnKeyUp Amikor akomponens aktv sa felhasznlfelenged egybillentyt.
A gomb felengedsnl jnltre, Keys Shiftparamtere hasonl, mint azOnKeyDownesemnynl.
OnMouseDown Amikor afelhasznl
lenyomja valamelyikegrgombot.
ltalban ez annak akomponensnek az esemnye,
amely ppen az egrmutatalatt van.
-
7/21/2019 delphi jegyzet
44/277
44
OnMouseMove Amikor afelhasznlmegmozdtja azegeret a
komponensen.
Hasonlan az elzhz,annak a komponensnek azesemnye, amely ppen azegrmutat alatt van.
OnMouseUp Amikor afelhasznlfelengedi valamelyikegrgombot.
Ha tbb egrgomb vanlenyomva, akkor mindegyikfelengedsnl ltrejn ez azeljrs.
Ablak (form) esemnyei:
Esemny Mikor kvetkezik be Megjegyzs
OnActivate Amikor az ablakaktvv vlik.
Akkor van generlva ez azeljrs, ha a felhasznl egymsik ablakbl (vagyalkalmazsbl) erre azablakra klikkel.
OnDeactivate Amikor az ablakinaktvv vlik.
Ha a felhasznl egy msikablakra (vagy alkalmazsra)klikkel, teht elhagyja a miablakunkat.
-
7/21/2019 delphi jegyzet
45/277
45
OnCloseQuery,OnClose
Ha az ablakotbezrjuk (Alt-F4, X a
jobb felssarokban,rendszermen
segtsgvel,programbl a Closeeljrssal, stb.).
Az ablak bezrsakor elszraz OnCloseQueryesemnykvetkezik be, utna azOnClose.
Az elsesemny szolglhatmegerstsre (pl. Biztoshogy kilpsz?) vagy azadatok elmentsnekfigyelmeztetsre.
Az alkalmazs bezrsnakelkerlsre mg azOnCloseesemnynl is van
lehet
sgnk. Itt aparamterben megadhatjukazt is, hogy az ablakunkbezrs helyett csak elrejtvevagy minimalizlva legyen.
OnCreate,OnDestroy
Az ablakltrehozsakor ill.megszntetsekor.
Az OnCreateesemnykezelsben lehetsgnkvan dinamikusan ltrehozni
objektumok, melyeket nefelejtsnk el megszntetni azOnDestroyeljrskezelsben.
OnShow,OnHide
Az ablakmegmutatsakor, ill.elrejtsekor.
Ezek az eljrsok szorosansszefggenek az ablakVisibletulajdonsgval.
Lthat ablakok (melynek a visible tulajdonsguk igaz) ltrehozsakor
az esemnyek bekvetkezseinek a sorrendje a kvetkez: OnCreate,
OnShow, OnActivate, OnPaint.
-
7/21/2019 delphi jegyzet
46/277
46
9 Hibakeress
Mindenekeltt ksztsnk egy egyszer programot, amelyen
bemutatjuk a hibakeresst.
Pelda02
A programon kt nyomgomb (Szmtsoks Kilpsfelirattal)
s egy cmke legyen. A Kilps megnyomsakor fejezdjn be az
alkalmazs (Form1.Close;) a Szmtsokgomb megnyomsakor pedig
a kvetkezszmts menjen vgbe, melynek vgeredmnyt kiratjuk
a cmkbe:
procedureTForm1.Button1Click(Sender: TObject);
var
i,j: integer;
begin
j:=0;
fori:=1 to10 do
j:=j+i;
-
7/21/2019 delphi jegyzet
47/277
47
Label1.Caption:=IntToStr(j);
end;
Ha ezt az alkalmazst elmentjk, majd lefordtjuk s futtatjuk,
helyesen fog mkdni. Ilyen idelis eset azonban ritkn fordul el. Ezrt
a Delphi tartalmaz rengetek eszkzzel elltott integrlt debugger-t a
hibk megkeressre. Mi ezen eszkzk kzl fogjuk bemutatni a
leggyakrabban hasznltakat.
A programunkban el
fordul hibkat durvn kt csoportraoszthatjuk:
olyan hibkra, melyeket a fordt kijelez (ide tartoznak a
szintaktikai hibk elrt parancsok, s a szemantikai hibk
parancsok logikailag rossz sorrendben hasznlata),
s olyan hibkra melyeket a fordt nem jelzi (logikai hibk).
Azokkal a hibkkal, melyeket a fordt kijelez, most nem
fogunk foglalkozni. Az ilyen hiba esetben a program nem fut le, a
kurzor pedig mindig a hibs sorban ll s megjelenik egy hibazenet.
Ha rkattintunk a hibazenetre s megnyomjuk az F1 funkcibillentyt,
elolvashatjuk a hiba rszletes lerst.
Nehezebb azonban megtallni az olyan hibkat, melyeket afordt nem jelez. Az ilyen hibknl a program elindul s mi abban a
meggyzdsben lnk, hogy a programunk hiba nlkl fut. Nmely
esetben azonban elfordulhat, hogy pldul a szmtsok
eredmnyeknt, nem a helyes eredmnyt kapjuk. Ilyenkor hasznlhatjuk
a hibakeressre szolgl eszkzket, melyeket a menben a Runalatt
tallunk. Ezek kzl a leggyakrabban hasznltak:
-
7/21/2019 delphi jegyzet
48/277
48
Trace Into lpegets
Ezzel az eszkzzel lpegetni tudunk soronknt az
alkalmazsunkban. Egyszerbben az F7 funkcibillentyvel indthatjuk
el, illetve lphetnk tovbb a kvetkezsorra. Ha alprogram hvshoz
rnk, beleugrunk az alprogramba s ott is soronknt lpegethetnk
tovbb.
Step Overlpegets
Hasonl az elz eszkzhz annyi klnbsggel, hogy ha
alprogram hvshoz rnk, nem ugrunk bele az alprogramba, hanem
azt egy blokknt (egy lpsben) vgzi el a program. Egyszerbben az
F8funkcibillentyvel rhetjk el.
Run to Cursor
Ha rllunk a kurzorral valamelyik sorra a forrskdban s ezzel
(vagy egyszerbben az F4 funkcibillentyvel) indtjuk el, a program
hagyomnyos mdon elindul s fut mindaddig, amg ahhoz a sorhoz
nem r, ahol a kurzorunk ll. Itt lell a program, s innen lpegethetnktovbb a fent emltett eszkzkkel.
Breakpoints (Add Breakpoint Source Breakpoint)
A breakpoint (megszakts pontja) segtsgvel a Delphinek
megadhatjuk, hogy a programunk melyik sorn lljon meg.
-
7/21/2019 delphi jegyzet
49/277
49
Gyakorlatban: rllunk valamelyik sorra a forrskdban,
kivlasztjuk a menbl a Run Add Breakpoint Source
Breakpointmenpontot, majd Ok (vagy rkattintunk a sor elejn a
kk krre ). Ekkor a kijellt sor httere tsznez
dik, s a sor el
ttegy piros kr jelenik meg ( ). Ez jelenti azt, hogy a program ebben a
sorban le fog llni. A programot utna elindtjuk a Run Run (vagy F9)
segtsgvel. Ha a program a futsa sorn breakpointhoz r, lell. Innen
lpegethetnk tovbb egyesvel az els kt eszkz segtsgvel (F7,
F8), vagy futtathatjuk tovbb a programot a Run Run (vagy F9)
segtsgvel. Egy programban tbb breakpointot is elhelyezhetnk.
A breakpointot a forrskdban a sor elejn tallhat piros krre
( ) kattintva szntethetjk meg.
Watch (Add Watch)
A program lpegetse kzben ennek az eszkznek asegtsgvel megfigyelhetjk az egyes vltozk rtkt.
A vltozk rtkeit a Watch Listablakban kvethetjk nyomon
(ez az ablak automatikusan megjelenik a program indtsakor, de ha
mgsem jelenne meg a View Debug Windows Watches menvel
hvhatjuk el).
j vltozt vagy kifejezst a Run Add Watch (CTRL+F5)
menpont segtsgvel adhatunk a megfigyelt vltozk kz (a Watch
List-be).
Gyakorlatban ezt gy hasznlhatjuk, hogy kijellnk a
programban Breakpointot, ahonnan a vltozkat figyelni szeretnnk,
vagy odallunk a kurzorral s elindtjuk a programot a Run to Cursorsegtsgvel. Majd az Add Watch (vagy CTRL+F5) segtsgvel
-
7/21/2019 delphi jegyzet
50/277
50
belltjuk a figyelni kvnt vltozkat s elkezdnk lpegetni a Trace
Into ill. a Step Over segtsgvel. Kzben figyelhetjk a kivlasztott
vltozk rtkeit.
Evalute / Modify
Ennek az eszkznek a segtsgvel nem csak megfigyelhetjk,
de meg is vltoztathatjuk a kifejezsek, vltozk vagy tulajdonsgok
rtkeit. Ez egy nagyon hasznos eszkz, ha arra vagyunk kvncsiak,
hogyan viselkedne a program, ha pldul az i vltozban nem 7,hanem 1500 lenne. Ezt az eszkzt egyszerbben a CTRL+F7
funkcibillentyvel hvhatjuk el.
Program Reset
Elfordulhat, hogy a programunk lefagy, vagy csak egyszerenolyan helyzetbe kerlnk, hogy a programunk futst le szeretnnk
lltani, majd ellrl futatni. Ebben az esetben lehet segtsgnkre a
Run Program Resetmenpont (vagy CTRL+F2).
-
7/21/2019 delphi jegyzet
51/277
51
10 Nagyobb projektek ksztse
Ebben a fejezetben nagyobb projektek ksztsnek
alapelveirl lesz nhny sz. Az itt felsorolt mdszerek csak javaslatok,
nem szksges ezek szerint rni az alkalmazsunkat, de ezek
betartsval sokkal ttekinthetbb, olvashatbb s rthetbb lesz a
projektnk.
Komponensek megnevezse
Ha komolyabb alkalmazst ksztnk, nem a legjobb tlet
meghagyni a komponensekhez automatikusan hozzrendel neveket (pl.
Button1, Button2, Button3, stb.). Kisebb alkalmazs ksztsnl ez
lnyegtelen, viszont ilyent csak ritkn ksztnk. A legjobb a
komponenseket megnevezni valamilyen ttekinthet sablon alapjn.
Nyomgombot pldul btnXXX-nek nevezhetnk el, ahol XXX a
nyomgomb funkcijt rhatja le, pldul: btnKilepes, btnSzamitasok,
stb. Az ablakunkat (formot) legjobb frmXXX-nek elnevezni (vagy taln
mg jobb, ha wndXXX-nek nevezzk el), a beviteli mezt
megnevezhetjk edtXXX-nek, a kpet imgXXX-nek. A lnyeg, hogy a
program knnyen ttekinthet, knnyen olvashat legyen msok
szmra is s fleg sajt magunknak, ha majd bizonyos (hosszabb) idelteltvel jra t szeretnnk nzni.
Forrskd klalakja
Az albbi javaslatok betartsval olvashat s ttekinthet
forrskdot tudunk majd rni:
-
7/21/2019 delphi jegyzet
52/277
52
Nagy s kisbetk a Delphi (Pascal) nem case-sensitive
programozsi nyelv. Ennek ellenre j, ha a nagy s
kisbetk hasznlatban rendet tartunk s kvetnk
valamilyen logikt. Pldul a btnKilepesClick sokkalttekinthetbb, mint a btnkilepesclick vagy a
BTNKILEPESCLICK).
Megjegyzsek hasznos megjegyzsek gyakori
hasznlatval az alkalmazsunkban sok idt s problmt
sprolhatunk meg magunknak a jvben. Megjegyzst a
forrskdba tehetnk {kapcsos zrjelek} kztt vagy kttrtvonal // segtsgvel az egysoros megjegyzs elejn.
Bekezdsek, res sorok, szkzk ne sproljunk az
res sorokkal s a bekezdsekkel (beljebb rsokkal),
szkzkkel a programunkban. Ezek megfelel
hasznlatval programunk sokkal ttekinthetbb lesz.
-
7/21/2019 delphi jegyzet
53/277
53
11 Standard zenetablakok
Az alkalmazsunkban nagyon sokszor elfordulhat, hogy a
felhasznlt rtesteni szeretnnk pldul a szmtsok llapotrl,
figyelmeztetni a hibkra vagy a rosszul megadott bemeneti rtkekre,
megkrdezni tle, hogy biztos ki akar-e lpni, akarja-e menteni a
dokumentumot, stb. Az ilyen esetekre a Delphi egy elegns
megoldssal rendelkezik: a standard zenetablakokkal. Ezek
hasznlata nagyon egyszer, mgis a belltsok s megjelentsek
szles vlasztkval rendelkezik.
11.1 ShowMessage
Ha csak egy egyszer szveget szeretnnk kiratni
zenetablakban a felhasznlnak, akkor hasznlhatjuk aShowMessage eljrst. Ez a legegyszerbb standard zenetablak.
Szintaxisa:
procedure ShowMessage(const Msg:string);
Pldul:
ShowMessage(Ez egy rvid kis informci.);
-
7/21/2019 delphi jegyzet
54/277
54
Az zenetablak felirata (nlunk Project1) ugyanaz, mint az
alkalmazs futtathat (exe) llomnynak a neve.
11.2 MessageDlg
Az elzeljrsnl tbbet tud a MessageDlgfggvny. Ezzel a
fggvnnyel az zenetablakunk klalakjt jelents mrtkben
formlhatjuk. Szintaxisa:
function MessageDlg(const Msg:string;DlgType: TMsgDlgType;Buttons: TMsgDlgButtons;HelpCtx: Longint): Word;
A paramterek lersa:
Msg: a szveg, amit meg szeretnnk jelenteni
DlgType: az zenetablak cljt jelzi. Lehetsges rtkek:
o mtWarning figyelmeztetst jelzsrga-fekete ikon
o mtError hibt jelzpiros stoptbla
o mtInformation informcit jelzkk i bet
o mtConfirmation krdst jelzkk krdjel
o mtCustom az zenetablakon nem lesz kp
Buttons: indiklja, hogy melyik gombok jelenjenek meg az
zenetablakon. Lehetsges rtkek:
o mbYes, mbNo, mbOK, mbCancel, mbAbort,
mbRetry, mbIgnore, mbAll, mbNoToAll,
mbYesToAll, mbHelp
-
7/21/2019 delphi jegyzet
55/277
55
Figyelem: Itt egy halmazt kell megadnunk, ezrt a kivlasztott
nyomgombokat szgletes zrjelek kztt kell felsorolnunk,
pldul: [mbAbort, mbRetry, mbIgnore]. Ez all egyedli kivtel,
ha valamelyik el
re definilt konstans halmazt hasznljuk(pldul az mbOKCancel ugyanazt jelenti, mint az [mbOk,
mbCancel]).
HelpCtx: a sg azon tmjnak Context ID-je, amely
megjelenjen, ha megnyomjuk az F1 billentyt. Ha ezt nem
akarjuk hasznlni (nincs sajt sg fjlunk), adjunk meg 0-t.
A MessageDlgvisszaadja annak a nyomgombnak az rtkt, amellyel
a felhasznl bezrta az zenetablakot. Lehetsges rtkek: mrNone,
mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel, mrIgnore, mrAll.
Pldul:
ifMessageDlg(Elmenteni a fjlt?,mtConfirmation, [mbYes, mbNo, mbCancel],0) = mrYes thenmentsd_el(fajlnev);
11.3 MessageDlgPos
Az elzfggvny egyik htrnya, hogy az zenetablak mindiga kpernykzepn jelenik meg. Ez nha nem megfelel. Szerencsre
-
7/21/2019 delphi jegyzet
56/277
56
a Delhiben ltezik az elz fggvnynek egy kibvtett vltozata, a
MessageDlgPos, melynek ugyanolyan paramterei vannak, mint a
MessageDlg fggvnynek, plusz mg tovbbi kt paramtere mellyel
megadhatjuk az zenetablak helyt a kperny
n. Szintaxisa:function MessageDlg(const Msg:string;
DlgType: TMsgDlgType;Buttons: TMsgDlgButtons;HelpCtx: Longint;X, Y: Integer): Word;
-
7/21/2019 delphi jegyzet
57/277
57
12 Informcik bevitele
Az informcikat a programunkba komponensek segtsgvel
vihetjk be. Ebben a fejezetben vesznk nhny pldt ezek
hasznlatra s megismerkednk az egyes komponensek tovbbi
(egyni) tulajdonsgaival, esemnyeivel s metdusaival (metdus =
olyan fggvnyek s eljrsok, melyek csak valamely komponensekre,
pontosabban valamely osztly objektumaira vonatkoznak).
Igaz, hogy ennek a fejezetnek a cme informcik bevitele, de
sok komponens ugyangy hasznlhat bevitelre, mint adatok
megjelentsre (kimenetre). Ezrt ne olvassuk ezt a fejezetet gy, hogy
itt csak azok a komponensek szerepelnek, mellyel adatokat vihetnk be
a programunkba. Az itt trgyalt komponensek szinte mindegyike
ugyangy kimenetre is szolglhat, mint bemenetre.
Kezdjk a legegyszerbb beviteli komponensektl, melyekkellogikai rtket (igen-nem, igaz-hamis, 0-1) vihetnk be az
alkalmazsunkba. Logikai rtkek bevitelre hasznlhatjuk a mr
emltett zenetablakokat is, azonban ez nagyon sokszor nem megfelel.
Ennl sokkal megfelelbb a CheckBox (jellngyzet)hasznlata.
12.1 Jellngyzet hasznlata CheckBox
Elnye, hogy llandan lthat ki van-e jellve, egyetlen
kattintssal kijellhet, ttekinthet s a felhasznlnak nem ugrlnak
el llandan ablakok (mint ahogy az trtnne zenetablakok
hasznlatnl).
A CheckBoxfontosabb tulajdonsgai:
-
7/21/2019 delphi jegyzet
58/277
58
o AllowGrayed ha ennek a tulajdonsgnak az rtke igaz
(true), akkor a jellngyzetnek hrom lehetsges rtke
lehet: Checked (kipiplva), Unchecked (nincs kipiplva),
Grayed (szrke). Egybknt csak kt rtke lehet.o Caption felirat, amely a jellngyzet mellett szerepeljen.
o Checked megadja hogy ki van-e piplva a jellngyzet
(true) vagy nincs kipiplva (false).
o State hasonl az elzhz, de ennek rtke hromfle
lehet: cbChecked, cbUnchecked, cbGrayed.
Nagyon egyszeren olvashatjuk ki a jellngyzetek rtkeit.
Pldul meg szeretnnk tudni, hogy a felhasznl kijellte-e az els
jellngyzetet (s ha igen, akkor el szeretnnk vgezni valamilyenmveletet). Ezt a kvetkezkppen tehetjk meg:
if CheckBox1.Checked = true then
Vagy hasznlhatjuk ugyanezt rvidtett vltozatban:
if CheckBox1.Checked then
Az adatok felhasznltl val beolvassn kvl termszetesen nagyonjl hasznlhat a CheckBox logikai rtkek megjelentsre is.
-
7/21/2019 delphi jegyzet
59/277
59
12.2 Vlasztgomb RdioButton
Ez a komponens ltalban csoportokban fordul el, mivel itt a
csoporton bell mindig csak egyet lehet kivlasztani. Az alkalmazs
indtsakor megoldhat, hogy a csoporton bell egy gomb se legyen
kivlasztva, de ez csak ritkn szokott elfordulni. Ha mr ki van
vlasztva egy, kivlaszthatunk egy msikat, de nem szntethetjk meg
a kivlasztst, teht egyet mindenkppen ki kell vlasztanunk. Az egyik
legfontosabb tulajdonsga:
o Checked rtke (true/false) megadja, hogy a gomb ki
van-e vlasztva.
A RadioButton komponensek szinte mindig valamilyen logikai
csoportot sszekapcsol komponensen vannak rajta (GroupBox, Panel
komponenseken), de lehet kzvetlenl a Form-on (ablakunkon) is. Tbb
RadioButton komponens hasznlata helyett azonban jobb hasznlni
inkbb egy RadioGroup komponens.
12.3 Vlasztgomb csoport RadioGroup
A RadioGroup komponens legfontosabb tulajdonsgai:
o Items rtke TStrings tpus lehet. Ennek segtsgvel
adhatjuk meg, milyen vlasztgombok szerepeljenek a
komponensnkn (teht mibl lehessen vlasztani). Az
egyes lehetsgek neveit kln-kln sorban adjuk meg. A
karikkat a RadioGroup komponens kirakja automatikusan
mindegyik sor el.
-
7/21/2019 delphi jegyzet
60/277
60
o Columns segtsgvel megadhatjuk, hogy a vlasztsi
lehetsgek (vlasztgombok) mennyi oszlopban legyenek
megjelentve.
o ItemIndex ennek a tulajdonsgnak az rtke tartalmazza,hogy melyik vlasztgomb (lehetsg) van kivlasztva. Ha
rtke -1 akkor egyik sincs kivlasztva, ha 0 akkor az els,
ha 1 akkor a msodik, stb. vlasztgomb van kijellve
(teht a szmozs 0-tl kezddik).
Azt, hogy melyik nyomgomb van kivlasztva, az ItemIndex
tulajdonsg tesztelsvel vizsglhatjuk:
if RadioGroup1.ItemIndex = 0 then
Ez a tesztels azonban nagyon sok programoznak nem a
legmegfelelbb, mivel meg kell jegyezni, melyik lehetsghez melyik
szm tartozik. Ezen knnythetnk, ha pldul a szmok helyett
konstansokat definilunk (const SZIA = 0; HELLO = 1; ) s ezeksegtsgvel teszteljk a felttelt:
if RadioGroup1.ItemIndex = SZIA then
-
7/21/2019 delphi jegyzet
61/277
61
12.4 Beolvass zenetablak segtsgvel
Egysoros szveg beolvasshoz hasznlhatunk egy jabb
zenetablakot, az InputBox-ot:
function InputBox(const ACaption, APrompt,ADefault: string): string;
Az egyes paramterek lersa:
ACaption: a dialgusablak felirata,
APrompt: a dialgusablakban megjelenszveg,
ADefault: a beviteli mezben megjelenkezdeti szveg.
Pldul:
nev := InputBox('Nv megadsa','Krlek add meg a neved:', '');
Termszetesen ennl az eszkznl sokkal jobban felhasznlhat
egysoros szveg bevitelre az Edit komponens.
-
7/21/2019 delphi jegyzet
62/277
62
12.5 Egysoros szveg beviteli doboz Edit
Az Edit komponensnek sok specifikus tulajdonsga van, melyek
segtsgvel az egysoros bevitelt korltozhatjuk, vagy formtozhatjuk(pldul megadhatjuk egyetlen tulajdonsg belltsval, hogy a bevitt
szveg helyett csillagok vagy ms jelek jelenjenek meg gy
hasznlhatjuk jelsz bevitelre is).
Az Edit komponens legfontosabb tulajdonsgai:
o Text ez a tulajdonsg tartalmazza a beviteli mezben
megjelen szveget. Segtsgvel kiolvashatjuk vagy
bellthatjuk az Edit komponensben levszveget.
o MaxLength az Edit-be megadhat szveg maximlis
hossza. Segtsgvel bellthatjuk milyen hossz szveget
adhat meg a felhasznl.
o Modified annak megllaptsra szolgl tulajdonsg,
hogy a beviteli mezben trtnt-e vltozs.
o AutoSelect segtsgvel bellthatjuk, hogy a beviteli
mezbe lpskor (kattintskor) ki legyen-e jellve az egsz
szveg. Ezt az szerint adjuk meg, hogy a felhasznl a
mezrtkt elrelthatan j rtkkel fogja helyettesteni
vagy csak az ott levrtket fogja mdostani.
o ReadOnly meghatrozza, hogy a felhasznl
megvltoztathatja-e a beviteli mezben levrtket.
o PasswordChar ennek a tulajdonsgnak az rtke egy
karakter lehet, amely meg fog jelenni a bevitelnl a bevitt
karakterek helyett. Jelsz bevitelnl hasznlhatjuk.
-
7/21/2019 delphi jegyzet
63/277
63
Az Edit komponens tbb metdussal is rendelkezik, melyek
kzl az egyik:
o CopyToClipboard vglapra msolja a beviteli mezben
levszveget.
Az Edit komponens hasznlata nagyon egyszer elg
elhelyezni a komponenst valahova a Form-on. Ajnlott a komponens
fl elhelyezni mindjrt egy Label-t is, amely segtsgvel megadjuk, mit
krnk a felhasznltl. Utna mr csak pl. egy nyomgomb OnClick
esemnyben az Edit1.Text tulajdonsg rtkt ellenrizzk (ha
szksges) s felhasznljuk (pl. valahova mshova berakjuk, stb.).
Sokkal rdekesebb a helyzet, ha a felhasznltl csak
valamilyen szmot szeretnnk beolvasni. Erre tbb megoldsunk is
lehet:
Megengedjk, hogy a felhasznl beadhasson szveget is,
majd azt szmm alaktjuk. Ennek a htrnya, hogy a felhasznlbeadhat betket is, nem csak szmokat. Ezek talaktsnl szmm
termszetesen a programban hiba kvetkezik be, melyet kezelnnk kell
(pl. az talaktshoz a Val fggvnyt hasznljuk, mely harmadik
paramterben visszaadja, trtnt-e hiba az talaktsnl). Pldul:
val(Edit1.Text, k, hiba);
if hiba0 then
begin
Edit1.SetFocus;
MessageDlg(Csak szmot adhatsz meg!,mtError, [mbOk], 0)
end;
-
7/21/2019 delphi jegyzet
64/277
64
A SetFocus metdus a pldban csupn arra szolgl, hogy az Edit1-et
teszi aktvv, teht ahhoz, hogy j adatot adhasson meg a felhasznl,
nem kell elszr rkattintania, mindjrt oda rhatja a szmokat.
Msik megolds, hogy a bemenetnl kiszrjk azokat akaraktereket, melyek nem szmok. Ennl azonban nagyon
figyelmesen kell eljrnunk, ugyanis nem elg ha az OnKeyPress
esemnyben kiszrjk a nem megfelel karaktereket, mivel a
felhasznl a vglaprl val bemsolssal tovbbra is tud szveget
beilleszteni (teht figyelnnk kell pl. az OnChange esemnyt is). Plda a
billentyzetrl val kiszrsre az OnKeyPress esemnyben:
if not (Key in [0.. 9 , #8]) then
begin
Key := #0;
MessageBeep($FFFFFFFF);
end;
A MessageBeep egy Windows API fggvny, ezrt a sg Delphihez
tartoz rszben nem tallhat meg, csak a Microsoft Platform SDK
rszben (ha ez is be van teleptve). A fggvny a Windows-ban
belltott, esemnyekhez definilt hangok lejtszsra szolgl.
Paramternek lehetsges rtkei: $FFFFFFFF, MB_ICONASTERISK,
MB_ICONEXCLAMATION, MB_ICONHAND, MB_ICONQUESTION,
MB_OK.
12.6 Tbbsoros szveg beviteli doboz Memo
A Memo komponens az Edit-hez hasonl, de ebbe tbbsoros
szveget olvashatunk be.
-
7/21/2019 delphi jegyzet
65/277
65
A Memo legfontosabb tulajdonsgai:
o Alignment a sorok igaztsnak belltsra hasznlhat
tulajdonsg. A sorokat igazthatjuk balra, jobbra vagy
kzpre.
o ScrollBars tulajdonsggal megadhatjuk, hogy a
komponensen a vzszintes, a fggleges vagy mindkett
grgetsv megjelenjen-e, esetleg ne legyen egyik
grgetsv se a komponensen.
oWordWrap
igaz (true) rtke az automatikus sortrdelst
jelenti (ha ez a tulajdonsg igaz, nem lehet bekapcsolva a
vzszintes grgetsv, mivel ez a kett tulajdonsg
klcsnsen kizrja egymst).
o WantTabs, WantEnter a Tab s Enter billentyknek
minden komponenseknl ms funkcijuk van. A tabultor
megnyomsra ltalban a kvetkez komponens leszaktv a Form-on. Ha szeretnnk, hogy a felhasznl a
Memo komponensben hasznlni tudja a Tab s Enter
billentyket, teht hogy tudjon tabultorokat (bekezdseket)
s j sorokat ltrehozni a szvegben, ezeknek a
tulajdonsgoknak az rtkeit igazra (true) kell lltanunk. Ha
ezt nem tesszk meg, a felhasznl akkor is tud ltrehoznibekezdseket s j sorokat a Ctrl+Tab s Ctrl+Enter
billentykombincik segtsgvel.
o Text hasonl tulajdonsg, mint az Edit komponensnl. A
Memo komponensben levszveget tartalmazza.
o Lines segtsgvel a Memo-ba bert szveg egyes
soraival tudunk dolgozni. Ez a tulajdonsg TString tpus,
-
7/21/2019 delphi jegyzet
66/277
66
melynek sok hasznos altulajdonsga s metdusa van.
Pldul a Lines (TString) LoadFromFile s SaveToFile
metdusaival be tudunk olvasni a merevlemezrl ill. el
tudunk menteni a merevlemezre szveget.A Lines tulajdonsg hasznlatt mutatja be a kvetkezplda is:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile(c:\autoexec.bat);
ShowMessage(A 6. sor: + Memo1.Lines[5]);
end;
12.7 Grgetsv - ScrollBar
Gyakori problma a szmok bevitele a programba. Szmok
bevitelre hasznlhatjuk a mr emltett Edit vagy Memo komponenseket
is. Most azt mutatjuk be, hogyan vihetnk be szmokat a ScrollBar
komponens segtsgvel.
-
7/21/2019 delphi jegyzet
67/277
67
A ScrollBar legfontosabb tulajdonsgai:
o Kind meghatrozza, hogy a komponens vzszintesen
(sbHorizontal) vagy fgglegesen (sbVertical)
helyezkedjen-e el. Az jonnan ltrehozott ScrollBar kezdetibelltsa mindig vzszintes.
o Min, Max meghatrozza a hatrrtkeket.
o Position meghatrozza a csszka aktulis pozcijt
(aktulis rtket).
o SmallChange az eltols mrtke, ha a grgetsvszlein lev nyilakra kattintunk, vagy az rtket a
billentyzeten levnyilak segtsgvel lltjuk be.
o LargeChange az eltols mrtke, ha a grgetsv
svjban kattintunk valahova, vagy a PageUp, PageDown
billentyket nyomjuk meg.
Ha meg szeretnnk hatrozni azt az rtket, amelyet a
felhasznl belltott a grgetsvon, azt legegyszerbben az
OnChange esemnyben vizsglhatjuk.
Ha igazn szp grgetsvot akarunk ltrehozni, akkor a
grgetsv mell (vagy el) tegynk egy cmkt (Label) is, amely
folyamatosan a csszka aktulis pozcijnak rtkt mutatja.
-
7/21/2019 delphi jegyzet
68/277
68
Ebben a pldban az RGBWindows API funkcijt hasznltuk a hrom
sznbl a vgs szn meghatrozsra. Enne a fggvnynek a
szintaxisa:
function RGB(red, green, blue: byte): cardinal;
ahol red, green, blue az alapsznek (piros, zld, kk) mennyisgtjellik, mindegyik rtke 0-tl 255-ig lehet. Ezeket az rtkeket (0, 255)
megadtuk mindegyik grgetsv Min (0) s Max (255) tulajdonsgban.
Az egyes grgetsvok OnChange esemnyeinek programkdjai az
albbihoz hasonlk:
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
Label1.Caption := 'Piros: ' +IntToStr(ScrollBar1.Position);
Label4.Color := RGB(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);
end;
-
7/21/2019 delphi jegyzet
69/277
69
Ebben a programkdban hasznltuk az IntToStr ill. StrToInt
fggvnyeket. Ezek egsz szmot alaktanak t szvegg ill. fordtva.
Szintaxisuk:
function IntToStr(Value: integer): string;
function StrToInt(const S: string): integer;
Ha az utbbi fggvnyben az S paramter nem szmot tartalmaz
(hanem betket is), akkor az talakts sorn az EConvertError kivtel
kvetkezik be. A kivtelekrl mg lesz sz a ksbbiekben, ezrt itt
most csak a hasznlatt ismerjk meg:
try
ertek := StrToInt(szveg);
except
on EConvertError do
end;
12.8 Szm bevitele SpinEdit segtsgvel
A SpinEdit komponens szintn szmok bevitelre szolgl. A
szmot megadhatjuk billentyzet segtsgvel s egr segtsgvel is a
komponens szln levfel-le nyilakra kattintva.
Legfontosabb tulajdonsgai:
o Value meghatrozza a beadott (kivlasztott) rtket.
o MinValue meghatrozza a minimum rtket, amit a
felhasznl megadhat a SpinEdit-be.
o MaxValue segtsgvel megadhatjuk a maximum rtket,
amit a felhasznl megadhat a SpinEditbe.
-
7/21/2019 delphi jegyzet
70/277
70
o Increment megadja, hogy a jobb szln lev nyilakra
kattintva mennyivel nvekedjen ill. cskkenjen a SpinEdit
aktulis rtke.
12.9 Listadoboz ListBox
A klasszikus listadoboz (ListBox) az egyik leggyakrabban
hasznt kimeneti komponens.
Legfontosabb tulajdonsgai:
o Columns oszlopok szma, melyekben az adatok meg
lesznek jelentve.
o Items a legfontosabb tulajdonsg, a lista egyes elemeit
tartalmazza. Ez is TString tpus, hasonlan a Memo
komponens Lines tulajdonsghoz, s mint olyannak,
rengeteg hasznos metdusa van.
o ItemIndex az ppen kivlasztott elem sorszma. A
szmozs 0-tl kezddik. Ha nincs kivlasztva egyik eleme
sem a listnak, akkor az ItemIndex rtke -1.
o MultiSelect egyszerre tbb rtk (elem) kivlasztst
engedlyezi (true) ill. tiltja (false). Tbb elem kivlasztsnlazt, hogy melyik elemek vannak kivlasztva a ListBox
Selected tulajdonsgval vizsglhatjuk, amely egy 0
indextl kezdd tmb (pl. a Selected[0] igaz, ha az els
elem van kivlasztva, a Selected[1] igaz, ha a msodik elem
van kivlasztva, stb.).
o SelCount kivlasztott elemek darabszmt tartalmazza(ha a MultiSelect rtke igaz).
-
7/21/2019 delphi jegyzet
71/277
71
o Sorted megadja, hogy a lista elemei legyenek-e rendezve
bc sorrendben. Ha rtke igaz (true), j elem
hozzadsnl a listhoz automatikusan rendezve kerl a
listadobozba.Nzzk meg egy kicsit rszletesebben a ListBox legfontosabb
tulajdonsgt, az Items tulajdonsgot. Ez egy TString tpus
tulajdonsg, melynek sok hasznos metdusa van. Ezek kzl a
leggyakrabban hasznlt metdusok:
Add a lista vgre j elemet rak be.
Clear a ListBox sszes elemt trli.
Delete kitrl egy kivlasztott elemet a listban.
Equals teszteli, hogy kt lista tartalma egyenl-e. False
rtket ad vissza, ha a kt lista klnbzik a hosszban
(elemek szmban), ms elemeket tartalmaznak, vagy ha
ms sorrendben tartalmazzk az elemeket.
Insert j elemet szr be a listba a megadott helyre.
LoadFromFile beolvassa a lista elemeit egy szveges
llomnybl. A sikertelen beolvasst a kivtelek
segtsgvel kezelhetjk, melyekrl ksbb lesz sz.
Move egy adott elemet a listban egy msik (j) helyre
helyez t.
SaveToFile elmenti a lista elemeit egy szveges
llomnyba. A lista minden eleme egy j sorban lesz a
fjlban. A sikertelen mentst a kivtelek segtsgvel
kezelhetjk, melyrl bvebben ksbbi fejezetekben leszsz.
-
7/21/2019 delphi jegyzet
72/277
72
Nzznk meg egy pldt ezeknek a metdusoknak a
hasznlatra, hogy jobban megrthessk ket:
Pelda03
A Form-ra helyezznk el egy ListBox-ot, melynek Items
tulajdonsgba adjunk meg nhny nevet. Rakjunk a Form-ra mg pr
nyomgombot is (Rendezd, Adj hozz, Trld, Trd mind, Olvasd be,Mentsd el, Kilps).
Most az egyes nyomgombok OnClick esemnyeit fogjuk
kezelni:
Adj hozz nyomgomb egy InputBox segtsgvel
beolvasunk egy nevet, melyet a lista vghez adunk:
procedure TForm1.Button2Click(Sender: TObject);
-
7/21/2019 delphi jegyzet
73/277
73
var s:string;
begin
s := InputBox('Adj hozz','Krlek add meg a nevet:', '');
if s'' then
ListBox1.Items.Add(s);
end;
Rendezd nyomgomb:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Sorted := true;
end;
Trld nyomgomb trli a lista kijellt elemt:
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
Trld mindnyomgomb trli a lista sszes elemt:
procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox1.Clear;
end;
Megjegyzs: A lista trlst itt a ListBox1.Clear metdussal
vgeztk el. Ez ugyangy kitrli a lista elemt, mint a
ListBox1.Items.Clear metdus, de az elemek trlsen kvl tovbbi
tisztt mveleteket is elvgez. Gyakorlatilag a kt metdus kzti
klnbsg a ComboBox komponensnl lthat: a ComboBox.Clear
-
7/21/2019 delphi jegyzet
74/277
74
kitrli a teljes listt, a ComboBox.Items.Clear kitrli szintn a listt, de
az utols kivlasztott rtk a beviteli mezben marad!
Mentsd elnyomgomb:
procedure TForm1.Button6Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile('nevsor.txt');
end;
Olvasd benyomgomb:
procedure TForm1.Button5Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('nevsor.txt');
end;
Lthatjuk, hogy az utbbi kt metdus sajt maga megnyitja a
fjlt, beolvassa / menti az adatokat, majd bezrja a fjlt.
Kilpsnyomgomb:
procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Close;
end;
Vgl mg megemltnk nhny pldt a tbbi metdus
hasznlatra is:
Medve Elemr beszrsa a 3. helyre a listban:
ListBox1.Items.Insert(2, Medve Elemr);
A lista elselemnek thelyezse a 3. helyre:
ListBox1.Items.Move(0, 2);
-
7/21/2019 delphi jegyzet
75/277
75
Ezekbl a pldkbl is jl lthat, hogy a ListBox komponens
felhasznlsra nagyon sok lehetsg van. Azonban a ListBox
komponens hasznlatnak is lehet htrnya: az egyik htrnya, hogy az
alkalmazs ablakn llandan ott van s sok helyet foglal el. Msikhtrnya, hogy ha a ListBox-ot bemeneti komponensknt hasznljuk, a
felhasznl csak a listban szerepl rtkek kzl vlaszthat.
Termszetesen van amikor neknk ez gy megfelel, de elfordulhat,
hogy a felhasznlnak tbb szabadsgot szeretnnk adni a
vlasztsnl (pldul sajt rtk bersra). Ezekre adhat megoldst a
ComboBox komponens.
12.10 Kombinlt l