Negyedik Generációs Nyelvek ( Delphi ) 1. Windows bevezetés 2. Delphi alkalmazások felépítése 3. Delphi fejlesztőkörnyezet 4. Standard komponensek
1. WINDOWS BEVEZETÉS
Bevezetés WINDOWS Lehetővé teszi az egymással kommunikáló programok párhuzamos futtatását és a programok szabványos - ablakokra alapozott- grafikai megjelenítését. Alkalmazások: DOS alapúak - DOS-t és BIOS-t felhasználók - Direkt hardverkezelők Windows alapúak Az alkalmazás egy méretezhető, mozgatható ablakban fut. Multitasking 1 program futtatása több példány- ban, ill. több program párhuzamos futtatása
Bevezetés Windows rendszer = dinamikusan szerkeszthető könyvtárak Megkötés: Egy Windows program minden része Windows alapelven kell működjön. Objektum orientált programozás Minden ablak egy objektum: Adatai: címe, menüje, színe, kurzor formája, ikonja,... Viselkedése: reakciója a különböző külső és belső eseményekre
Egér bal gomb lenyomása Bevezetés Windows eseménykezelés, üzenetvezérlés Esemény Egy külső történés ( egy billentyű leütése, az egérgomb lenyomása) Az eseményeket a Windows üzenetekké alakítja át. Üzenet Egy rekord, mely tartalmaz egy azonosítót, és további adatokat. WM_LBUTTONDOWN Azonosító = 201 Adatok: X, Y a többi egérgomb és a CTRL, SHIFT bill. állapota Egér bal gomb lenyomása
Az 'A' billentyű leütésének feldolgozása Üzenetek feldolgozása, kezelése Az üzeneteket a Windows rendszer szétszórja megfelelő szabályok szerint. Alkalmazás Főprogram 1. Ablak függvény 2. Ablak függvény Windows Windows üzenetsor Alkalmazás üzenetsor A Kiírás Az 'A' billentyű leütésének feldolgozása
Nem sorolt üzenetek az ablakot érintő üzenetek, mint pl. az ablak létrehozása, bezárása Pl. Exit az alkalmazás ablakában Alkalmazás Főprogram Főablak függvénye Windows Windows üzenetsor Alkalmazás üzenetsor WM_DESTROY WM_QUIT Alkalmazás befejezése
Tehát: Üzenetek feldolgozása, kezelése Esemény üzenet Üzenet rendszerszintű üzenetsor alkalmazás üzenetsor (belső üzenetek is) Az alkalmazás sorban kiolvassa a saját üzeneteit ("üzenetkezelő ciklus"), majd utasítja a Windows-t, hogy a megfelelő ablakfüggvényt hívja meg Az ablakfüggvény feldolgozza az üzenetet (egy többágú szelekcióban).
Üzenetek feldolgozása, kezelése Végül, a Windows átadja a vezérlést a főprogramnak. Megkezdődhet a soron következő üzenet feldolgozása. Több párhuzamosan futó alkalmazás esetén, a Windows létrehoz mindegyikük számára egy-egy üzenetsort.
Minden Windows-os alkalmazásban van: Üzenetek feldolgozása, kezelése Összefoglalás Minden Windows-os alkalmazásban van: Egy "üzenetkezelő ciklus" Ahány ablak, annyi ablakfüggvény Egyéb függvények és eljárások
2 DELPHI ALKALMAZÁSOK
A Delphi alkalmazás felépítése Főprogram, projektállomány (*.DPR) Képernyőtervek (*.DFM) és az azok viselkedését leíró egységek (*.PAS) Egyéb egységek (esetleg), melyek könyvtárakként működnek Külső erőforrások (*.BMP,*.ICO,*.CUR, *.HLP) Minden Delphi alkalmazást külön könyvtárban tároljunk!
Delphi projektállomány Dinamikusan szerkeszthető könyvtárak *.DPR Unit (form) *.PAS Form szöveges leírása *.DFM Unit *.PAS Erőforrás- állomány *.RES LefordítottUnit *.DCU LefordítottUnit *.DCU Delphi alkalmazás *.EXE Dinamikusan szerkeszthető könyvtárak *.DLL
Futáskor: Form (Űrlap) Szerkesztő-doboz Nyomógombok
Eljárások procedure {Osztálynév.}Eljárásnév(paraméterek); direktívák; Lokális adatok, metódusok; begin utasítások; end;
Függvények A függvények abban különböznek az eljárásoktól, hogy hívásuk után visszatérnek egy előre megadott típusú értékkel Function {Osztálynév.}Függvénynév(paraméterek) : visszatérési érték típusa; direktívák; Lokális adatok, metódusok; begin utasítások; Függvénynév:=visszatérési érték; vagy Result:= visszatérési érték; end; Megj.: a Pascaltól eltérően használhatjuk a függvénynév helyett a Result kulcsszót
A Delphiben 1 fájlban lehet több osztály is Az Object Pascal osztálymodell 1 osztály= 1 fájl A Delphiben 1 fájlban lehet több osztály is Type TOsztály = Class ( TŐsOsztály) Mezőlista ; Metóduslista ; Jellemzőlista ; End;
Előfordulásai dinamikusan jönnek létre Egyszeres öröklődés Az Object Pascal osztálymodell Előfordulásai dinamikusan jönnek létre Egyszeres öröklődés Minden új típusnak van őse, a TObject (A közös ős előnyét lásd később) Mezőlista: adatmezők leírása
Adathozzáférés korlátozása A hozzáférésnek-amely adatokra, metódusokra vonatkozik- a Delphiben 4 szintje van Private (privát) Protected (védett) Public (publikus) Published (publikált) Private (privát) adatok és metódusok: Csak az illető osztály metódusaiból érhetők el Protected (védett) adatok és metódusok:A kurrens osztály és a leszármazott osztályok metódusaiban láthatók Public (publikus) adatok, jellemzők és metódusok: Kivűlről(objektumból) is elérhetők Published (publikált) adatok és jellemzők:Mint a public, de tervezési időben is elérhetők(Objektum felügyelőben-Object Inspector lsd. később)
Adathozzáférés korlátozása Ezeket a kulcsszavakat az osztálydeklarációban használjuk, tetszőleges számban elhelyezhető, először az adatokat kell felsorolnunk, majd a metódusokat Type TOsztaly=Class Private Adatok; Metódusok; Protected End;
Egységek Egység A főprogramhoz hozzászerkeszthető tárgykód Fordítás után .TPU kiterjesztést kap A tárgykód mérete < 64 Kbyte Az egység célja: Korábban kipróbált, bevált programrészek hozzáférhetővé tétele más programokban Megvalósítási részletek elrejtése A kód mérethatárának kiterjesztése Az egységnek meghatározott feladatköre ("kohéziója") van!
Egységek Az egység (Unit) felépítése Egységfej Illesztő (interface) rész Kifejtő (implementációs) rész Végrehajtó (inicializációs) rész
Egységek Az egység részei: Egységfej Illesztő rész Kifejtő rész Unit egységnév; Illesztő rész Interface Globális deklarációk (változók, típusok, konstansok, eljárásfejek...) Kifejtő rész Implementation A globális és lokális eljárások kifejtése Végrehajtó rész Egységek Begin Előkészítő tevékenységek End.
Egységek Egységek használata Egység szerkesztése, fordítása, tárolása Az egység forráskódját ugyanúgy szerkesztjük, mint bármely programot. Az egységnévnek meg kell egyeznie a .PAS állomány könyvtári nevével! Az egységet lemezre fordítjuk. A .TPU állomány a fenti könyvtárban keletkezik.
Egységek Egységek használata (folytatás) Az egységet használó program fordítása Ne feledkezzünk meg a USES egységnév utasításról! A programot célszerű a Compile/Make (F9) menüpont szerint fordítani (ha megváltozott az egység forráskódja, akkor az a programmal együtt ismételten lefordítódik).
Egységek Az egységet használó program futtatása, belövése Egységek használata (folytatás) Az egységet használó program futtatása, belövése Ha a programot is lemezre fordítottuk (.EXE), az mindazt tartalmazza, ami a futtatáshoz kell (a .TPU állomány már nem szükséges). Forrásnyelvi nyomkövetés (F7) az egység rutinjaiban akkor lehetséges, ha az egység forráskódja is elérhető.
A program belépési pontja a main ! A projektállomány szerkezete Új projekt létrehozásakor a keretrendszer létrehoz egy projektállományt, egy ablakot, és az ehhez tartozó egységet. program pUdvozles; uses Forms, uUdvozles in 'uUdvozles.pas' {frmUdv}; {$R *.res} begin Application.Initialize; Application.CreateForm(TfrmUdv, frmUdv); Application.Run; end. A program belépési pontja a main !
Képernyőterv leíró állomány (*.DFM) A formon levő objektumok grafikus (külalaki) tulajdonságait tartalmazza binárisan Vizuális tervezéssel jönnek létre Megtekinthetők szöveges formában is
A formhoz tartozó egység (*.PAS) tartalmazza a megtervezett formosztály definícióját és a rajta levő komponensek viselkedését. Mindegyik űrlaphoz(formhoz) tartozik egy Pas állomány
3. FEJLESZTŐKÖRNYEZET
Bevezetés A Delphi fejlesztő környezet jellemzői: Windows-os alkalmazások (16 és 32 bit) Vizuális fejlesztői eszköz, RAD (Rapid Application Development) 4GL (4th Generation Language) Hátterében OO nyelv áll (Object Pascal) Készíthetünk vele EXE-t és DLL-t Dinamikus adatcsere lehetőségek: DDE, OLE 1.0, 2.0, OLE Automation
Bevezetés A Delphi fejlesztő környezet jellemzői: Adatbázis-kezelés IDAPI (Integrated Database Application Programming Interface) DBase, Paradox, Oracle, Ingres, Informix, Interbase, ... Helyi és távoli adatforrások Táblák, lekérdezések, jelentések MAPI (Multimedia Application Programming Interface) Internet-es alkalmazások
Osztályhierarchia A Delphiben minden komponens valamelyik osztályhoz tartozik Mivel a Delphi 7 rengeteg komponenst kínál a programozóknak, az osztálydiagram felépítése bonyolult. A Delphi osztályok legnagyobb része komponensosztály
Osztályhierarchia Egy-egy komponensre egy-egy osztály épül fel, ezek a komponensek megtalálhatók az ún. komponenspalettán Mint látjuk az összes osztály közös őse a TObject. A VCL(Visual Component Library) vizuális komponenskönyvtár, a TObject osztályból nagyon sok osztályt származtat
Delphi komponensek Delphi komponenstípusok: Láthatók (Edit, Button,...) Láthatatlanok (Timer, MainMenu,...) Használatuk: A komponenseket összecsipegetjük a komponenspalettáról és elhelyezzük őket a formon Eredményül, a rendszer mezőként deklarálja a megfelelő formosztályban (tartalmazási kapcsolat )
A keretrendszer komponenspaletta form vizuális képe objektum-felügyelő kódszerkesztő ablak
F11: megjeleníti az objektum-felügyelőt Gyakran használt funkcióbillentyűk: F11: megjeleníti az objektum-felügyelőt F12: váltás a form és kódszerkesztő ablakok között SHIFT + F12 : váltás a unitok között F9 : fordítás, futtatás F7 , F8 : lépésenkénti végrehajtás
A Delphi alkalmazás felépítése (űrlapok) Főprogram (*.DPR) Uses Unit1, Unit2, Unit3,... Begin ... End. unit Unit2; interface uses… unit Unit1; interface uses…
4. STANDARD KOMPONENSEK
Nem látható komponensek TComponent alosztályai a TControl-t kivéve Vizuális komponensek TControl Nem látható komponensek TComponent alosztályai a TControl-t kivéve Ablakalapú vezérlők TWinControl Nem ablakalapú vezérlők TGraphicControl
Standard komponensek TObject TComponent TControl TLabel TWinControl TButton TEdit TMemo
Standard komponensek Innen származó tulajdonságok: TComponent: Komponensek közös őse Innen származó tulajdonságok: Name: String[63] (a komponens programbeli neve) Owner: TComponent (tulajdonosa)
Standard komponensek TControl a látható komponensek absztrakt osztálya Fontosabb jellemzői: Parent: TWinControl (szülőablaka) A választógombok tulajdonosa (owner) a párbeszédablak A választógombok szülője (parent) a választógomb csoport
Standard komponensek TControl Align: alNone, alTop, alBottom, ..., alClient (igazítás a szülőablakon belül) Caption: String Visible: Boolean (látható-e?) Enabled: Boolean (fogadja-e az üzeneteket?) Top, Left, Width, Height: Integer Color: TColor (clRed, clSilver,...) DragCursor: TCursor (crDefault, crSize,crHourGlass,...)
Standard komponensek Fontosabb eseményei: TControl Font: TFont (Color, Name, Size, ...) PopupMenu: TPopupMenu (gyorsmenü, ls. később) Fontosabb eseményei: OnClick, OnDblClick OnDragDrop, OnDragOver, OnEndDrag OnMouseDown, OnMouseMove, OnMouseUp
Standard komponensek MainMenu Menü Label Címke Edit Szerkesztődoboz Button Gomb CheckBox Jelölőnégyzet
Standard komponensek RadioButton Rádiógomb ListBox Listadoboz ComboBox Legördülő lista RadioGroup Rádiógomb csoport Panel
Shape Alakzat BitButton Bitmapas gomb SpeedButton Beragadó gomb Image Kép MaskEdit Maszkolható szerkesztődoboz StringGrid Rács (táblázat)
Standard komponensek Szerepe: passzív szöveg megjelenítése az űrlapon TLabel Szerepe: passzív szöveg megjelenítése az űrlapon Fontosabb jellemzői: Caption: String Transparent: Boolean
Standard komponensek Az "ablakozott" komponensek őse TWinControl Az "ablakozott" komponensek őse Fontosabb jellemzői: TabStop: Boolean TabOrder: -1..32767 Fontosabb metódusai: Update (frissíti, újrarajzolja) SetFocus (fókuszba helyezi)
Standard komponensek Fontosabb eseményei: TWinControl OnEnter, OnExit (be- és kilépéskor) OnKeyDown, OnKeyUp, OnKeyPress
Standard komponensek Szerepük: adat megjelenítése és bekérése TEdit, TMemo Szerepük: adat megjelenítése és bekérése TEdit: egy sorban TMemo: több sorban Fontosabb jellemzők: Text: String TMemo - nál: Lines: TStrings A megjelenített szöveg soronkénti feldolgozása MaxLength: Integer AutoSelect: Boolean
Standard komponensek Fontosabb metódusai: TEdit, TMemo SelText: String SelStart, SelLength PasswordChar: Char Fontosabb metódusai: SelectAll ClearSelection CutToClipboard, CopyToClipboard, PasteFromClipboard
Standard komponensek Fontosabb eseményei: TEdit, TMemo OnEnter : belépéskor OnChange : ha a Text változik OnExit : kilépéskor
Standard komponensek TButton , TBitBtn Szerepük: kattintásra betáplált tevékenység elvégzése Fontosabb jellemzők: Caption: String Cancel: Boolean (Esc - re meghívódik) Default: Boolean (Enter- re meghívódik) ModalResult: mrOk, mrCancel, ... modális párbeszédablak kilépési oka
Standard komponensek Fontos eseményük: TButton , TBitBtn TBitBtn - nál: - Glyph: TBitmap, NumGlyphs:1..4 - Kind: bkCustom, bkRetry, bkOk, ... Fontos eseményük: OnClick
Standard komponensek TCheckBox Jelölőnégyzet Igaz/ Hamis, Igen/ Nem, ... állapotok jelölésére Fontosabb jellemzők: Checked: Boolean AllowGrayed: Boolean (szürkítés engedélyezése) State: cbChecked, cbUnChecked, cbGrayed
Standard komponensek TRadioGroup Választógomb csoport egymást kölcsönösen kizáró opciók számára Fontos jellemzők: Items: TStrings (az opciók szövege külön sorban) ItemIndex: Integer (= 0 első opció, =1 második opció,...) Fontos eseménye: OnClick
Standard komponensek TListBox Listadoboz; nem szerkeszthető; egy vagy több sora kiválasztható Fontos jellemzői: Items: TString (sorai) ItemIndex: Integer (a kiválasztott sor indexe (0 első sor,...)) MultiSelect: Boolean (többszörös kiválasztás engedélyezése) SelCount: Integer (a kiválasztott sorok száma)
Standard komponensek Fontos metódusa: TListBox Selected[i]: Boolean (True ha az i. indexű sor ki van választva) Sorted: Boolean Fontos metódusa: ItemAtPos : visszaadja a megadott x,y koordinátákban levő sorának indexét (egér kattintásakor használjuk)
Standard komponensek TComboBox Kombinált lista; közvetlenül szerkeszthető, vagy kiválasztható egy elem a lebomló listából Fontos jellemzői: Text: String (szövege) Items: TStrings (a lista elemei) ItemIndex: Integer (a kiválasztott listaelem indexe) DropDownCount: Integer (hány soros legyen a lebomló lista)
Standard komponensek Fontosabb eseménye: TComboBox Sorted: Boolean SelText, SetStart, SelLength mint a TEdit - nél. Style: csDropDown, csDropDownList, csOwnerDrawFixed, ... Fontosabb eseménye: OnDropDown (a lista lenyitásakor)
Standard komponensek Menük használata TMainMenu Típusai: Főmenü Gyorsmenü (egér jobb gombra) TMainMenu Főmenü komponens Vizuálisan szerkesztjük a menüszerkesztővel Fontosabb jellemzője: Items[x: Integer]: TMenuItem
Standard komponensek Menüpont szürkítése: Menük használata Pl. A FileMenu OnClick eseményére felülbíráljuk az almenüpontok állapotát (pl. OpenMenu. Enabled := False) Menük használata
Standard komponensek TMenuItem Tartalmazza egy menüpont tulajdonságait, metódusait és eseményeit Jellemzői: Caption: String - Forróbillentyű: &File File - Menüszeparátor: Caption = - Items[X: Integer]: TMenuItem (az almenüpontok) Count: Integer (almenüpontok száma)
Standard komponensek Metódusai: Eseménye: TMenuItem Checked: Boolean ("pipa") Enabled: Boolean (=Falseszürke) GroupIndex: Integer (ld. később menük összefésülése) Metódusai: Add, Insert, Remove (futás közbeni menüátalakítás) Eseménye: OnClick
Standard komponensek TPopupMenu Egyéb komponensek PopupMenu tulajdonságához kötjük Vizuális tervezéssel jön létre Fontosabb jellemzői: Items[x: Integer] : TMenuItem AutoPopup: Boolean (ha True, akkor automatikusan az egér jobb gombjának lenyomására megjelenik) Hasznos metódus: Popup (megjeleníti a gyorsmenüt)
Standard komponensek Hasznos eseménye: TPopupMenu OnPopup: megjelenéskor hívódik meg felhasználhatjuk a menüpontok engedélyezésére ill. letiltására