lA C++ programozás Windows környezetben Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./0. lA Vizuális Komponensek Könyvtára (VCL) lA VCL (Visual Component Library) szerkezete lA program építőelemei: a komponensek lEgy, vagy több dokumentumot kezelő alkalmazásmodell (SDI, MDI) lA C++ Builder projektkezelése Borland C++ Builder lAz alkalmazás készítésének legelső lépései
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./1. lA program építőelemei: a komponensek A komponens egy olyan objektum (pl. nyomógomb), amely a program tervezése, írása közben is már működik, ily módon programkód írása nélkül is beállítható a jellemzőinek (properties) értéke. Adott feladatot megvalósító előre elkészített komponen- sek sokaságából választható a programhoz éppen szükséges egyed. A komponensek a komponens- palettáról kiválasztva könnyen elhelyezhetők az ablak- formon.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./2. Az esemény (event) a program futása közben,a kezelői beavatkozásból, vagy a Windows operációs rendszerből származó történés, pl. egy kattintás az egérrel egy nyomógombon. Egy adott komponensen (pl. nyomógomb) bekövetkezhe- tő események listája az Objektumvizsgáló Események (Events) lapján található. Egy szükséges esemény lekezelését az eseménykezelő végzi. Az eseménykezelő az esemény által érintett objektum (pl. nyomógomb) tagfüggvényei közül az, amelyik az esemény (üzenet) hatására működésbe lép, és futásával válaszol az eseményre (pl. intézkedik az ablak bezárásáról). Az eseménykezelő függvény vázát az esemény nevén duplán kattintva hozhatjuk létre a programban. A függvény belsejének megírása ránk hárul.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./3. Dupla kattintás az esemény nevén és az eseménykezelő váza kész.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./4. A komponenseknek nem eseménykezelő tagfüggvényei is vannak, ezek a metódusok. A metódusokat mi is hívhatjuk az általunk írt kódrészben. Ezek között van a konstruktor és a destruktor is. A Focused() metódus hívása pl. választ ad arra, hogy a nyomógomb fókuszban van-e, azaz pl. az Enter lenyomása hat rá. A működő programban a fókuszban levő kezelőelem ki van emelve kerete- zéssel, vagy más módon. A Help-ben a Jellemzők (Properties), Események (Events) és Metódusok (Methods) esetében azt is megadják, melyik ős osztály- ban kerültek definiálásra, azaz honnan öröklődnek az objektum osztályára.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./5. Az egyes osztályok tulajdonságairól a Help-ből tudhatunk meg többet. Össze- tettsége miatt a C++ Builder az online help (és angoltudás) nélkül gyakorlatilag nem használható. A Help-ben viszont programrészletek is segítik a tudnivalók megértését és alkalmazását. Kezdők számára beépített oktatópélda van a Help/C++ Builder Help/Tartalom/ Quick Start: Tutorials pontban. A C++ Builder lehetőségeit bemutató példaprogramok találhatók az Examples könyvtárban.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./6. Mivel a C++ Builder a grafikus felületen működő Windows operációs rendszer által futtatható, annak API erőforrásait használó programok írására alkalmas, törvényszerű, hogy létezik benne egy, ezeket felhasználó, de el is fedő grafikus objektumkönyvtár. A vizuális jelző azt jelenti, hogy ezek az objektumok túlnyomó többségben a képernyőn megjelenő objektumok: ablak-formok, menük, párbeszédpanelok, vezérlők, stb. A nem grafikus objektumokra jó példa az időzítő, timer. A VCL osztályok osztályhierarchiába vannak szervezve. Ezt a szerkezetet a C++ Builder az Object Pascal nyelvet használó Borland Delphi programfejlesztő környezettől vette át. A VCL a Windows-stílusú felhasználói felület gyors kialakításához nyújtja a komponenseket, azonban a program lényegét érintő belső kódot C++ nyelven kell megírni. A VCL Object Pascal tulajdonságai a következőkben térnek el a C++ lehetőségeitől: A VCL objektumokat dinamikusan kell létrehozni (new, delete) A VCL objektumok tagfüggvényeinek nincs alapértelmezett paramétere A VCL objektumoknak nem lehet többszörös őse. lA Vizuális Komponensek Könyvtára (VCL)
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./7. lA VCL (Visual Component Library) szerkezete (részlet) TObject TPersistent TComponent TControl TStream TGraphic TStrings TApplication TMenu TGraphicControl TWinControl TScrollingWinControl TCustomControl TCustomForm TImage TShape TForm TButtonControl TButton
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./8. A TObject a VCL osztályok őse. A TPersistent osztály utódai képesek elmenteni és visszatölteni jellemzőiket fájlból. A TComponent a komponensek őse. Utódai rendelkeznek olyan sajátosságokkal és metódusokkal, amelyek lehetővé teszik, hogy a Komponens Palettára installáljuk és a form-okhoz adjuk őket. A TControl a felhasználói felületen megjelenő vezérlőelemek ősosztálya. A TApplication osztály egyedei az alkalmazói programok. Olyan metódusai vannak, mint az Initialize(); CreateForm(); Run();, melyekkel felügyeli az alkalmazói program működését, kezeli az üzenetközvetítő ciklust. Hívásukra a WinMain() függvényben kerül sor. A TForm az ablakok osztálya, belőle származtatjuk az alkalmazás főablakát, a felhasználói felület párbeszédablakait. A kialakított ablak szerkezetét, részeit a.DFM állomány, a működésére vonatkozó kódot a.CPP állomány, a deklarációkat pedig a.H headerfájl tartalmazza. A programozónak nem kell foglalkoznia a.DFM fájllal, annak létrehozása automatikus. A Custom osztályok alaposztályát képezhetik a programozó által ezekből továbbépített, az osztályhierarchiában eredetileg nem szereplő osztályoknak.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./9. lEgy, vagy több dokumentumot kezelő alkalmazásmodell (SDI, MDI) Az alkalmazói programok kétfélék lehetnek: Az egy dokumentumot kezelő (SDI, Single Document Interface) programok főablakán túl számtalan további párbeszéd- és üzenetablakot használhat. A program azonban egyidejűleg csak egyetlen dokumentummal dolgozhat. A több dokumentumot kezelő (MDI, Multiple DI) programok egyetlen főablak keretein belül számtalan további, azonos szerkezetű és más-más dokumentumot megjelenítő ablakkal dolgozhatnak, melyek közül az aktívra vonatkoznak a főablakban elérhető menüpontok és ikonfunkciók. Pl. Power Point prezentáció- készítő. Azt, hogy az alkalmazásunk főablaka milyen ablakmodellt testesít meg, formjának FormStyle tulajdonságával állíthatjuk be. Az MDI alkalmazások dokumentumablakai nem modális ablakok: egyidejűleg több is nyitva lehet, szabadon kattinthatunk bele valamelyikbe és dolgozhatunk vele. Megjelenítésük a Show() metódussal történik. Modális ablakokat, melyek bezárása nélkül nem kattinthatunk át az alkalmazás másik ablakába, mindkét ablakmodellnél használnak: az input párbeszédablakok legtöbbje ilyen. Ezt a hatást a ShowModal() metódus okozza.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./10. lA C++ Builder projektkezelése Az C++ Builder fejlesztőkörnyezet a fejlesztés során létrehozott állományokat rejtetten a projektfájlban adminisztrálja (football.bpr). Az indítóállomány a WinMain() függvénnyel automatikusan készül el. (FOOTBALL.cpp).
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./11. A unitok egy.cpp és egy.h párosból állnak, melyhez form esetén még egy automatikusan elkészülő formleíró.dfm fájl társul. A Projekt Manager nem mutatja a.h headerfájlokat. A fenti fájlokhoz még az erőforrásfájl (.res) és egyéb ritkábban előforduló fájlok csatlakoznak (.txt,.bmp,.wav).
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 22./12. lAz alkalmazás készítésének legelső lépései 1. Hozzunk létre egy új könyvtárat, amelybe a projekt állományait menteni fogjuk 2. Indítsuk el a C++ Buildert. 3. Ha egy korábbi projekt lenne megnyitva, válasszuk a File/Close all menüpontot és zárjuk be. Majd hozzunk létre egy új projektet a File/New Application menüponttal. A C++ Builder automatikusan létrehozza a következő fájlokat: Project1.cpp : a főprogram Unit1.cpp : a főformhoz tartozó forráskód állomány, melyet unit fájlnak nevezünk Unit1.h : a főformhoz kapcsolódó header fájl, melyet unit header fájlnak nevezünk Unit1.dfm : erőforrás fájl, mely a főform szerkezetét írja le. 4. Válasszuk a File/Save All menüpontot és mentsük az állományokat az előzetesen létrehozott könyvtárba. Eközben a.bpr projektfájlt nevezzük át tetszés szerint. A unitok alapértelmezett nevét meghagyhatjuk, vagy át is nevezhetjük 5. Később a teljes projektet a File/Save All menüponttal mentsük le.