HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Multiple Document Interface (MDI) használata


Példaprogram letöltése

8156 bájt

A Multiple Document Interface, rövidítve MDI ablakkezelési technika annyit jelent a Windows-ban, hogy adott egy keretablak, melynek vannak gyerek ablakai. Ezt úgy kell elképzelni, mint mondjuk a Word szövegszerkesztőt, ahol szintén van egy keretprogram, és ahol minden egyes dokumentum egy-egy gyerekablaknak felel meg.
Minden gyerekablak lehet teljesen egyforma, mint a Word-ben, de lehetnek akár különbözőek is. Minden ablakból tetszőleges számút nyithatunk meg, és ezzel sok munkát takaríthatunk meg – gondoljunk csak ismét a Word-re, számtalan dokumentumot kezelhetünk vele egyszerre, pedig ezt az ablakot és a hozzá tartozó funkciókat csupán egyszer kellett elkészíteni.

Egy Form-ból úgy készíthetünk MDI szülő ablakot, hogy annak IsMdiContainer property-jét igazra állítjuk. Ha már van MDI szülő, akkor ehhez MDI gyermekablakot a következőképpen rendelhetünk. Hozzunk létre egy szokványos Form-ot, majd ennek megjelenítésekor az MdiParent property-t állítjuk be a MDI szülő Form-ra.
        Dim form2 As New Form2()
        form2.MdiParent = Me
        form2.Text = MdiChildren.Length.ToString()
        form2.Show()
Mivel minden MDI gyermekablak ily módon tárolja a szülőablakot, ezt felhasználhatjuk arra is, hogy a gyermekablakból elérhetjük a szülőablak tulajdonságait és befolyásolhatjuk azokat.
  Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
    Me.MdiParent.Text = DateTime.Now.ToString()
  End Sub 'button1_Click
A Form-nál találunk egy MdiChildren nevű property-t. Ez egy olyan kollekciót tárol, melyben az összes gyermek Form megtalálható. Így egy ciklus segítségével könnyedén végigmehetünk az összes gyermek Form-on, és tetszőleges műveleteket végezhetünk rajtuk.
        For i = 0 To (Me.MdiChildren.Length) - 1
          Me.MdiChildren(i).Width = m
          Me.MdiChildren(i).Height = m
        Next i
Készíthetünk például egy olyan funkciót is, mely bezárja az összes megnyitott gyermek Form-ot.
A MDI szülő Form MdiChildActivate eseményét felhasználva értesülhet alkalmazásunk arról, hogy megváltozott az aktív gyermekablak és mostantól egy másik gyermekablak lett az aktív. Hogy melyik is lett ez az aktív ablak, azt az ActiveMdiChild property-n keresztül tudhatjuk meg, mely Form típusban tárolja ezt az információt.
  Private Sub Form1_MdiChildActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.MdiChildActivate
    label1.Text = Me.ActiveMdiChild.Text
  End Sub 'Form1_MdiChildActivate
Arra is lehetőségünk van, hogy a megnyitott MDI gyermekablakokat elrendezzük egymáshoz képest. Ehhez a szülő Form LayoutMdi függvényét kell meghívnunk.
  Private Sub menuItem2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles menuItem1.Click, menuItem2.Click, menuItem3.Click, menuItem4.Click
    Dim mi As MenuItem = sender
    Me.LayoutMdi(CType(mi.Index, MdiLayout))
  End Sub 'menuItem2_Click
Az elrendezés módja az alábbiak egyike lehet:
Mód Leírás
ArrangeIcons A minimalizált méretű gyermek Form-ok egymás mellé rendezése.
Cascade A gyermek Form-ok egymásra lapoltan rendeződnek el.
TileHorizontal Vízszintesen egymás mellé kerülnek a gyermekablakok.
TileVertical Függőlegesen egymás alá kerülnek a gyermekablakok.

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |