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

Hasonló előadás


Az előadások a következő témára: "Programozás és programozás módszertan"— 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
Á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
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
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 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
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
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
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
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…

9 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

10 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 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

12 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.

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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.)

21 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.

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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…

32 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)

33 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

34 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

35 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)

36 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

37 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

38 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

39 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

40 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…

41 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)

42 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:

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

44 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:

45 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

46 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:

47 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…

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

49 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)

50 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

51 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

52 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

53 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

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

55 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

56 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’;

57 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

58 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…

59 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

60 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

61 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

62 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

63 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.

64 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

65 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…

66 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

67 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

68 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

69 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);

70 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

71 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

72 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

73 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

74 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);

75 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

76 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

77 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ő)

78 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));

79 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

80 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.)

81 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

82 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

83 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

84 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)

85 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

86 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

87 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ó)

88 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 é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
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
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

91 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

92 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

93 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

94 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!!!


Letölteni ppt "Programozás és programozás módszertan"

Hasonló előadás


Google Hirdetések