Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "Programozás és programozás módszertan Alkalmazásfejlesztés grafikus környezetben – Delphi 2007-2008."— Előadás másolata:

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

2 11. Alkalmazásfejlesztés grafikus felhasználói környezetben I. Á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

3 11. Alkalmazásfejlesztés grafikus felhasználói környezetben II. 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 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

4 11. Alkalmazásfejlesztés grafikus felhasználói környezetben II. 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

5 11. Alkalmazásfejlesztés grafikus felhasználói környezetben III. 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

6 11. Alkalmazásfejlesztés grafikus felhasználói környezetben IV. 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

7 11. Alkalmazásfejlesztés grafikus felhasználói környezetben V. 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

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

9 11. Alkalmazásfejlesztés grafikus felhasználói környezetben VII. 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

10 11. Alkalmazásfejlesztés grafikus felhasználói környezetben VII. 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 11. Alkalmazásfejlesztés grafikus felhasználói környezetben VIII. 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

12 11. Alkalmazásfejlesztés grafikus felhasználói környezetben VIII. 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.

13 11. Alkalmazásfejlesztés grafikus felhasználói környezetben IX. 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

14 11. Alkalmazásfejlesztés grafikus felhasználói környezetben X. 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

15 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XI. Ü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( ) 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

16 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XI. Ü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_ABORTRETRYIGNORE3 gomb: Abort, Retry, és Ignore. –MB_OK1 gomb: OK. –MB_OKCANCEL2 gomb: OK és Cancel. –MB_RETRYCANCEL2 gomb: Retry és Cancel. –MB_YESNO2 gomb: Yes és No. –MB_YESNOCANCEL3 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_ICONHANDstoptábla, X (Win verzió függő) • A fentieket lehet kombinálni, ilyenkor össze kell adni az egyes konstansokat, pl: MB_ICONERROR+MB_OK

17 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XI. Ü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ó: –KonstansSzámértékMegnyomott gomb –IDOK1OK –IDCANCEL2Cancel –IDABORT3Abort –IDRETRY4Retry –IDIGNORE5Ignore –IDYES6Yes –IDNO7No

18 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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

19 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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

20 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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.)

21 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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.

22 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. Adatok bevitele •Többsoros szövegdoboz (Memo) • A tartalma a Lines, TStrings tipusú tulajdonságban tárolódik •Ennek hasznos metódusai a SaveToFile( ) és a LoadFromFile( ) 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

23 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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

24 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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( ) – a lista végére új elemet tesz be • Clear – törli az összes elemet • Delete( ) – törli a megadott sorszámú elemet • Insert(, ) – új elemet szúr be a megadott helyre • Move(, ) – egy elemet elmozgat adott helyről adott helyre • LoadFromFile( ) – megadott fájlból feltölti a lista tartalmát • SaveToFile( ) – 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

25 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XII. 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

26 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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

27 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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

28 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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

29 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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

30 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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

31 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIII. 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…

32 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIV. 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)

33 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIV. 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

34 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XV. 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

35 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVI. 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)

36 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVII. 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

37 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVII. 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

38 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVII. Kivételkezelés •A Try..Except utasítás • Bonyolultabb alakja: Try {védett blokk utasításai} Except on do ;.. on do on do else

39 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVII. 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: Tryi:=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

40 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVII. 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…

41 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 1.Adatbáziskezelő alkalmazások általános felépítése • Az ilyen alkalmazások 3 szintből (rétegből) állnak: a)Adatelérési réteg b)Alkalmazáslogika c)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: a)Egygépes adatbáziskezelő alkalmazás b)File-szerver architektúra c)Kliens-szerver architektúra d)Többrétegű architektúra (adatbázisszerver, alkalmazásszerver, kliensprogram)

42 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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:

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

44 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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:

45 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

46 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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:

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

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

49 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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)

50 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

51 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

52 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

53 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

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

55 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

56 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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’;

57 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

58 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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ő a.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 b.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…

59 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

60 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

61 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

62 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

63 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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.

64 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 2.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

65 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 3.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…

66 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 4.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

67 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 4.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

68 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 4.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

69 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XVIII. Adatbáziskezelés 4.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( ); 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.Close;Query1.SQL.Assign(Memo1.Lines);Query1.Open;

70 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 1.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

71 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 1.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

72 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 1.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

73 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 1.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

74 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 2.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);..

75 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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

76 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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

77 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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ő)

78 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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));

79 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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

80 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XIX. Nyomtatás Delphiből 3.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.)

81 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 1.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

82 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 2.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

83 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 3.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

84 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 3.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)

85 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 3.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

86 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XX. Windows súgó készítése 4.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

87 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXI. 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ó)

88 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. 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 és az ISTool is (a legfrissebb InnoSetup az 5.2.3, de ehhez még nincs meg az ezt támogató ISTool)

89 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. 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ű.. 

90 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. Telepítőkészlet készítése •Az ISTool használata 1.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

91 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. Telepítőkészlet készítése •Az ISTool használata 2.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

92 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. Telepítőkészlet készítése •Az ISTool használata 2.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

93 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. Telepítőkészlet készítése •Az ISTool használata 2.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

94 11. Alkalmazásfejlesztés grafikus felhasználói környezetben XXII. Telepítőkészlet készítése •Az ISTool használata 3.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!!!


Letölteni ppt "Programozás és programozás módszertan Alkalmazásfejlesztés grafikus környezetben – Delphi 2007-2008."

Hasonló előadás


Google Hirdetések