A C++ programozás Windows környezetben Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./0. A C++ programozás Windows környezetben Szabványos párbeszédablakok alkalmazása OpenDialog és SaveDialog párbeszédablakok OpenPictureDialog és SavePictureDialog párbeszédablakok A Color párbeszédablak A Font párbeszédablak Mintaprogram szabványos párbeszédablakokkal
OpenDialog és SaveDialog párbeszédablakok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./1. OpenDialog és SaveDialog párbeszédablakok A szabványos párbeszéd komponen- seket a Dialogs komponenspalettán találjuk. Közös metódusuk az Execute() , végrehajtás metódus, mely létrehozza és megjeleníti a pár- beszédablakot. A modálisan megjele- nő párbeszédablak a párbeszéd befe- jeztekor true, vagy false értékkel tér vissza és szűnik meg, attól függően, hogyan végezte a párbeszédet a fel- használó. Pl. az OK gombbal történő bezárás true értéket, a Cancel (Mégse) gombbal való bezárás false értéket eredményez. True érték esetén a meghívó programrész felhasználhatja a párbeszéd eredményeként előálló új értéket: fájlnevet, színt, vagy karakterbeállítást. Az OpenDialog párbeszédablak a gyakran előforduló fájlmegnyitást egyszerű-síti és egyetlen visszatérő paramétere a megnyitandó fájl neve. Hasonlóan a SaveDialog párbeszédablak a mentésre a felhasználó által megadott fájlnévvel tér vissza.
Az OpenDialog és a SaveDialog pár- beszédablak komponensek közös jel- Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./2. Az OpenDialog és a SaveDialog pár- beszédablak komponensek közös jel- lemzői az Execute() metóduson túl a DefaultExt , alapértelmezett kiterjesz- tés jellemző, a felhasználó által vá- lasztott fájl neve, FileName jellemző, a többszörös fájlkiválasztás engedé- lyezése esetén a kiválasztott fájlok nevét tároló Files, fájlok jellemző, a felhasználó által választható fájlok tí- pusát megadó Filter, szűrő jellemző, az ablak megjelenésekor használandó szűrő indexe, azaz FilterIndex jellemző, az induló könyvtárat megadó InitialDir jellemző, a párbeszéddoboz címét tároló Title jellemző és a párbeszéddoboz működésének részletekbe menő beállítását szolgáló Options jellemző. A Mentés másként párbeszédablakok SaveDialog párbeszédablakok, de a Title értéke ”Mentés másként”.
OpenPictureDialog és SavePictureDialog párbeszédablakok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./3. OpenPictureDialog és SavePictureDialog párbeszédablakok Ezen ablakok a töl- tendő, illetve menten- dő képek megjeleníté- sére is képes normál Open- és SaveDialog ablakok. A Filter kiter- jesztések alapértelme- zetten be vannak állít- va a szokásos grafi- kus fájlok kiterjeszté- seire, azokat nem kell megadni.
A Color párbeszédablak Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./4. A Color párbeszédablak Egyéb objektumok szín jellemzőjének megválasztására szolgáló ablak. Az OK gomb lenyomásakor a Color sajátosság tartalmazza a kiválasztott szín jellemzőjét.
Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./5. A Font párbeszédablak A karakterek jellemzőinek (Karakterkészlet, méret, stílus, szín stb. megadására szolgál. Korlátozható a font-ok minimális és a maximális mérete. Az OK billentyű lenyomásakor a Font jellemző tartalmazza a karakterjellemzőket. Egyetlen eseménye az OnApply, amely az Apply (Alkalmazni ) nyomógomb megnyomásakor következik be. Ahhoz, hogy az Apply nyomógomb megjelenjen, egy nem üres eseménykezelő függvényt kell létrehozni.
Mintaprogram szabványos párbeszédablakokkal Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./6. Mintaprogram szabványos párbeszédablakokkal Feladat: Készítsük el az alábbi ablakkal jellemezhető alkalmazás programját! A program a File menüben találha- tó Megnyitás és Mentés menüpontokkal legyen képes textfájlok (.txt, .h, .cpp) betöltésére és a fájltartalom megjeleníté- sére, valamint más né- ven való elmentésére. A megjelenített szöveg betűinek jellemzőit vál- toztathassuk meg a Be- állítások menüpont Betű almenüpontjában. Továbbá legyen alkalmas képek betöltésére és a képkeret színének tetszésszerinti megváltoztatására.
frissen létrehozott könyvtárba Boxes.prj projektnévvel. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./7. Megoldás: 1. Az ismert módon hozzunk létre egy üres alkalmazást és mentsük el egy frissen létrehozott könyvtárba Boxes.prj projektnévvel. 2. Változtassuk meg a form feliratát (Caption) ”Kép- és szövegfájl nézegető” feliratra, valamint a keret stílusát (BorderStyle) bsSingle értékre. Ez nem méretezhető, de menüt kezelni tudó ablakot eredményez. 3. Hozzuk létre a menüt egy menü komponensnek a form-ra helyezésével, majd az alábbi ábráknak megfelelően a Menü Editor és az Object Inspector segítségével nevezzük el a menüpontokat és adjuk meg feliratukat! A Képtöltés és a Mentés menüpontok közötti válaszvonalat a neki megfelelő menüelemnél - felirat (Caption) megadásával értük el. A nevek a feliratok ékezet nélküli alakjai.
kijelzésére, a Rectangle alakú Shape komponenst képkeretnek, úgy, hogy Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./8. 4. Helyezzük fel a form-ra a szükséges komponenseket: a Memo-t a szöveg kijelzésére, a Rectangle alakú Shape komponenst képkeretnek, úgy, hogy körbe kilógjon a ráhelyezett Image képtároló komponens alól. Helyezzünk el egy Label-t is a tájékoztató kiírás részére. Majd a Dialogs kompo- nenspaletta-lapról he- lyezzünk fel egy OpenDialog, SaveDialog, OpenPictureDialog, Color és Font kompo- nenst a form-ra. 5. A Memo1 ScrollBar jellemzőjét állítsuk ssVertical értékre. 6. Label1 feliratát írjuk át a minta szerint.
Próbáljuk ki, a szövegtöltés működik. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./9. 7. Töröljük a Memo1 tartalmát a Lines jellemző szövegeditorában és állítsuk a ReadOnly jellemzőt true értékre. 8. Állítsuk be az OpenDialog DefaultExt jellemzőjét txt-re, valamint adjuk meg a Filter jellemzőt a filtereditorban: 9. Írjuk meg a kódot a File/Megnyitás menüponthoz: void __fastcall TForm1::MegnyitasClick(TObject *Sender) { if (OpenDialog1->Execute() ) { //Betöltés fájlból: Memo1->Lines->LoadFromFile(OpenDialog1->FileName); } Próbáljuk ki, a szövegtöltés működik.
11. Írjuk meg a File/Mentés menüpont eseménykezelő függvényét: Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./10. 10. Állítsuk be a SaveDialog komponens DefaultExt jellemzőjét txt értékre. 11. Írjuk meg a File/Mentés menüpont eseménykezelő függvényét: void __fastcall TForm1::MentesClick(TObject *Sender) { if (SaveDialog1->Execute() ) Memo1->Lines->SaveToFile(SaveDialog1->FileName); } A program futtatva működik, lementi az állományt. 12. Írjuk meg a betöltendő kép alól kikandikáló keret, azaz a Shape1 színének megváltoztatását lehetővé tévő kódot! void __fastcall TForm1::SzinClick(TObject *Sender) { if (ColorDialog1->Execute() ) Shape1->Brush->Color= ColorDialog1->Color;
13. Próbáljuk ki a színváltoztatást! Működik. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./11. 13. Próbáljuk ki a színváltoztatást! Működik. Írjuk meg a karakterjellemzők megváltoztatását lehetővé tévő Beállítások/Betű menüpont választásakor működésbe lépő esemény- kezelő függvényt! void __fastcall TForm1::BetuClick(TObject *Sender) { if (FontDialog1->Execute() ) Memo1->Font = FontDialog1->Font; } 14. Állítsuk be az OpenPictureDialog komponens DefaultExt jellemzőjét bmp- re. Figyeljük meg, hogy a Filter jellemző értéke meg van adva. 15. Írjuk meg a File/Képtöltés menüpont eseménykezelőjét! void __fastcall TForm1::KeptoltesClick(TObject *Sender) if (OpenPictureDialog1->Execute()) Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
A program jól működik, példaként egy másik képpel, szöveggel, Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA II. dr.Dudás László 39./12. 16. A program már majdnem tökéletes. Javíthatunk a képtöltés jóságán, ha előírjuk a kép átméretezését az Image1 felület méretére : Stretch = true; A program jól működik, példaként egy másik képpel, szöveggel, betűjellemzőkkel és képkeretszínnel futtattuk.