Thursday 30 December 2010

MdiParent

Pada Visual Basic, kita dapat mengembangkan aplikasi dengan interface sebagai berikut : 
  • SDI (Single Document Interface)
  • MDI (Multiple Document Interface)
Pada aplikasi SDI, setiap form merupakan form-form yang berdiri sendiri, Aplikasi SDI pada windows terdapat pada aplikasi seperti Notepad, WordPad dan Paint.

Sedangkan aplikasi seperti Microsoft Word menggunakan MDI, MDIForm digunakan untuk membuat program aplikasi yang berbentuk Multiple Document Interfaces. Sebuah MDIForm disebut juga container yang bisa terdiri atas beberapa buah form lain yang biasa disebut MDIChild.

Ada beberapa hal yang harus diperhatikan dalam penggunaan MDIForm adalah :
  1. Didalam satu project hanya dapat terdiri dari satu MDIForm
  2. Anda tidak dapat menempatkan kontrol-kontrol secara langsung pada MDIForm, kecuali kontrol yang memiliki properties Alignment, atau menempatkannya diatas kontainer seperti Picturebox.
  3. Anda tidak dapat menggunakan metode pengambaran (Print, Line, Circle, dan PSet) seperti pada form umumnya.
Karakteristik dari MDI Form
  • Semua child form tidak dapat dipindahkan keluar dari MDI Form.
  • Ketika suatu child form diminimize, akan menjadi icon dibawah MDI Form.
  • Anda dapat menentukan apakah child form secara otomatis ditampilkan atau tidak dengan menggunakan properties AutoShowChildren pada MDIForm.
  • Jika pada child form ada menu, maka menu akan ditampilkan pada MDIform menu.
Pada MDIform kita tidak dapat menempatkan kontrol-kontrol visible yang tidak mendukung alignment, kecuali kalau anda menempatkannya kedalam suatu kontainer seperti Picturebox, dan Toolbar. Sedangkan kontrol non-visible seperti Timer dan CommonDialog box dapat ditempatkan diatas MDIForm.

Paparan MDI pada Visual Basic
  1. Membuat suatu MDI form
Sebuah MDIForm dapat dibuat dari sebuah Form biasa, Yaitu dengan cara mengatur properties IsMdiContainer pada Form tersebut diubah menjadi True

Pada gambar diatas, sebuah Form bernama Form1 diatur menjadi suatu MDIForm dengan cara mengubah isi properties IsMDIContainer-nya menjadi True

  1. Membuat suatu Form menjadi MDI Child
Sebuah Form dapat diatur menjadi MDIChild bagi sebuah MDIForm melalui coding program. Aturan penulisannya sebagai berikut
<NamaForm>.MDIParent = <namaMDIForm>
Contoh :
Form2.MdiParent = Form1

Pada contoh coding program diatas, sebuah Form bernama Form2 diatur agar menjadi MDIChild bagi sebuah MDIForm bernama Form1

  1. Mengatur MDIChild dalam jendela MDIForm
Kita dapat mengatur layout penyusunan form-form yang sedang aktif didalam suatu MDI form menjadi cascade(bertimpa) atau tile(membentang). Metode LayoutMDI ini diikuti oleh parameter yang menentukan jenis penyusunan yang dilakukan, contoh :
Cascade 
Me.LayoutMdi(MdiLayout.Cascade)


 
Tile Horizontal 
Me.LayoutMdi(MdiLayout.TileHorizontal)
 
Tile Vertical
Me.LayoutMdi(MdiLayout.TileVertical)

 
Sekarang kita akan mencoba membuat project aplikasi MDI sederhana dengan ditambahkan menu pulldown dan menu treeview.


Langkah-langkahnya
1.  1. Buat project aplikasi Windows Form baru.
2.   2.Atur Properties Form baru seperti berikut :
(Name)
MDIForm
Text
MDIForm
3.  3. Tambahkan komponen treeview, dan atur properties dock nya menjadi left.


   
4.   Kemudian tambah beberapa node sehingga seperti schema dibawah ini,

  5. Edit Properties dari node-node tersebut sebagai parent node itu Child dan File, untuk child node dari Child tambahkan Child1 dan Child2, dan untuk child node dari File tambahkan New Form dan Exit
Node0
Name
Child
Text
Child
Node1
Name
Child1
Text
Child1
Node2
Name
Child2
Text
Child2
Node3
Name
File
Text
File
Node4
Name
New
Text
New Form
Node5
Name
Exit
Text
Exit

6. Tambahkan MenuStrip untuk pulldown menu tambahkan &Windows sebagai parent dan childnya adalah Cascade, Tile Horizontal, Tile Vertical dan Close All.


   
7. Ubah juga properties IsMDIContainer pada MDIForm menjadi True,

8. Hasilnya Design kita akan seperti 


 9.  Selanjutnya kita tambahkan 2 buah Form baru dengan nama Child1.vb dan Child2.vb
10l.
Setelah semua selesai tambahkan coding pada TreeView pada event handle DoubleClick
       ' Mendeklarasi nomorform sebagai private supaya bisa ditambah
    Private nomorform As Integer = 0
    Private Sub TreeView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.DoubleClick
        Select Case TreeView1.SelectedNode.Name
            Case "Child1"
                ' Mensetting menjadi Child pada sebuah MDIform sebelum ditampilkan
                Child1.MdiParent = Me
                ' Menampilkan form
                Child1.Show()
            Case "Child2"
                ' Mensetting menjadi Child pada sebuah MDIform sebelum ditampilkan
                child2.MdiParent = Me
                ' Menampilkan form
                child2.Show()
            Case "New"
                ' Membuat New Child Form Baru
                Dim ChildForm As New System.Windows.Forms.Form
                ' Mensetting menjadi Child pada sebuah MDIform sebelum ditampilkan
                ChildForm.MdiParent = Me

                ' Memberi nomor pada text/title form baru
                nomorform += 1
                ChildForm.Text = "New Form " & nomorform
                ' Menampilkan form
                ChildForm.Show()
            Case "Exit"
                End
        End Select
    End Sub

Selanjutnya tambahkan coding untuk MenuStrip buat pengaturan Layout MDIChild
    Private Sub CascadeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CascadeToolStripMenuItem.Click
        Me.LayoutMdi(MdiLayout.Cascade)
    End Sub

    Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TileHorizontalToolStripMenuItem.Click
        Me.LayoutMdi(MdiLayout.TileHorizontal)
    End Sub

    Private Sub TileVerticalToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TileVerticalToolStripMenuItem.Click
        Me.LayoutMdi(MdiLayout.TileVertical)
    End Sub

    Private Sub CloseAllToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseAllToolStripMenuItem.Click
        ' Close semua child yang berada di MDIForm
        For Each ChildForm As Form In Me.MdiChildren
            ChildForm.Close()
        Next
    End Sub

Kemudian debug (F5) untuk menjalankan program yang telah kita buat,


Selesai.