Programozás és programozás módszertan

Slides:



Advertisements
Hasonló előadás
Grafikus felhasználó felület Windows alatt
Advertisements

Delphi A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel és sebességével. RAD - Rapid Application Development; „Vizuális nyelv”; 4GL nyelv:
Operációs rendszerek Bevezetés.
Programozás III STRING-XML.
Számítógépes ismeretek 5. óra
Bekezdésformázás Név: Szarvas Nóra 8/a Felkészítő tanár: Salamon Róza
Delphi A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel és sebességével. A VB felhasználó barátságát kombinálja a C++ tág lehetőségeivel.
Adatbázis-kezelés.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Windows operációs rendszer
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
Címsor menüsor ikonsor munkaterület (ikonsor) állapotsor.
Bekezdésformázás.
Alapok 2013/2014, őszi szemeszter gyakorlati foglalkozás Automatizálási tanszék.
A körlevél készítésének menete
Tartalomjegyzék és tárgymutató
Adatbázis-kezelés ACCESS program:
Készítette: Keszthelyi Zsolt
Access alapok Táblák, kapcsolatok, űrlapok.
Kliensoldali Programozás
Delphi programozás Delphi programozás SRTNB előadás - Borland Delphi – fontosabb komponensek tárgyalása Nagyváradi Anett.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
Képek beillesztése,formázása dokumentumokban Tóth Anita 8
,,Én így tanítanám az informatikát”
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
Microsoft Access Űrlapok tervezése.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Turbo Pascal 11..
Formanyomtatványok létrehozása Dreamweaverrel E-business 6. előadás.
Űrlapok és keretek.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Prezentáció a prezentációról
Hernyák Zoltán Programozási Nyelvek II.
Delphi Készítette: Rummel Szabolcs Elérhetőség:
Hyper Text Markup Language
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
ADATBÁZISKEZELÉS ŰRLAPOK.
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
A gyakorlatok munkakörnyezete
1. Feladat Hozzunk létre egy olyan programot amely számokat ír ki és a felhasználónak időre be kell gépelni ezeket.
Webprogramozó tanfolyam
Webprogramozó tanfolyam Űrlapok (form-ok). Űrlapok a HTML-ben Biztosan mindenki találkozott már vele – Űrlap példapélda Felhasználási lehetőségei – Regisztráció,
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Első lépések a szövegszerkesztő használatában
Ez az én művem Készítette: Barczi Renáta Felkészítő tanár: PeadDr
Táblázatok.
Bekezdések formázása 1..
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Számítógépes grafika I. AUTOCAD alapok
C Programozási alapok.
Az Office 2007 új grafikus felülete
A Visual Basic és a programozás oktatása
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Fejlesztések, változások a kérvény modulban. Részletfizetési kérvény változások Új rendszerparaméter: PU_RKERVENYEZETTKIRASBEFIZETES S zabályozza, hogy.
Grafikus programozás Készítette: Csernok László
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
Alapok Gyakorlat 2015/16 őszi szemeszter Automatizálási tanszék.
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
Informatikai gyakorlatok 11. évfolyam
Neumann János Informatikai Kar
ListBox CheckedListBox TextBox
A Panel, Scroll Bar és a Combo box tulajdonságai
ComboBox A listák nagy helyet foglalnak a formokon, és az általuk felkínált elemek nem bővíthetőek a felhasználó által. Ezen problémák megoldására használhatjuk.
Neumann János Informatikai Kar
Ubuntu – ismerkedés Fájlok és könyvtárak
Standard párbeszédablakok
Előadás másolata:

Programozás és programozás módszertan Alkalmazásfejlesztés grafikus környezetben – Delphi 2007-2008

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Általános tudnivalók A GUI-k megjelenése alapvetően új programfejlesztési filozófiát hozott: Eddig: megírtuk a programot, az lefutott, bekért adatokat, és kiírt eredményeket Ez után: az elindított alkalmazás várakozik valamilyen esemény bekövetkezésére (egérkattintás, vagy egy időpillanat elérkezése, stb.) Ha az esemény bekövetkezik, az alkalmazás egy programrészlete lefut. Ezt az új filozófiát ESEMÉNYVEZÉRELT PROGRAMOZÁSNAK nevezzük (event controlled programming) A programrészlet, amely az esemény bekövetkezésekor elindul, az eseménykezelő eljárás (event handler) A környezet, amit használni fogunk, a Borland cég Delphi rendszere, és az Object Pascal programozási nyelv

11. Alkalmazásfejlesztés grafikus felhasználói környezetben A Delphi története A Turbo Pascal 7.0-val (1992) párhuzamosan a Borland fejlesztni kezdte a TP for Windowst, amelynek 1.0-s verziója 1991-ben, majd az 1.5 1992-ben került piacra Még ez évben kijött a Borland Pascal 7.0, amellyel DOS (valós mód) és Windows (védett mód) egyaránt lehetett alkalmazást fejleszteni 1995: Delphi 1.0, és az Object Pascal nyelv születése. A név magyarázata: „If you want to talk to [the] Oracle, go to Delphi.” Ha beszélni akarsz a Jóssal (Oracle), utazz Delphibe!) A név utal arra, hogy a Delphi a kezdetektől erős adatbáziskezelési támogatással rendelkezett, és együtműködött az Oracle rendszerekkel

11. Alkalmazásfejlesztés grafikus felhasználói környezetben A Delphi története Az 1.0-s változat még nem volt 32 bites, Windows 3.1 és 3.11 alatt működött 1996: Delphi 2.0, Windows 95 alá, 32 bites kódot készít. 1997: Delphi 3.0 1998: Delphi 4.0 1999: Delphi 5.0 2001: Delphi 6.0 2002: Delphi 7.0 Windows alá, Kylix 1.0 Linux alá 2003: Delphi 8.0, Kylix 2.0, 3.0 2004: Delphi 2005 .NET környezet alá is 2005: Borland Developer Studio 2006 (Delphi és C++, C# egyesített fejlesztői környezetben) Jelenleg is kapható, és létezik már Delphi for php is… Legújabb: Delphi 2007 for Win32 Egyetlen olyan IDE, amely mindhárom platformot (Win2000,XP, Vista) támogatja Minden verzió különböző kiadásokban létezik (Standard, Enterprise, Architekt), amelyek szolgáltatásaikban különböznek

11. Alkalmazásfejlesztés grafikus felhasználói környezetben A Delphi jellemzői Negyedik generációs programozási nyelv (4GL) Alkalmazásainkat objektumorientált magas szintű programozási nyelven írjuk (Object Pascal) Windows Objektumok használata Turbo Pascal szerű grafika (Canvas tulajdonság használatával) Adatbáziskezelés támogatása, méghozzá platformfüggetlenül (az adatbázis fajtájától független elérés és kezelés) Eseményvezérelt programozás

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Az Integrált Fejlesztői Környezet (IDE) Mi a Delphi 7.0-s verzióját használjuk A környezet a különböző verziókban közel azonos Részei: Eszköztárak Komponenspaletta Object Treeview (objektumfa nézet) Object Inspector (objektumfelügyelő) Form tervező felület Kód ablak

11. Alkalmazásfejlesztés grafikus felhasználói környezetben A Delphi projekt fájljai A Delphiben egy alkalmazás több forrásállományból és segédállományból áll (ez a projekt): .DPR: a projekt főprogramjának forrásszövege, automatikusan íródik, a programozónak ritkán kell belenyúlnia (ennek nevét kapja az .EXE fájl, ez kezdődik a PROGRAM kulcsszóval) .PAS: Object Pascal nyelvű forrásszöveg, mindig UNIT, tartozhat formhoz, de lehet önálló is, részben automatikusan íródik .DFM: (Delphi Form) a form grafikus állománya, ez tárolja a form megjelenését, automatikusan íródik, a form .PAS állományának nevét kapja .DCU: (Delphi Compiled Unit) a lefordított unitállomány, a .TPU delphis megfelelője .DOF: (Delphi Options File) a projekt opciós állománya, az alkalmazás jellemzőit tartalmazza (ikonfájl neve, verziószám, compiler beállításai, stb., automatikusan íródik .RES: erőforrásfájl, automatikusan íródik, pl. az alkalmazás ikonját tartalmazhatja .~DFM, .~PAS: forrásszövegek és form-állományok előző verziói

11. Alkalmazásfejlesztés grafikus felhasználói környezetben A programkészítés folyamata Delphiben Az alábbiakban vázolt séma erősen leegyszerűsített!!! A form megtervezése: Jellemzőinek beállítása (Object Inspector) Komponensek elhelyezése a formon A komponensek jellemzőinek beállítása (Object Inspector) Eseménykezelő eljárások írása a komponensek vagy a form megfelelő eseményeihez Példaalkalmazás készítése…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Az alapvető komponensek Standard fül Label – címke, feliratok megjelenítéséhez Edit – szövegdoboz adatbevitelhez Memo – többsoros adatbevitelhez, egyszerű szövegszerkesztőhöz (text editor) Button – nyomógomb CheckBox – kiválasztónégyzet, egymást nem kizáró lehetőségek közötti választáshoz RadioButton (általában csoportosan, RadioGroup) – egymást kizáró lehetőségek közti választáshoz ListBox – listadoboz ComboBox – legördülő listadoboz Scrollbar – gördítősáv GroupBox, Panel – ezeket más komponensek tárolásához használjuk, de logikai jelentőségük is van

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Az alapvető komponensek Additional fül BitBtn – képes nyomógomb SpeedButton – eszköztár nyomógomb Image – kép (kész képet is tartalmazhat, de rajzoláshoz is alkalmas) RichEdit – többsoros szövegdoboz, de a Rich Text Formátum lehetőségeivel MaskEdit – maszkolható szövegdoboz, formátumozott adatbevitelhez

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Komponensek közös tulajdonságai Name – név, szöveges: ez azonosítja az Object Pascalban a komponenst, a Pascal nyelv szabályai szerint Caption – a komponens felirata, szöveges Enabled – engedélyezettség, logikai. Ha hamis, akkor a komponens látszik, de nem használható (szürke) Visible – láthatóság, logikai Showing – szintén láthatóság, de run time only, és read only: megadja, hogy a komponens VALÓBAN látható-e Left, top – egészek, a komponens bal felső sarkának koordinátái pixelben, a szülő komponenshez képest Width, Height – egészek, a komponens szélessége és magassága pixelben Align – igazítás, nem minden komponensnél, a szülő objektumhoz képest értendő. Beállítása után a szülő objektum átméretezésénél is megmarad a viszonylagos helyzet Anchors – „horgony”: hasonló az előzőhőz, de hely maradhat a két objektum közt Tag – 4 byteos LongInt, tetszőlegesen felhasználható tulajdonság

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Komponensek közös tulajdonságai Color – szín, egész (LongInt), két féleképp állítható be: Előre definiált konstansokkal (clRed, stb) Hexadecimális formában: $PPBBGGRR, ahol: PP: a színpaletta száma, általában 00 BB: a kék összetevő GG: a zöld összetevő RR: a piros összetevő Font – betűtípus, egy összetett, TFont nevű típus írja le, amelynek mezői megfelelnek a windowsos jellemzőknek: Size: méret, pontban mérve; Style: betűstílus, halmaz típusú, elemei fsBold, FsItalic, fsUnderline, fsStrikeOut; Color: betűszín; Pitch: arányos-e vagy fix szélességű, ajánlott beállítás az fpDefault; Name: a betűtípus neve; ParentFont, ParentColor tulajdonságok – logikai, hogy átvegye a komponens szülőjének Font, ill. Color tulajdonságát Cursor – az egérkurzor alakja a komponens felett Hint – tipp tulajdonság („sárga cetli”), de csak akkor látszik, ha a ShowHint (tipp megjelenítése) logikai tulajdonság értéke True A ParentShowHint logikai tulajdonság átveteti a szülőtől a ShowHint értékét TabStop – logikai tulajdonság, meghatározza, hogy a tabulátor hatására a fókusz a komponensre kerüljön-e TabOrder – egész tulajdonság, a tab-sorrendet határozza meg, növekvő számok irányában lépkedhet végig a felhasználó. A számozás 0-tól kezdődik.

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Komponensek közös metódusai Show – láthatóvá tétel Hide – elrejtés SetFocus – fókuszba állít Repaint – újrarajzolás (ha pl. programból megváltoztatjuk a feliratot, stb.) Refresh – frissítés, a Repaint-ot hívja ScaleBy – nagyítás, kicsinyítés, két paramétert kell megadni, x és y irányú szorzótényezőt, a bal felső sarok marad helyben A többi metódus kontrol-specifikus

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Komponensek közös eseményei OnChange – ha a komponens, vagy annak tartalma megváltozik OnClick – a komponensre kattintás a bal egérgombbal OnDblClick – a komponensre kattintás duplán a bal egérgombbal OnEnter – ha a komponens fókuszba kerül (belekattintunk a szövegdobozva v. hasonló) OnExit – ha a komponensről lekerül a fókusz OnKeyDown – ha akomponens fókuszban van, és a user lenyom egy billentyűt (paraméterei: Key, a lenyomott billentyű virtuális kódját tartalmazza, Shift: a shift-szerű billentyűk állapotát tartalmazza) OnKeyPress – mint az előző, de a Key paraméter char tipusú, és csak megjeleníthető billentyűkre működik OnKeyUp – ha a felhasználó felenged egy billentyűt (paramétereket ld. az OnKeyDown-nál) OnMouseDown – ha a felhasználó lenyomja az egér egyik gombját OnMouseMove – ha a felhasználó megmozdítja az egeret a komponensen OnMouseUp – ha a felhasználó felengedi az egér valamelyik gombját

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Üzenetablakok Hibaüzenetként, megerősítéskérésként használatosak, vagy ha a felhasználónak döntést kell hoznia Legegyszerűbb: ShowMessage(<üzenet>) eljáráshívással (itt csak egy OK gomb lesz az ablakban, a fejléc pedig az .EXE neve A Delphi belső üzenetablaka: MessageDlg, MessageDlgPos függvények Mindkettőnél mi szabályozzuk az üzenetablak fajtáját, és hogy milyen gombok legyenek rajta A MessageDlgPos-nál két további paraméter a megjelenítés helye Hátrányuk: angol fejléc és angol gombfeliratok Részletek: ld. tankönyv

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Üzenetablakok A Windows üzenetablakának hívása: Application.MessageBox függvény Előnye: a Windows nyelvének megfelelő gombfeliratok, és szabadon beállítható fejléc Paraméterezése: function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer; Text: Az üzenetablak szövege, szövegkonstans Caption: A fejléc szövege, szövegkonstans Flags: Az ablakban megjelenő gombokat és ikonokat meghatározó paraméter, egész tipusú, de előre definiált konstansokat használunk: MB_ABORTRETRYIGNORE 3 gomb: Abort, Retry, és Ignore. MB_OK 1 gomb: OK. MB_OKCANCEL 2 gomb: OK és Cancel. MB_RETRYCANCEL 2 gomb: Retry és Cancel. MB_YESNO 2 gomb: Yes és No. MB_YESNOCANCEL 3 gomb: Yes, No, és Cancel. MB_ICONEXCLAMATION, MB_ICONWARNING felkiáltójel MB_ICONINFORMATION, MB_ICONASTERISK információ ikon (i) MB_ICONQUESTION: kérdőjel MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND stoptábla, X (Win verzió függő) A fentieket lehet kombinálni, ilyenkor össze kell adni az egyes konstansokat, pl: MB_ICONERROR+MB_OK

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Üzenetablakok A Windows üzenetablakának hívása: Application.MessageBox függvény Visszatérési értéke egész tipusú, de előre definiált konstansokat használunk, és azt tartalmazza, hogy melyik gombot nyomta meg a felhasználó: Konstans Számérték Megnyomott gomb IDOK 1 OK IDCANCEL 2 Cancel IDABORT 3 Abort IDRETRY 4 Retry IDIGNORE 5 Ignore IDYES 6 Yes IDNO 7 No

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Jelölőnégyzet (CheckBox) Általában logikai értéket vihetünk be vele Fontosabb tulajdonságai: AllowGrayed: „szürkeség engedélyezése”, ha értéke igaz, akkor háromféle értéke lehet: Checked, Unchecked, Grayed. Egyébként csak az első kettő. Checked: logikai tulajdonság, ha ki van pipálva a jelölőnégyzet, értéke True State: az állapotot tartalmazza, 3 értéke lehet: cbChecked, cbUnchecked, cbGrayed Választógomb (RadioButton) Két értéke lehet, ezt a Checked logikai tulajdonság tartalmazza Egyedül ritkán alkalmazzuk, inkább csoportban, ahol általában csak egy lehet kiválasztva a csoport tagjai közül

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Választógomb csoport (RadioGroup) Akkor használjuk, ha több lehetőség közül csak egyet választhat a felhasználó Fontosabb tulajdonságai: Items: az egyes gombok feliratai, TStrings tipusú, tulajdonképp sztringtömb, egy külön szerkesztővel állítható be az Object Inspectorban, futás közben pedig egydimenziós stringtömbként kezelhető Columns: annak meghatározása, hogy hány oszlopban jelenjenek meg a gombok Itemindex: a kiválasztott gomb sorszáma 0-val kezdve. Ha nincs kiválasztva egyik sem, értéke -1

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Szöveges adat bevitele „üzenetablakban” Akkor használjuk, ha egy adatot kell megadnunk, de használatához egy függvényt kell hívni egy eseménykezelőből: function InputBox(const ACaption, APrompt, ADefault: string): string; Paraméterei: Acaption: Az ablak fejléce APrompt: Az ablakban megjelenő szöveg ADefault: Alapértelmezett érték a bevitelhez Visszatérési értéke mindig szöveges, tehát a további felhasználáshoz át kell alakítani, ha szükséges (StrToInt, StrToFloat, Val, stb.)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Szöveges adat bevitele szövegdobozban (Edit) Nagyon sokoldalú komponens, rengeteg hasznos tulajdonsága van: Text: ez a benne lévő szöveg, string MaxLength: a megadható szöveg maximális hossza, egész Modified: run time only, logikai, annak jelzése, hogy megváltozott-e AutoSelect: logikai, igaz esetén ha fókuszba kerül, a benne lévő szöveg kijelölődik ReadOnly: logikai, ha true, a felhasználó nem változtathatja meg a tartalmát PasswordChar: ha jelszóablakként használjuk, annak meghatározása, hogy milyen karakter látsszon a szövegdobozban Vannak fontos metódusai is: CopyToClipboard: a tartalmát a vágólapra másolja PasteFromClipboard: a vágólap tartalmát a szövegdobozba másolja, ha az szöveg tipusú Probléma: ennek tartalma is szöveg lehet, tehát az átalakításról gondoskodni kell, és hibaüzenetet kell küldeni, ha a felhasználó rosszat írt be.

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Többsoros szövegdoboz (Memo) A tartalma a Lines, TStrings tipusú tulajdonságban tárolódik Ennek hasznos metódusai a SaveToFile(<fájlnév>) és a LoadFromFile(<fájlnév>) metódusok, amivel a sorok szabványos szövegfájlba menthetőek Ennek a komponensnek a segítségével egyszerű texteditor készíthető Görgető (SpinEdit) – Samples fül Ha csak egészeket kell bevinnünk, akkor használható jól Tulajdonságai: Value, egész: az érték, amit épp mutat MaxValue, Minvalue (egészek): a határok, ami közt változtatható az értéke Increment, egész: a lépésköz, amennyit változik egy kattintásra

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Listadoboz (ListBox) Akkor használjuk, ha egy listából kell elemeket választani Fontosabb tulajdonságai: Columns, egész: oszlopok száma a megjelenítéshez Items, TStrings: a listaelemek, mindegyik string ItemIndex, egész: a kiválasztott elem sorszáma, 0-tól kezdve (ha -1, nincs kiválasztva semmi) Multiselect, logikai: a többszörös kijelölés engedélyezése. Ha igaz, akkor nem az Items tulajdonsággal, hanem a listbox Selected tulajdonságával vizsgálható, mi van kiválasztva (ez logikai tömb) SelCount, egész: a kiválasztott elemek száma, ha a Multiselect igaz Sorted, logikai: rendezettség

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele Legördülő listát tartalmazó doboz (ComboBox) Ezt is akkor használjuk, ha egy listából kell elemeket választani, de szigorúan csak egyet Legtöbb tulajdonsága a ListBox-szal azonos, ami új: Style: stílus, részleteket ld. Tankönyv (legfontosabb: csDropDownList) Nincs lehetőség többszörös kijelölésre (MultiSelect, stb) A TStrings típus fontosabb metódusai Add(<szöveg>) – a lista végére új elemet tesz be Clear – törli az összes elemet Delete(<sorszám>) – törli a megadott sorszámú elemet Insert(<sorszám>,<szöveg>) – új elemet szúr be a megadott helyre Move(<jelenlegi sorszám>,<új sorszám>) – egy elemet elmozgat adott helyről adott helyre LoadFromFile(<fájlnév>) – megadott fájlból feltölti a lista tartalmát SaveToFile(<fájlnév>) – megadott fájlba elmenti a lista tartalmát Görgető (ScrollBar) –görgető, egész számok bevitelére használható, tulajdonságai: Kind – fajta (tájolás) Min, Max (egészek): értékhatárai Position (egész): az értéke SmallChange (egész): az értékváltozás mértéke, ha a nyilakra kattintunk, vagy a billentyűzet nyilaival változtatjuk az értékét LargeChange (egész): a változás mértéke PgUp, PgDn vagy a szürke részre kattintás hatására

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatok bevitele StringGrid komponens Akkor használjuk, ha az adatok megjelenítése és/vagy bevitele táblázatos formában szükséges Tulajdonságai: ColCount (egész) – oszlopok száma RowCount (egész) – sorok száma FixedCols, FixedRows (egészek) – a rögzített sorok és oszlopok száma baloldalon és felül GridLineWidth (egész) – a rács vonalvastagsága pixelben Scrollbars (egész) – a gördítősávok láthatósága (jobb és alsó) Cells (szöveges tömb) – a cellákban lévő szöveg, nincs az Object Inspectoron, programból állítható be és kérdezhető le Legfontosabb metódusa: MouseToCell(X, Y: Integer; var ACol, ARow: Longint), visszadja, hogy az x, y koordinátákhoz melyik cella tartozik

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Állapotjelző (Gauge, Progressbar) Egy folyamat állapotát jeleníthetjük meg velük, részleteket ld. Tankönyv. Választóvonal (Bevel) Csoportosító keretek (GroupBox, Panel) Alakzat (shape) Időzítő (Timer) Ha megadott időközönként eseménykezelőt kell futtatni, akkor használatos Egy fontos tulajdonsága van: Interval, ahány ms-onként az eseménynek be kell következnie Csak az OnTimer eseménykezelője van, ehhez kell a kiváltandó esemény event handlerét megírni

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Főmenű (MainMenu) Az ablakunk felső részére főmenüt készíthetünk vele Használata: Az ablakra fel kell helyezni először egy láthatalan Mainmenu komponenst Ez után dupla kattintás segítségével meg kell nyitni a Menu Editort a menüpontok felvételéhez, módosításához A menüpontok tulajdonságai: Checked: megadható, hogy a menüpont neve előtt legyen-e pipa (kétállapotú menüpont) GroupIndex: ha egytől különböző számot adunk meg, akkor az azonosan beállított menüpontokból csoport képezhető. Ezek rádiógomb-csoportként viselkedhetnek, ha a RadioItem tulajdonságot igazra állítjuk ShortCut: gyorsbillentyű választható a menüponthoz Fontos még Caption tulajdonság, ez minden menüpontnak különböző lehet, és ha elválasztót szeretnénk a menüpontok közt, egy kötőjelet („-”) kell megadni. Azt, hogy egy menüpont mit csináljon, a menüpont onClick eseménykezelője határozza meg Egy menüponthoz almenü is készíthető, a Create Submenu menüponttal a Menu Editorban

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Helyi menű (PopUpMenu) Tetszőleges látható és engedélyezett komponenshez helyi menüt készíthetünk vele Annak a komponensnek, amelyik feletti jobb gomb lenyomására helyi menüt szeretnénk készíteni, a PopUpMenu tulajdonságát be kell állítani a megfelelő PopUpMenu komponensre Használata megegyezik a főmenüvel, ahhoz képest egy új tulajdonsággal, egy új metódussal és egy új eseménnyel rendelkezik: AutoPopUp tulajdonság (logikai): ha igaz, a jobb egérgombbal való kattintáskor megjelenik a helyi menü Ha ez hamis, akkor programból, a PopUp metódussal jeleníthető meg Új esemény az onPopUp, ami a megjelenés előtt következik be, itt a menü beállításait még elvégezhetjük

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Eszköztár készítése Két módja van, az egyszerűbbnél Panel komponensre SpeedButton komponenseket teszünk: A SpeedButton olyan nyomógomb, amely lenyomva is tud maradni A SpeedButton-ok a GroupIndex tulajdonsággal csoportokba rendezhetők, mint a menüpontok is. Ekkor az egy csoportba tartozó gombok rádiógombként viselkednek A SpeedButton lenyomott állapotát a Down logikai tulajdonság jelzi, de csak ha a GroupIndex nem 0 Az AllowAllUp logikai tulajdonság azt határozza meg, hogy egy gombcsoportban mindegyik gomb felengedett állapotban lehet-e

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Eszköztár készítése A másik módszer egy ToolBar és egy ImageList használata Az ImageList egy képlista, amely több, ugyanolyan méretű kép tárolásásra alkalmas A benne lévő képek indexek (0-val kezdődő sorszámok) segítségével érhetők el Ez a komponens csak tervezési időben látszik A Width és a Height tulajdonság az egyes képek szélességét és magasságát jelenti Legfőképp ToolBar-ral együtt használjuk

11. Alkalmazásfejlesztés grafikus felhasználói környezetben További komponensek Eszköztár készítése A ToolBar komponens Eszköztárat lehet vele kialakítani akár több ImageList segítségével Az Images tulajdonsága tartalmazza annak az ImageList-nek a hivatkozását, amely az engedélyezett gombok képeit tartalmazza, ugyanez a tiltott gombokra a DisabledImages, a kiválasztott gombra a HotImages Jobb egérgombbal adhatunk hozzá gombot, elválasztót, de ezek mind ToolButton komponensek, csak a Style tulajdonságuk más Az egyes gombok Grouped logikai tulajdonsága határozza meg, hogy a gomb csoportban van-e A MenuItem tulajdonsággal a főmenü egy menüpontjához lehet hozzárendelni, vagyis ugyanazt a funkciót nem kell kétszer megírni És most nézzük meg gyakorlatban ezt az egészet…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Több ablakos alkalmazások készítése Ha az alkalmazásunk több ablakból áll, a további ablakok megjelenítése lehet modális, és nem modális. Modális megjelenítés: A főablak csak akkor elérhető, ha a másodikként megjelenített ablakot bezártuk Nem modális megjelenítés: A két ablak egyenértékű, szabadon átválthatunk egyikről a másikra A Delphiben minden ablakhoz külön .dfm és .pas állomány tartozik, ezeket a projekthez adni a File/New form menüponttal lehet Ha egy ablakot modálisan akarunk megjeleníteni egy már láthatóból, a ShowModal metódust kell alkalmazni. Ez visszatérési értéket is szolgáltathat, tehát függvényként is hívható Ha egy ablakot nem modálisan akarunk megjeleníteni, a Show metódust kell használni Ha egy ablakot egy másikból meg akarunk jeleníteni, a hívó ablak unitjának interface, vagy implementation részében a unitját szerepeltetni kell (erre a Delphi rá is kérdez, és automatikusan el is végzi, ha kérjük)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Több ablakos alkalmazások készítése További probléma: ha egy ablakhoz tartozó eseménykezelőből egy másik ablak komponenseire kívánunk hivatkozni, ez alapesetben nem lehetséges. Megoldás: A hivatkozni kívánt ablak unitjának nevét el kell helyezni a hívó ablak unitjának uses felsorolásában. Például: A két ablak neve legyen Form1 és Form2, a hozzájuk tartozó unitok Unit1 és Unit2. Az egyik ablakon legyen egy Button1 gomb, és mindkettőn legyen Label1 komponens. Ha a Form2 valamely eseménykezelőjében a Form1-en lévő Button1-re kívánunk hivatkozni, akkor a Form2 interface, vagy implementation részében lévő Uses után szerepeltetni kell a Unit1 hivatkozást (erre is rákérdez a Delphi) Ezek után a Button1 hivatkozást le tudja fordítani a rendszer. Ha ugyanolyan nevű komponens van mindkét ablakon, akkor megkülönböztetés céljából a másik ablakon lévő neve elé oda kell írni az ablakának a nevét: Form1.Label1

11. Alkalmazásfejlesztés grafikus felhasználói környezetben SDI és MDI alkalmazások SDI: Single Document Interface, olyan alkalmazás, amely egy időben csak egy dokumentummal tud dolgozni (pl: jegyzettömb) MDI: Multiple Document Interface, olyan alkalmazás, amely egy időben több dokumentummal is tud dolgozni (pl: Word) A Delphiben az utóbbi létrehozása nagyon egyszerű, csak az új alkalmazás létrehozási módja új: File/New/Other menüpontban a Delphi Project lapról kell kiválasztani az MDI Application-t Ezen az alkalmazáson már több alapfunkció is szerepel (megnyitás, vágólap-műveletek, ablakok elrendezése), nekünk csak a saját alkalmazásunk speciálisan működő részeit kell megírni

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Fájlkezelés az Object Pascalban és a Delphiben Az Object Pascalban néhány beépített fájlkezelő eljárás és típus neve eltér a Turbo Pascalban megszokottól, mert itt ezek a szavak tulajdonságokat és metódusokat jelölnek (text, close, stb. A megváltozott azonosítók: Text -> TextFile Assign -> AssignFile Close -> CloseFile Megváltozott továbbá a hibakezelésnél a hibakód kezelése. Ez az EInOutError kivételtípus Errorcode tulajdonságaként érhető el, a kódok jelentése, és példaprogram található a tankönyvben. A Delphi szintjén bizonyos kontrolok TStrings tulajdonságának metódusaként találunk még fájlkezelési támogatást (SaveToFile, LoadFromFile)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Kivételkezelés A programunkban előforduló futási hibák Windows környezetben kivételekként (Exception) jelentkeznek. Megkülönböztetünk: Szoftveres kivételeket, ezeket a programozó válthatja ki a Raise utasítással, valamint Hardveres kivételekt, amelyek a számítógép valamely részegységétől erednek (fájlkezelés közbeni hibák, nullával való osztás, konverziós hibák típusok közti átalakításkor) A továbbiakban a hardveres kivételek feldolgozásával foglalkozunk A kivételkezeléshez a Delphi struktúrált utasításokat biztosít

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Kivételkezelés A Try…Except utasítás Legegyszerűbb alakja: Try {védett blokk utasításai} Except {a védett blokkban bekövetkező kivétel esetén lefutó utasítások} End; Működése: A program megpróbálja végrehajtani a védett blokkot Ha ebben kivétel keletkezik, a végrehajtás az Except utáni blokkra kerül, a védett blokknak a kivétel bekövetkezése után következő utasításai pedig nem hajtódnak végre Ha a védett blokkban többfajta kivétel is bekövetkezhet, és ezeket különbözőképp kell lekezelni, akkor ez az alak nem alkalmas a feladatra

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Kivételkezelés A Try..Except utasítás Bonyolultabb alakja: Try {védett blokk utasításai} Except on <kivételazonosító1> do <utasítás[blokk1]>; on <kivételazonosító2> do <utasítás[blokk2]>; . on <kivételazonosítóN> do <utasítás[blokkN]> else <utasításblokk]; End; Működése: A program megpróbálja végrehajtani a védett blokkot Ha ebben kivétel keletkezik, a végrehajtás az Except utáni blokkra kerül, a védett blokknak a kivétel bekövetkezése után következő utasításai pedig nem hajtódnak végre A program megnézi, hogy melyik fajta kivétel következett be, és az ahhoz tartozó utasítások futnak le, vagy ha nem találja, az else ág kerül végrehajtásra A kivételek előre deklarált kivételtípusok is lehetnek (lásd. Delphi Help, SysUtils unit), de a programozó is alkothat új kivételosztályokat

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Kivételkezelés A Try..Except utasítás Ha a Try utasításon belül a kivételhez tartozó angol hibaüzenetre is szükség van, vagy pl. fájlkezelésnél a hibakódok kívánjuk használni, használhatjuk az E:Extension tipsú globális változót, amely mindig az épp kiváltott kivétel adatait tartalmazza, pl: Try i:=StrToInt(‘qqcs’); Except on E:EConvertError do Application.MessageBox(‘Az alábbi hiba történt: ‘+E.Message’,’Hiba’,MB_ICONERROR+MB_OK) End; A kivételek adatmezőként tartalmazzák a Message (üzenet) mezőt, valamint az EInOutError az ErrorCode mezőt, amelyben az I/O hiba kódja érkezik vissza

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Kivételkezelés A Try..Finally utasítás Ha a Try utasításon belül olyan utasításokat akarunk szerepeltetni, amelyek a kivétel bekövetkezésétől és lekezelésétől függetlenül, MINDENKÉPP le kell, hogy fussanak, ezt az utasítást kell alkalmazni. Erre pl. erőforrások felszabadításakor lehet szükség. A részleteket lásd a tankönyvben…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások általános felépítése Az ilyen alkalmazások 3 szintből (rétegből) állnak: Adatelérési réteg Alkalmazáslogika Felhasználói interfész Attól függően, hogy az egyes rétegek egy vagy több számítógépen helyezkednek-e el, a következő adatbáziskezelő architektúrák léteznek: Egygépes adatbáziskezelő alkalmazás File-szerver architektúra Kliens-szerver architektúra Többrétegű architektúra (adatbázisszerver, alkalmazásszerver, kliensprogram)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben Az előzőekben említett bármely architektúra megvalósítható Egységesen kezelhető minden adatbázis, a Borland Database Engine adatbázismotoron keresztül. Az alkalmazásunk a következőképp éri el az adatbázisokat:

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben A BDE aliasokat (hivatkozási neveket) használ az adatbázisok eléréséhez Az aliasok a BDE Administrator programmal szerkeszthetők a Vezérlőpultból, vagy Delphiből a Database/Explore menüpontból Az Aliasoknak van alapértelmezett driverük (Standard, MS SQL, stb.) Ezen kívül fajtától függően útvonalat vagy szerver URL-t kell megadni a használatukhoz, illetve a Standard típusnál még a fajtát (Paradox, dBase, stb.) is Az aliasok tulajdonságai a C:\Program Files\Common Files\Borland Shared\Idapi32.cfg állományban tárolódnak Működésük:

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben Ha adatbáziskezelő alkalmazást írunk, a kész program telepítőjének fel kell telepítenie a BDE-t is, és gondoskodni kell az alias létrehozásáról is

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben Az adatbáziskezelő alkalmazásban az adatok eléréséhez előkészületeket kell tennünk Szükségünk lesz adatelérési komponensekre, amelyek valamely aliashoz vannak rendelve, és egy adathalmazt szolgáltatnak (TDataSet osztály) szinte táblázatként Ezek: a TDatabase, TTable, TQuery, TStoredProc osztályok Ezen kívül szükség van adatmegjelenítési komponensekre, ezek vagy az egész táblát, vagy annak egy mezőjét mutatják (TDBEdit, TDBGrid, TDBCheckBox, stb. Ezek nem tudnak közvetlenül egymáshoz kapcsolódni, közéjük kell iktatni egy TDataSource (adatforrás) objektumot, az ábrának megfelelően:

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatbáziskezelő alkalmazások felépítése Delphiben Készítsünk ezek alapján egy egyszerű példaprogramot…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Fontosabb közös tulajdonságaik: Active (logikai): az adathalmaz megnyitására (True) és lezárására (False) szolgál Bof (logikai, olvasható): Azt jelzi, hogy az adathalmaz elején állunk-e CanModify (logikai): Azt jelzi, hogy módosítható-e a tartalom DataSource (szöveg): Annak az adatforrás objektumnak a neve, amely az adathalmazhoz kapcsolódik DatabaseName (szöveg): Az adatbázis neve, amihez a halmaz kapcsolódik (alias vagy útvonal) Eof (logikai, olvasható): Azt jelzi, hogy az adathalmaz végén állunk-e FieldCount: A mezők száma az adathalmazban Fields: tömb, amely a mezők adatait (név, megjelenített név, szélesség, stb.) TFields objektumokként tartalmazza, de csak ha feltöltjük, automatikusan üres, és a fizikai tábla adataival dolgozik az adathalmaz (erre lesz szükség számított mezők létrehozásához)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Fontosabb közös tulajdonságaik: Filter (szöveges): egyszerű szűrőfeltétel adható meg ebben a mezőben Filtered (logikai): Ha értéke True, akkor jut érvényre a filter mezőben megadott feltétel FilterOptions: a szűrés tulajdonságait adja meg (kis- és nagybetűk megkülönböztetése, részleges egyezés) Found (logikai, olvasható): azt jelzi, hogy a halmazban az utolsó keresés sikeres volt-e Modified (logikai): Azt jelzi, hogy az aktuális rekord módosítva volt-e RecNo (egész): az aktuális rekord sorszáma RecordCount (egész): a halmaz rekordjainak sorszáma State: Az adathalmaz állapota (dsEdit, dsInsert, dsBrowse, stb.), csak futás közben elérhető, és csak olvasható, átátllítása metódusokkal történik

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Fontosabb közös metódusok: Append: A halmaz végéhez egy új, üres rekordot fűz AppendRecord: A halmaz végéhez a paramétereként kapott adatokkal feltöltött rekordot fűz Cancel: Az aktuális rekord módosításait visszavonja ClearFields: Törli az aktuális rekord mezőinek értékeit Close: Az adathalmaz lezárása Delete: Az aktuális rekord törlése DisableControls: Letiltja az adatmegjelenítési komponensekkel való kapcsolatot Edit: engedélyezi az aktuális rekord javítását, a halmaz állapotát dsEdit állapotba állítja EnableControls: Engedélyezi az adatmegjelenítési komponensekkel való kapcsolatot FieldbyName: az egyes mezőkre hivatkozhatunk vele a nevével FindFirst: megkeresi a szűrési feltételnek megfelelő első rekordot FindLast: megkeresi a szűrési feltételnek megfelelő utolsó rekordot FindNext: megkeresi a szűrési feltételnek megfelelő következő rekordot FindPrior: megkeresi a szűrési feltételnek megfelelő megelőző rekordot

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Fontosabb közös metódusok: First: Az első rekordra ugrik Insert: Az aktuális rekordpozícióba egy új, üres rekordot szúr be InsertRecord: Az aktuális rekordpozícióba a paramétereként kapott adatokkal feltöltött rekordot szúr be Last: Az utolsó rekordra ugrik Lookup: Keresés, de hatására a rekordmutató nem mozdul el Locate: Keresés, hatására a megtalált rekord lesz az aktuális MoveBy: Megadott számú rekorddal mozgatja el a rekordmutatót Next: a következő rekordra lép Open: adathalmaz megnyitása Post: szerkesztés után az aktuális rekord változásainak az adathalmazba írása Prior: az előző rekordra lép SetFields: egy adathalmaz aktuális rekordjának több mezőjét lehet módosítani ezzel a metódussal

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Fontosabb közös események: AfterCancel/Close/Delete/Edit/Insert/Open/Post: A megfelelő művelet UTÁN történik meg BeforeCancel/Close/Delete/Edit/Insert/Open/Post: A megfelelő művelet ELŐTT történik meg OnCalcFields: Egy mező számításakor történik meg, itt kell elhelyezni a kiszámításhoz szükséges kifejezést OnDeleteError: Rekord törlési hibájánál történik meg OnEditError: Az aktuális rekord szerkesztésének hibájakor generálódik OnFilterRecord: a szűrés végrehajtásakor történik meg OnNewError: új rekord felvitelekor (Insert vagy Append) generálódik OnPostError: a Post metódus meghívásakor történő hiba váltja ki

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Az adathalmazok állapotai

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Az adathalmaz mezői Minden mezőhöz tartozik egy TField tipusú objektum, amely a mező tulajdonságait tartalmazza Ezek a tulajdonságok részben automatikusan generálódnak, részben szerkeszthetők a Fields Editorral, amely az adathalmazon duplán kattintva érhető el Első lépésként jobb gomb/Add all fields ponttal hozzá kell adnunk a létező mezőket Ezek után a mezők egyenként szerkeszthetők A mezőobjektumok különböző típusúak attól függően, hogy a mezőben milyen tipusú érték tárolódik (TFloatField, TStringField, TIntegerField stb.), ezek a típusok a TField absztrakt objektum leszármazottai

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Az adathalmaz mezői A mezőkben tárolt értékekhez több módon férhetünk hozzá: FieldByName metódussal: Table1.FieldByName(‘VAROS’).Value:=‘Kaposvár’; FieldValues tulajdonság segítségével: Table1.FieldValues(‘VAROS’):=‘Kaposvár’; Fields tömb segítségével (feltételezve, hogy a mezőlistában a VAROS az első): Table1.Fields[0].Value:=‘Kaposvár’;

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek A TField objektum fontosabb tulajdonságai: CustomConstraint: csak az itt megadott feltételnek megfelelő érték írható a mezőbe ConstraintErrorMessage: ha a fenti feltétel nem teljesül, ez a hibaüzenet jelenik meg DefaultExpression: alapértelmezett érték, ha a mezőt üresen hagyjuk, ez kerül az adatbázisba Post műveletkor, új rekord felvitele esetén DisplayFormat: a mező értékének megjelenítési formátuma (pl. mértékegység esetén) DisplayLabel: a mező cimkéje, például DBGRid-ben ez jelenik meg fejlécként DisplayWidth: mezőszélesség FieldName: a mező adatbázis-beli neve IsNull (logikai, olvasható futás közben): akkor igaz, ha a mező értéke az aktuális rekordban üres MinValue: a mezőben tárolható legkisebb érték MaxValue: a mezőben tárolható legnagyobb érték ReadOnly (logikai): True esetén a mező nem szerkeszthető Required (logikai): True esetén a mezőt nem lehet felvitelkor üresen hagyni Value: az érték írható vagy olvasható futás közben ezen keresztül

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Származtatott mezők használata A származtatott mezők olyan mezők, amelyek fizikailag nem láteznek az eredeti adatbázisban, ehelyett futási időben kapnak értéket, és nem is módosíthatók, értékük „kijön” Két fajta származtatott mező létezik, a számított és a kikeresett mező Számított mező (Calculated Field) Ezek értékét más mezőkből számoljuk ki valamilyen kifejezéssel. Létrehozásuk és használatuk: Első lépésként a Fields Editor New Field menüpontjával létre kell hozni, és beállítani, hogy Calculated Field legyen, valamint nevet kell adni és be kell állítani az adattípust Ez után az adathalmaz OnCalcFields eseményében ki kell számítani a mező értékét Kikeresett mező (Lookup Field) Ezek értékét egy másik adathalmazból (táblából) kerestetjük ki a rendszerrel Ezek használatakor az első lépés ugyanez, csak Lookup Fieldként kell beállítani, és más paramétereket kell beállítani Ennek megértéséhez a tankönyvbeli példát használjuk…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Rekordműveletek Törlés: Delete metódus, pl. Table1.Delete; Üres rekord beszúrása: Insert metódus, pl. Table1.Insert; Üres rekord hozzáfűzése: Append metódus, pl. Table1.Append; Megadott tartalmú rekord beszúrására az InsertRecord, hozzáfűzésére az AppendRecord metódusok szolgálnak, ezeknél a paraméterek jelentik az egyes mezők értékeit. Fontos tudnivalók: A paraméterek sorrendje és típusa a Fields tulajdonságban megadott mezősorrendnek kell, hogy megfeleljen Ha a Fields tömb nincs feltöltve, akkor az adatbázis-beli fizikai sorrend a mezők sorrendje Ha egy mezőt nem akarunk feltölteni, értékének helyére a null konstanst kell írni A rekord javítható is, ehhez a táblát dsEdit állapotba kell állítani az Edit metódussal, vagy dbNavigator komponenssel, és a halmaz CanModify tulajdonságának igaznak kell lennie. Ha nem True értékű, annak oka lehet: A rekordot más felhasználó használja, emiatt zárolt (kliens-szerver és multi-tier adatbázis esetén) A táblát csak olvashatóként nyitottuk meg A javítások akkor mentődnek az adatbázisba, amikor kiadunk egy Post metódushívást, vagy lelépünk a rekordról Ha a változást még a lelépés előtt, vagy Post előtt el akarjuk vetni, a Cancel metódust kell meghívni Ha az aktuális rekord több mezőjét akarjuk megváltoztatni, a SetFields metódust kell használni, hasonlóan az Appendrecordhoz, annyi plusszal, hogy ha egy mezőt nem akarunk megváltoztani, a listába NIL értéket kell írni

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Keresés az adathalmazban Locate metódussal: Ha létezik a feltételnek megfelelő rekord, a rekordmutató rááll, és a metódus igaz értékkel tér vissza Indexelt és index nélküli mezőkre is használható Részleges egyezés és kis- és nagybetűk megkülönböztetése is beállítható Több mező szerinti keresés is beállítható Példák a tankönyvben Lookup metódussal: Ez a metódus nem mozgatja a rekordmutatót, hanem a talált rekord megadott mezőjének értékével tér vissza Működése ettől eltekintve megegyezik az előzővel Csak Table komponens esetén használható metódusok: Findkey: az aktuális index szerint keres, csak indexelt táblában, igazzal tér vissza, ha van a keresési feltételnek megfelelő rekord, és a rekordmutató is rááll. Csak teljes egyezést vizsgál. FindNearest: hozzávetőleges keresést végez, ha nincs találat, akkor a következő rekordra áll

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Szűrés az adathalmazban Az adathalmaz Filter tulajdonságába kell írnunk a szűrési feltételt (pontos szintaxis a tankönyvben) Ez után a Filtered tulajdonságot igazra kell állítani A FilterOption tulajdonsággal meghatározhatjuk, hogy részleges egyezést vizsgáljon, illetve, hogy a kis- és nagybetűket megkülönböztesse-e Szűrés után a RecordCount tulajdonság a szűrőn „fennmaradt” rekordok számát adja meg

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Adathalmazok szűréséről részletesen Feltételek mégegyszer: Filter tulajdonság beállítása Filtered tulajdonság true-ra állítása A Filter tulajdonságban használható operátorok: <, >, <=, >=, =, <> relációs operátorok AND, OR, NOT logikai operátorok A karakteres konstansokat felsővessző közé kell tenni Ha a Filter Optinons-nál be van állítva a részleges egyezés (foPartialCompare), akkor a * joker karakterként működik, egyébként csillag karaktert jelent

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek A TTable komponens Az adatbázis egy táblájának eléréséhez használjuk Akkor szolgáltat adatokat, ha be van állítva a DatabaseName, Tablename és Active tulajdonsága Fontosabb tulajdonságai (amelyek nincsenek meg más adathalmazoknál): Exclusive (logikai): Ha igaz, csak a mi alkalmazásunk férhet a táblához ReadOnly (logikai): csak olvasható tulajdonság TableName: a fizikai tábla neve, amihez rendelve van TableType: a tábla típusa (Paradox, dBase, stb.) Vannak még az indexekkel kapcsolatos tulajdonságai, ezeket ld. Tankönyv.

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés Adatelérési komponensek Master-detail (egy-sok) kapcsolat kialakítása táblák között Ebben az esetben a mestertáblából vett azonosító alapján szűrjük a segédtáblát (pl. adott ügyfél megrendeléseit jelenítjük meg, vagy adott olvasó által kölcsönzött könyveket Feltétele: a segédtáblának az ugyanezen azonosítót tartalmazó mező szerint indexeltnek kell lennie A megvalósítását példán keresztül mutatom be, de a lépések: A segédtáblában be kell állítani a MasterSource tulajdonságot a főtáblára A MasterField tulajdonság beállításához definiálni kell a kapcsolatot a két tábla mezőinek kijelölésével és a kapcsolat hozzáadásával a Field Link Designerben

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés A Datamodule Ez egy olyan speciális, láthatatlan form, amely az adatelérési komponenseink tárolására szolgál Mivel tartalma külön unitban tárolódik, ismertté kell tenni a többi form számára, azok uses listáiban való elhelyezéssel, hogy az ottani adatmegjelenítési komponensek használni tudják a datamodulon lévő datasource komponenseket Használatával elkülönül az adatelérési logika és a felhasználói felület elkülönítése Használatára komplex példát készítünk el: telefonkönyv adatbázis…

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés A Query komponens Segítségével SQL utasításokat futtathatunk a Delphi programból Ez a komponens is adathalmaz, az ott tárgyalt közös tulajdonságai ennek is megvannak A BDE lokális tábláknál az ún. Local SQL-t használja, amely szűkebb lehetőségekkel rendelkezik, mint a szabványos SQL, de a fontosabb utasítások elérhetőek belőle

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés A Query komponens Fontosabb speciális tulajdonságai: Params: paraméterek, paraméteres lekérdezéseknél használatos RequestLive (logikai): ha igaz értékű, a lekérdezés eredményhalmaza szerkeszthető SQL (TStrings): a legfontosabb tulajdonság, ebben tárolódik az SQL utasítás, amely az Open metódus meghívásakor, vagy az Active tulajdonság igazra állításakor, esetleg az ExecSQL metódus meghívásakor fut le ParamCheck (logikai): ha igaz, az SQL tulajdonság minden megváltozásakor újra generálódnak a paraméterek

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés A Query komponens Fontosabb speciális metódusai: ExecSQL: a lekérdezés futtatása. Olyan esetben használjuk, amikor a lekérdezés nem ad vissza eredményhalmazt Prepare: ha lefuttatjuk, a BDE vagy az adatbázisszerver előre lefoglalja a lekérdezéshez szükséges erőforrásokat, emiatt a lekérdezés működése gyorsabb lesz UnPrepare: a Prepare-rel lefoglalt erőforrások felszabadítása

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Adatbáziskezelés A Query komponens Használati lehetőségei: Tervezési időben is beállítható az SQL tulajdonsága Futási időben beállítható programból: Query1.Close; Query1.SQL.Clear; Query1.SQL.Add( …); {itt állítjuk be soronként az SQL utasítást} Query1.Open; Futási időben beállítható egy előre megírt fájlból: Query.Close; Query1.SQL.LoadFromFile( <fájlnév>); Query.Open; Futási időben feltölthető bármely más TStrings tipusú objektumból, például Memo komponens tartalmából: Query1.SQL.Assign(Memo1.Lines);

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből A Printer objektum Ezzel tetszőleges nyomtatási képet, szöveget, képet, grafikát is nyomtathatunk Használatához szükséges a Printer unit, amit a form (amelyről nyomtatni akarunk) valamelyik Uses listájában szerepeltetni kell A nyomtatás ezzel az objektumnál nyomtatási munkákból (print jobs) áll, amelyek önálló egységként kezelhetőek Fontosabb tulajdonságai: Aborted:Boolean; Ha igaz értékű, akkor a felhasználó megszakította a nyomtatást Canvas:TCanvas; a már többször említett vászon, ebben az esetben a kinyomtatandó felület bittérképes reprezentációja. Erre kirajzoljuk a nyomtatási képet, majd nyomtatunk Capabilities: lehetőségek, a printer driver által beállított értékeket, mégpedig a másolatok számát, a tájolást és a leválogatást Copies:Integer; A nyomtatandó példányok száma

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből A Printer objektum Fontosabb tulajdonságai: Fonts:TStrings; A nyomtató által támogatott betűtípusok listája (a nyomtató beépített betűtípusain kívül a Windows True Type betűtípusai is fel vannak sorolva itt) Orientation: tájolás, két lehetséges konstans értéke van: poPortrait: álló, és poLandscape: fekvő PageHeight:Integer; A PrinterDialog ill. PrinterSetupDialog párbeszédpanelen beálított lap magasságát tartalmazza pixelben (A4 és 300 dpi esetén 3357 pixel) PageNumber: a nyomtatási munka lapjainak száma, a NewPage metódus hívása növeli eggyel PageWidth:Integer; lapszélesség pixelben (A4, 300 dpi: 2400 pixel) Printers:TStrings; A Windowsban installált nyomtatók neveinek listája PrinterIndex:Integer; A Printers-beli sorszáma a kiválasztott nyomtatónak (0-val kezdődően). Ha értéke -1, az alapértelmezett nyomtatóra nyomtathatunk Printing:Boolean; Akkor igaz értékű, ha épp nyomtatás folyik Title:String; A nyomtatási munka neve a nyomtatásvezérlőben

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből A Printer objektum Fontosabb metódusai: Abort eljárás: megszakítja a nyomtatási folyamatot, és törli a további, még nem nyomtatott részeket. BeginDoc eljárás: új nyomtatási munkát kezd. EndDoc eljárás: befejezi az aktuális nyomtatási munkát. Ennek hívása után indul a nyomtatás a nyomtatón. (Ha a nyomtatást kezdeményező formot bezárjuk, automatikusan lefut.) NewPage eljárás: új lapot nyit a nyomtatási munkában; ezzel együtt a Canvas objektum Pen tulajdonságának pozícióját (0,0)-ra állítja

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből A Printer objektum A nyomtatás folyamata A nyomtató beállítása (nem kötelező): Meghívjuk a PrinterDialog, vagy PrinterSetupDialog komponens Execute metódusát. Ha igazzal tér vissza, a beállításokat elvégezte rendszer (OK-ra kattintott a felhasználó) PrinterDialog esetén, ha hamissal tér vissza, nem végezzük el a nyomtatást Printer.BeginDoc; {a nyomtatás megkezdése} Rajzolás, írás a Canvas objektumra Printer.Canvas.Draw, TextOut, LineTo, stb. (ld. tankönyv, sokszorosított cikk) A nyomtatás befejezése, azaz a feladat elküldése a nyomtatásvezérlőnek: Printer.EndDoc. Ekkor éled fel a nyomtató, feltéve, hogy a sorban nincs előtte még feladat

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Csak szöveg nyomtatása Mikor van erre szükség? Pl. ha szöveges fájlt akarunk kinyomtatni Több lehetőségünk van a megvalósításra: DOS parancsok használatával, a DOS-beli karaktertábla használatával, de ezzel csak teljes fájl nyomtatható ki Az erre használható parancsok a PRINT és a COPY: WinExec(StrNew(‘Print SZOVEG.TXT’),SW_HIDE); WinExec(StrNew(‘Copy SZOVEG.TXT’,SW_HIDE); Windows karaktertábla használatával, a Windows generic/text only nyomtatódriver használatával: Var f:System.Text; . AssignPrn(f); ReWrite(f); Writeln(f,’Ezt kell kinyomtatni’); CloseFile(f);

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád Olyan komponenseket tartalmaz, amelyek segítségével tetszőleges kinézetű, adatbázisfüggő elemeket tartalmazó nyomtatási feladatok elvégezhetőek A Delphi nem tartalmazza alapesetben ezeket a komponenseket, külön kell felinstallálni a családot: Delphi 7-hez a qr404pd7.exe tartalmazza a telepítőt, ezt kell futtatni (letölthető a weblapomról) Ezután meg kell nyitni a c:\Progam Files\Borland\Delphi7\quickrpt\QR4DesignD7.bpl fájlt Delphiben Klikk az Install gombra a megjelenő ablakban, és a komponenspaletta legutolsó fülére felkerülnek a Quickreport komponensek

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád A jelentés felépítése: Egy erre a célra kinevezett formon el kell helyezni egy QuickRep komponenst, ez a jelentés alapja Ez után QRBand (szakasz) komponenseket lehet felhelyezni a QuickRep-re, ezek fejlécet, törzset, csoportosítási lehetőséget, láblécet, stb. jelenthetnek Harmadik lépésként a QRBand-eken el kell helyezni a tényleges megjelenítést végző komponenseket, ezek neve a hasonló komponensek nevével megegyezik, csak QR előtagot kap: QRLabel, QRImage, QRDBText stb. Ezeknek a komponenseknek rengeteg tulajdonságuk, metódusuk van

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád A QuickRep fontosabb tulajdonságai: Page: segítségével a papírméretet, margókat, oszlopok számát, tájolást lehet beállítani PrinterSettings: a másolatok számát, az első és utolsó nyomtatandó oldalt lehet beállítani PrintIfEmpty:Boolean; ha igaz, kinyomtatja az olyan oldalt is, aminek törzsszakaszában nincs adat ReportTitle:String; a jelentés neve a nyomtatásvezérlőben Dataset: a hozzá kapcsolódó adathalmaz, ebből jelenít meg adatokat (jó, ha az ezt reprezentáló objektum a QuickRep formján van, de ez nem kötelező)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád A QuickRep fontosabb metódusai: Print: Ennek hatására nyomtatódik ki Preview: Nyomtatási képet megjelenítő ablakot jelenít meg (ehhez nem kell külön formot készítenünk!!!) PrinterSetup: Nyomtatóbeállításokat lehetővé tevő szabványos ablakot jelenít meg ExportToFilter: Segítségével a jelentés különböző formátumú fájlokba exportálható (HTML, RTF, PDF, XLS): (Tempfile: a készítendő fájl neve, Report a QuickRep komponens neve) uses QuickRpt, Qrctrls, QRPDFFilt, QRWebFilt, QRExport; (ezt abba unitba kell beletenni, ahol az ExportToFilter hívása van) . Report.ExportToFilter(TQRGHTMLDocumentFilter.Create(TempFie)); Report.ExportToFilter(TQRPDFDocumentFilter.Create(TempFile)); Report.ExportToFilter(TQRRTFExportFilter.Create(TempFile)); Report.ExportToFilter(TQRXLSFilter.Create(TempFile));

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád A QRBand komponenssel állíthatjuk be a jelentés szakaszait. Azt, hogy milyen fajta legyen, a BandType tulajdonsággal szabályozhatjuk: RbColumnHeader: Oszlopfejléc RbDetail: Jelentés törzs (ez annyiban különbözik a többitől, hogy annyi soros, ahány rekordból áll az adathalmaz) RbGroupFooter: Csoportláb RbGroupHeader: Csoportfej RbPageFooter: Oldal fejléc RbPageHeaser: Oldal lábléc RbSummary: Összegzés RbTitle: Címsor RbSubDetail: Master-Detail kapcsolatban a masterhez kapcsolódó adatok Minden szakasztípusnak megvan a maga helye a jelentésben, ezért ha a típust megváltoztatjuk, a QRBand mozog az oldalon belül (pl. a PageHeader mindig feljebb van, mint a Title, és a PageFooter mindig a Detail alatt, stb.) A QuicReportnak vannak beépített függvényei (SUM, COUNT), ezeket a Summary szakaszon kell elhelyezni, és a Detail szakasz rekordjaira vonatkoznak

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Nyomtatás Delphiből Nyomtatás adatbázisból (jelentéskészítés) – a QuickReport komponenscsalád A QRBand komponenseken megjelenítési komponenseket lehet elhelyezni: Az első csoportba az adatfüggetlen komponensek tartoznak, ezekkel staitkus szövegeket, képeket jeleníthetünk meg: QRLabel QRShape QRImage QRRichText QRMemo QRExprMemo A második csoportba az adatmegjelenítési komponensek QuickReport megfelelői tartoznak: QRDBText QRDBRichText QRDBImage A harmadik csoportba két komponens tartozik: QRExpr: Ezt a Summary szakaszon lehet használni, és a beépített függvények használatához szükséges (kifejezés írható az Expression tulajdonságába egy saját editorral, és ennek eredménye jelenik meg a jelentésben) FONTOS! Adatmezőt összegezni csak a QuickRep formján elhelyezett datasetből tud! QRSysData: különböző rendszeradatokat lehet vele megjeleníteni pl. a fejlécben vagy láblécben (a jelentés készítésének dátuma, ideje, oldalszám stb.)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése Követelmények a help-rendszerrel kapcsolatban Első követelmény, hogy legyen Legyen helyzetérzékeny: Mindig a felhasználó aktuális tevékenységéhez szükséges segítséget nyújtsa Lehessen benne ugrani egyik témakörből a másikba (hipertext) Lehessen benne keresni, és legyen tárgymutatója Ezeket a követelményeket meg lehet valósítani a Windows mindkét súgófajtájával: WinHelp: hagyományos súgófájl (.HLP kiterjesztésű) HTML Help: Web-böngészővel megnyitható súgórendszer, ez a korszerűbb, újabb, de az elkészítése bonyolultabb Mi csak a WinHelp-et tárgyaljuk, de a segédanyag tartalmazza a másik súgó elkészítését is

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése A WinHelp súgórendszer felépítése Az alkalmazás mellett, .HLP kiterjesztésű állomány tartalmazza Legfelsőbb szinten könyvtárakból (témakör) áll, amit a súgó tartalomjegyzékének megnyitásakor könyv ikon jelez A könyvtárak témákból (topic) állnak, amit kérdőjeles ikon jelenít meg Egy súgó legalább egy könyvtárból, és legalább egy témakörből áll Az alkalmazás közben, a helyzetérzékenység biztosítása a témák megfelelő megjelenítésével történik A témák tartalmazzák a súgószöveget, ezen kívül tartalmazhatnak: Ugróhivatkozást (jump link) egy másik témakörre Felbukkanó hivatkozást (pop-up link), amely szintén egy másik témakört jelenít meg (pl. szómagyarázat céljából) Makróhivatkozást (ezt nem tárgyaljuk) A súgófájl elkészítéséhez a Microsoft Help Workshop segédprogramot használjuk, amely a Delphi programkönyvtárában, a Help/Tools könyvtárban lévő HCW.EXE Ez egy speciális fordítóprogram, amelynek több bemeneti állománya van, kimenete pedig a .HLP fájl

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése A Microsoft Help Workshop bemeneti fájljai Topic fájl: Rich Text Formátumú dokumentum, bármilyen szövegszerkesztővel elkészíthető (pl. Word) Ez tartalmazza a súgótémák szövegét, egy témát egy oldalon Az oldal lábjegyzetei tartalmazzák a súgó számára az azonosító információkat Ezeket különböző azonosító karakterrel kell elkészíteni, a fontosabbak: #: a témakör azonosítója (topic ID), amely alapján a súgórendszer megtalálja. Nem ajánlott az ékezet használata benne. K: kulcsszó, ezt a WinHelp a tárgymutató fülön megjeleníti. Azonos témakörbe tartozó témáknál megadható ugyanaz a kulcsszó is $: a téma címe, ha ugyanaz a kulcsszó tartozik több témához, a tárgymutatóban ennek segítségével történik az azonosítás Az ugrásokat is a topic fájlban kell elkészíteni, speciális formátumú szöveggel: Jump: a kattintható szöveg duplán aláhúzott, a cél topic azonosítója rejtett, közvetlenül a link mögött (szóköz sem lehet!!!) Pop-up: a kattintható szöveg egyszer aláhúzott, a cél topic azonosítója rejtett, közvetlenül a link mögött

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése A Microsoft Help Workshop bemeneti fájljai Contents fájl: A HCW.EXE-ben kell elkészíteni A File/New menüpontban meg kell határozni a fájl helyét és nevét Ez után a jobb oldalon található nyomógombokkal el kell készíteni a könyvtárakat és témákat Könyvtárnál elég a nevet megadni, témánál pedig meg kell határozni a témakör azonosítót is hozzá (topic ID)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése A Microsoft Help Workshop bemeneti fájljai Project fájl: A HCW.EXE-ben kell elkészíteni Ez a súgó fő forrásállománya, ennek segítségével fordítja le a HCW.EXE a részeket A File/New menüpontban meg kell határozni a fájl helyét és nevét Az Options gombbal általános beállításokat tehetünk (Súgó ablak fejléce, stb.) A Files gombbal rendelhetjük a projekthez a témafájlt, és a tartalomjegyzéket A Map gombbal minden témához egy azonosítószámot rendelhetünk (1-gyel kezdődően), EZ ALAPJÁN KELL BEÁLLÍTANI A DELPHIBEN A KOMPONENSEK HELP CONTEXT TULAJDONSÁGÁT A HELYZETÉRZÉKENYSÉGHEZ

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Windows súgó készítése A súgó lefordítása, további tevékenységek A compile gombbal ezek után le kell fordítani a súgót Ennek hatására a project fájl nevével megegyező .HLP fájl keletkezik, a hibák jegyzéke pedig egy logfájlban található Az elkészült súgót hozzá kell rendelni az alkalmazáshoz: Delphiben ez a Project/Options menüpontban, az Application fülön tehető meg, a Help file rovatban Ezen kívül a programban a szükséges komponensek Help Context tulajdonságát kell beállítani a MAP szekciónak megfelelően, de elég a tároló objektumokét, a rajta lévőkét nem feltétlenül muszáj, mert átveszik a szülőobjektumuk eme tulajdonságát Ha szükséges, ez a tulajdonság programból is megváltoztatható Természetesen a beállítások a program újrafordítása után lépnek érvénybe

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Alkalmazás-szintű beállítások Delphiben Ezek mindegyike a Projects/Options menüpontban találhatóak A Version Info fülön az .EXE fájlba belefordíthatjuk a program verziószámát, ezen kívül a készítő nevét, programinformációkat, amelyeket a windows megjelenít Az Application fülön beállíthatjuk: A program ikonját (.ICO fájl, elkészíthető Paint-tel, megadott méretű bittérképes kép (24*24 képpont) A súgófájlt (és a súgó ablak címét) Az esetleges kimeneti fájl nevét, útvonalát A Compiler fülön beállíthatjuk: A különböző ellenőrzéseket, mint TP-ban (Range Checking, stb.) Azt, hogy a program belefordítsa-e az .EXE-be a hibakeresési információt (végleges verzióba nem kell) Különböző szintaktikai beállításokat (pl. függvények eljáráskénti használatának engedélyezése: extended syntax) A Forms fülön beállíthatjuk: Hogy a program ablakaiból melyik jöjjön létre automatikusan a program indításakor (memóriakímélésre jó)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése A Delphihez a Borland mellékeli az Installshield Express programot ilyen célra Ennek hátránya, hogy csak angol nyelvű telepítőt lehet létrehozni vele, és a BDE telepítése hibás Ezért mi az InnoSetup szabadon felhasználható szoftverrel, és ennek az ISTool nevű kiegészítőjével foglalkozunk Az InnoSetup lehetővé teszi magyar nyelvű telepítőkészlet készítését, és van mód a különleges Borland komponensek (pl. BDE) telepítését is Weboldalamon megtalálható az InnoSetup 5.2.1 és az ISTool 5.2.1 is (a legfrissebb InnoSetup az 5.2.3, de ehhez még nincs meg az ezt támogató ISTool)

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az InnosSetup forrásállománya egy saját speciális nyelvén írt script, amit lefordítva megkapjuk a telepítőkészletet A script megírása kényelmetlen, és sok hiba lehetőséget rejt, ezért készült az ISTool, amely grafikus felület a script létrehozásához Az ISTool önmagában nem működőképes, a script lefordításához az InnoSetup-ot hívja, vagyis működéséhez ennek telepítve kell lennie Mellékesen az ISTool magyar nyelvű..

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az ISTool használata Lépés: A telepítő általános beállításai Ezek az Options gomb alatt találhatóak. Kötelezően beállítandó (mindkettő az alkalmazás fülön): Az alkalmazás neve A verziószám Legtöbbször beállítjuk: A telepítési könyvtár – Alkalmazási könyvtár fülön ({pf}\ azt jelenti, hogy a Program Files-ba kerül alkönyvtárként a létrehozandó könyvtár, ezért ezt ne töröld ki!) Ugyanitt, ha kikapcsoljuk a könyvtár lapot, nem lehet megváltoztatni a telepítési könyvtárat Be lehet kapcsolni a könyvtár nem létezik figyelmeztetést, ekkor rákérdez, hogy létrehozza-e A program csoport fülön lehet beállítani, milyen csoportba kerüljön a program ikonja A fordító fülön be lehet állítani a forrás és célkönyvtárat Ugyanitt megadhatjuk a setup.exe verzióját, copyright információkat A megjelenés fülön színeket, feliratokat állíthatunk be A lapok fülön különböző lapokat, üdvözlőlapot, stb, ki és be lehet kapcsolni A lemez darabolás fülön állíthatjuk be, ha floppyra akarjuk a telepítőt elkészíteni

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az ISTool használata Lépés: A script szakaszai (szekciók) Ezek a Sections gomb segítségével, vagy a bal oldali navigációs fából is elérhetők A Szkript szakaszban megtekinthetjük és javíthatjuk az elkészült szkript forrásszövegét A Fájlok szakaszban adhatjuk meg a telepítéskor a célgépre másolandó fájlokat. Mindegyiknél kötelező megadni (A helyi menü Új elem, illetve létező fájlnál a Tulajdonságok menüpontban) A forrást A cél könyvtárt (itt beépített rendszerváltozók segítségével rendszerkönyvtárakba is telepíthetünk) Ugyanitt megadhatjuk a fájl nevét, ha a másolás során át szeretnénk nevezni, és rengeteg opciót (attribútumok, hogy újabb verzió felülírja-e az eredetit, időbélyeg alapján felülírjuk-e vagy nem, stb.) A helyi menü jobb gombjával leellenőrizhetjük, hogy a forrásfájlok megvannak-e

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az ISTool használata Lépés: A script szakaszai (szekciók) Az Ikonok szakaszban a telepítendő ikonokat adhatjuk meg: A felső rovatban megadhatjuk az ikon nevét Alatta kiválaszthatjuk a hozzá tartozó fájl nevét a feltelepítendő fájlok listájából Ez után paramétereket, munkakönyvtárat, stb. állíthatunk be. (ikonfájl, ha nem az alkalmazásba befordított ikont használjuk, gyorsbillentyű az ikonhoz…) A jobb oldalon különböző kapcsolók vannak, melyek többsége MS-DOS ablakot használó alkalmazásnál hatásos, de pl. a programkönyvtár használata hasznos (a registryből veszi az alkalmazás helyét) Az INI fájl szekcióban inicializációs állományt adhatunk meg A Registry szekcióban a program által elkészítendő regisztrációs adatbázis-bejegyzést készíthetünk

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az ISTool használata Lépés: A script szakaszai (szekciók) A következő négy szakasz hasonló: Telepítéskor töröl (csak név és típus adható meg) Telepítéskor futtat (itt futtatási paraméterek is megadhatók) Eltávolításkor töröl (csak név és típus adható meg) Eltávolításkor futtat (futtatási paraméterek is megadhatók) Az Üzenetek szekcióban különböző telepítési eseményekhez a beépítetthez képest új üzenetek adhatók meg (pl. magyarítás) Ki kell választani az eseményt, ekkor megadja az eredeti üzenetet, amely felülbírálható Az Alternatív üzenetek szekcióban új eseményazonosítókat és üzeneteket definiálhatunk A Típusok és Összetevők szakasz különböző telepítési típusok létrehozásához szükséges A Nyelvek szakaszban adható(k) meg a telepítő nyelve(i) Ha egyet adunk meg, azzal fut a telepítő Ha többet, a telepítő nyelv-választó ablakkal indul ISTool szekciók: Itt a FORDÍTÁS előtt és után futtatandó állományokat adhatjuk meg

11. Alkalmazásfejlesztés grafikus felhasználói környezetben Telepítőkészlet készítése Az ISTool használata Lépés: A script fordítása, a kész telepítő kipróbálása A kész script a Compile gombbal fordítható le Ekkor a program felajánlja a kipróbálást is Figyelem, a Teszt gomb mindig a legutoljára már lefordított telepítőt futtatja le, nem fordítja automatikusan újra a módosított scriptet!!!