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 © Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
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.
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
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 („frame form”) 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. 2. 3. 4. 5.
V1.0
MDI keretablakmodell készítése MDI gyermekablakmodell sablonjának a létrehozása Az alkalmazás menürendszerének elkészítése A menük illesztése („menu merging”) az MDI gyermekablakok futtatásához A gyermekablakok létrehozása futási időben
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
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 form ezá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 MenuStrip tulajdonságai között az MdiWindowListItem értékét állítsuk a Window menünk azonosítójára, ez biztosítja, hogy a gyermekablakok listája megjelenik a menüben.
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
4
MDI gyermekablak sablonjának a létrehozása • Adjunk egy új formot (Form2) a megoldásunkhoz • Helyezzünk el rajta egy RichTextBox vezérlőt, ami szövegszerkesztő felületét biztosítja – Rögzítsük a RichTextBox-ot (Anchor tulajdonsá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.
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
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 form MenuStrip-jének AllowMerge tulajdonsá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
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
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(); }
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
7
Fájlbetöltés • A keretablak File | Open menü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 | Text files (*.txt) | *.txt| Minden fájl (*.*)|*.*) – Az Open menüelemen kattintva aktivizáljuk a dialógust – Az openFileDialog1_FileOk eseménykezelő annyiban különbözik a létrehozás tagfüggvényétől, hogy itt a RichTextBox.LoadFile(string file) tagfüggvényével a fájlt betöltjük; a gyermekablak fejlécében jelenjen meg a fájl azonosítója
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
8
Gyermekablakok használata • Az MDI szülő LayoutMdi tagfü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
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
9
Mentési funkciók • A mentés szükségességének nyilvántartása – Ha a RichTextBoxban mó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 SaveFileDialog fájlbamentés dialógus aktivizálásával biztosítsuk
V1.0
2007. március 3.
© Vámossy Zoltán, BMF NIK, 2006–2007
[email protected]
10