Vizuális és eseményvezérelt programozás 2006 2007, II. félév BMF NIK MDI szövegszerkesztő Az SDI és az MDI Szülő- és gyermekablakok Menürendszer MDI alkalmazáshoz A gyermekablakok elrendezése RichTextBox alkalmazása Formázás Vágólap használata Beolvasás, illetve fájlba mentés Eszköztár és állapotsor Összegzés vamossy.zoltan@nik.bmf.hu
Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezőirodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2
Multiple Document Interface Több dokumentum egyidejűmegjelenítésére szolgál Minden dokumentum a saját (gyermekablakában) jelenik meg Az állományok közötti adatcsere és a közös megtekintés igen hatékony lehet Az MDI alkalmazások közös munkatere a szülőablak, vagy keret ( parent, frame ) A keretablakon belül nyithatóak meg a gyermekablakok ( child window ) A gyermekablakok egyformán jelennek meg és viselkednek Az MDI keretablakmodellt( frameform )külön kell elkészíteni A gyermekablakoknak pedig a mintáját határozzuk meg Az MDI alkalmazás alapjainak elkészítése a következőket fogja jelenteni: 1. MDI keretablakmodell készítése 2. MDI gyermekablakmodell sablonjának a létrehozása 3. Az alkalmazás menürendszerének elkészítése 4. A menük illesztése ( menu merging ) az MDI gyermekablakok futtatásához 5. A gyermekablakok létrehozása futási időben 3
MDI keretablak készítése Készítsünk egy új Windows alkalmazást A form IsMDIContainer tulajdonságát állítsuk igazra A formezáltal MDI szülőablak lesz Egy MenuStrip vezérlőt készítsünk File és Window menüvel A File menüben almenük a következők legyenek: New, Open, elválasztó, Exit A Window menüben Horizontal Tile, Vertical Tile, Cascade és Arrange Icons elemeket vegyünk fel A MenuStriptulajdonságai között az MdiWindowListItemértékét állítsuk a Windowmenünk azonosítójára, ez biztosítja, hogy a gyermekablakoklistája megjelenik a menüben. 4
MDI gyermekablak sablonjának a létrehozása Adjunk egy új formot(form2) a megoldásunkhoz Helyezzünk el rajta egy RichTextBoxvezérlőt, ami szövegszerkesztő felületét biztosítja Rögzítsük a RichTextBox-ot(Anchortulajdonság) balra és a fel, majd pedig a Dock értékét Fill-re állítsuk Egy MenuStrip vezérlőt készítsünk File és Edit menüvel A File menüben a következők legyenek: elválasztó, Save, Save As, Close Az Edit menüben Undo, Redo, elválasztó,cut, Copy, Paste, elválasztóés Select All elemeket vegyünk fel. 5
Menük illesztése Amikor elindul a program csak a keretablak menüelemei jelennek meg Ha a felhasználómegnyitja majd a gyermekablakot, akkor a menüelemeinek be kell illeszkedniük automatikusan az MDI alkalmazás főmenüjébe Ha minden gyermekablak bezárásra kerül, akkor el kell távolítani elemeket automatikusan Mindkét formmenustrip-jénekallowmergetulajdonsága igaz legyen, ez biztosítja az illesztés előfeltételét A MergeActionés a MergeIndex(különbözőpozitív egészekre állításával) lehet meghatározni, hogy két menü miként kombinálódjék 6
Gyermekablakok létrehozása futási időben A keretablak File New menüjének kattintás eseménykezelőjében készítsük el a létrehozás kódját: private void newtoolstripmenuitem_click(object sender, EventArgs e) { } Form2 MDIchild = new Form2(); MDIchild.MdiParent = this; MDIchild.Text = "Form -" + this.mdichildren.length.tostring(); MDIchild.Show(); 7
Fájlbetöltés A keretablak File Openmenüjének kattintás eseménykezelőjében készítsük el a betöltés kódját Helyezzünk egy OpenFileDialog fájlmegnyitás kontrollt a keretablakra Állítsuk be a filter tulajdonságát (RTF files(*.rtf) *.rtf Textfiles (*.txt) *.txt Minden fájl (*.*) *.*) Az Open menüelemen kattintva aktivizáljuk a dialógust Az openfiledialog1_fileokeseménykezelőannyiban különbözik a létrehozás tagfüggvényétől, hogy itt a RichTextBox.LoadFile(stringfile) tagfüggvényével a fájlt betöltjük; a gyermekablakfejlécében jelenjen meg a fájl azonosítója 8
Gyermekablakok használata Az MDI szülőlayoutmditagfüggvényével a kliensterületen belül tudjuk elrendezni a gyermekablakokat A paraméternek átadott (MdiLayout) felsorolás értékei szabályozzák a megjelenést A vágólapot a RichTextBox tagfüggvényeivel kezelhetjük Az Undo és Redo funkciók is metódusokkal aktivizálhatók 9
Mentési funkciók A mentés szükségességének nyilvántartása Ha a RichTextBoxbanmódosítást hajtunk végre, akkor ezt rögzítenünk kell: a Modified tulajdonság ebben segítségünkre van, illetve a fejlécben *-gal jelölhetjük a mentés szükségességét. A mentést SaveFileDialogfájlbamentésdialógus aktivizálásával biztosítsuk 10