This lesson discusses how to work with MDI forms in Visual Basic 6. A sample program has been given at the end of this lesson to enable the learners to quickly understand the concepts of MDI forms.
What is an MDI form?
MDI stands for Multiple Document Interface. You have probably seen many MDI applications. When you want to handle multiple documents, MDI forms are useful in a Windows program.
How to add an MDI form to the current project?
From the top line menu, select Project -> Add MDI form. It’s simple!
Restrictions of the MDI form
- You can have only one MDI form per project.
- You can’t place most controls on an MDI form. The only controls that can be placed on the surface of the MDI form are Menus, Timer, CommonDialog, PictureBox, ToolBar, and StatusBar.
- These restrictions are there because MDI forms are the special type of forms, especially used to handle multiple child forms.
How does the MDI form work?
There can be only one MDI parent form in a project with one or more MDI child forms (or simply child forms).
MDI child form
To add a child form, you have to add a regular form, and set the MDIchild property to True. You can have many child forms and can show an MDI child form using the Show method.
AutoShowChildren property of an MDI form
The default value of the AutoShowChildren property is True. When it is True, the MDI child forms are displayed once they are loaded. When the value is False only then you can keep it hidden after loading, otherwise not.
Restrictions of the MDI child forms
- You can’t display an MDI child form outside its parent.
- You can’t display a menu bar on the MDI child form.
Now coming to the point – how the MDI form works. The parent form contains a menu bar on top of it. From there, the user opens or creates a new document. In this way, the user accomplishes his/her work in one or multiple documents, then saves and closes the document (form).
You can create instances of a single form in the code using the Set keyword (Using the object variables).
'Inside the MDIForm module Private Sub mnuFileNew_Click() Dim frm As New Form1 frm.Show End Sub
ActiveForm property
This is the Object type read-only property of the MDI form. You can apply this property to one of the children. For example, you can close the active form using this property from the Close menu command of the menu bar.
'In the MDI form Private Sub mnuFileClose_Click() If Not (ActiveForm Is Nothing) Then Unload ActiveForm End Sub
QuickHint:
Note that ‘(ActiveForm Is Nothing)’ represents that there is no active form. The ‘Not’ keyword before it negates the value.