Dieser Tip stammt von:
http://www.ActiveVB.de
Fragen an:
http://www.activevb.de/vb/VBforum.html
 
Verwendung von MDI Formularen
Hinweis: Sollten Sie nur im Besitz dieser HTML-Seite und nicht des zugehörigen Projektes sein, Gehen Sie folgendermaßen vor:
  • Öffnen Sie Visual Basic
  • Erstellen Sie ein neues Projekt
  • Markieren und kopieren den auf dieser Seite unten eingerahmten Source-Code
  • Fügen Sie den kopierten Text in Ihr Form ein
  • Erstellen Sie folgende Steuerelemente auf Ihrem Form
      • Ein CommonDialog:          DLG1
        
        Ein Form:                  frmMDI
        
        Ein MDIForm:               MDIHaupt1
        
        Fünfzehn Menus:            mnu1
                                   mnu2
                                   mnu3
                                   mnuBack
                                   mnuBearbeiten
                                   mnuEnde
                                   mnucopy
                                   mnucut
                                   mnudatei
                                   mnuline1
                                   mnuline2
                                   mnuload
                                   mnupaste
                                   mnusave
                                   mnuwindows
        
        Eine TextBox:              txtText
        
  • Speichern Sie das ganze ab und starten Sie das Programm
 
'------------------- Anfang Code frmMDI  --------------------
Option Explicit

Private Sub Form_Resize()
  txtText.Move 50, 50, Me.Width - 200, Me.Height - 500
End Sub
'-------------------- Ende Code frmMDI  ---------------------

'------------------ Anfang Code MDIHaupt1  ------------------
'Dieser Source stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source !

Option Explicit

Private Declare Function SendMessage Lib "user32"Alias _
        "SendMessageA" (ByVal hwnd As Long, ByVal wMsg _
        As Long, ByVal wParam As Long, lParam As Any) _
        As Long

Const WM_COPY = &H301
Const WM_UNDO = &H304
Const WM_CUT = &H300
Const WM_PASTE = &H302

Private Sub mnu1_Click()
  MDIHaupt1.Arrange vbCascade
End Sub

Private Sub mnu2_Click()
  MDIHaupt1.Arrange vbTileHorizontal
End Sub

Private Sub mnu3_Click()
  MDIHaupt1.Arrange vbTileVertical
End Sub

Private Sub mnuBack_Click()
  Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_UNDO, 0&, 1)
End Sub

Private Sub mnucopy_Click()
  Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_COPY, 0&, 0)
End Sub

Private Sub mnucut_Click()
  Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_CUT, 0&, 1)
End Sub

Private Sub mnuEnde_Click()
  Unload Me
End Sub

Private Sub mnuload_Click()
  Dim temp As String
  On Error GoTo error_load
  
    With DLG1
      .Filter = "Textdateien (*.txt)|*.txt" & _
        "|Alle Dateien (*.*)|*.*"
      .CancelError = True
      .ShowOpen
      
      Set frmMDI = New frmMDI
        Open .filename For Input As #1
          Do Until EOF(1)
            Line Input #1, temp
            frmMDI.txtText.Text = _
            frmMDI.txtText.Text & temp & vbCrLf
          Loop
        Close #1
        frmMDI.Caption = .filename
      frmMDI.Show
    End With

error_load:
End Sub

Private Sub mnupaste_Click()
 Call SendMessage(Me.ActiveForm.txtText.hwnd, WM_PASTE, 0&, 1)
End Sub

Private Sub mnusave_Click()
  On Error GoTo error_save
  With DLG1
    .Filter = "Textdatei (*.txt)|*.txt"
    .CancelError = True
    .ShowSave
    
    Open .filename For Output As #1
      Print #1, Me.ActiveForm.txtText.Text
    Close #1
  End With
  
error_save:
End Sub
'------------------- Ende Code MDIHaupt1  -------------------