lA C++ programozás Windows környezetben Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./0. lOpenPictureDialog és SavePictureDialog párbeszédablakok lA Color párbeszédablak lOpenDialog és SaveDialog párbeszédablakok lA Font párbeszédablak Szabványos párbeszédablakok alkalmazása lMintaprogram szabványos párbeszédablakokkal
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./1. 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. lOpenDialog és SaveDialog párbeszédablakok
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./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”.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./3. 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. lOpenPictureDialog és SavePictureDialog párbeszédablakok
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./4. 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. lA Color párbeszédablak
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./5. lA 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.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./6. 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. lMintaprogram szabványos párbeszédablakokkal
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./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.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./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.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./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.
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./ Á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; }
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./ 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); }
Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 28./ 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.