delphi jegyzet

Upload: hyarion

Post on 07-Feb-2018

250 views

Category:

Documents


0 download

TRANSCRIPT

  • 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