Pasos para crear el ejemplo:
Iniciar un nuevo proyecto Exe, añadir un formulario MDI y dejarlo por defecto
con el nombre Mdi Form1.
También agregar un formulario y renombrarlo a FrmDocumento.
Las opciones que tendrá el editor serán:
-
En el menú Archivo:
Abrir, Nuevo, guardar , guardar como y salir
-
El menú Edición :
Copiar, Cortar, Pegar y seleccionar Todo.
La vista de los menúes quedará similar a los siguientes gráficos:
El menú Archivo:

El menú Edición:

Los nombres de los menues deberán ser los siguientes:
Menú Archivo:
-
Abrir: mnuAbrir
-
Nuevo: mnuNuevo
-
Guardar: mnuGuardar
-
Guardar Como: mnuGuardarComo
-
Salir: mnuSalir
Menú edición
-
Copiar: mnuCopiar
-
Cortar: mnuCortar
-
Pegar: mnuPegar
-
Seleccionar todo: mnuSeleccionar
Nota: si no sabés
como crear los menúes con el editor de visual basic, podés chequear este enlace
que explica resumidamente como crear uno:
Crear menúes en visual basic
Ahora hay que especificar en el formulario Mdi, en la propiedad MdiChild,
que se encuentre en True,
para que de esta manera los formularios se abran dentro de este.
Ahora indicar en el menú Proyectos > Propiedades de proyecto, que el formulario
de inicio sea el MDI, en la opción Objecto inicial.

Luego agregar un control
CommonDialog llamado
CommonDialog1 en el formulario Mdi y también otro en el formulario frmDocumento para
poder utilizar los Cuadros de
diálogo Abrir Archivo y Guardar como. (
El control CommonDialog lo accedés desde el menú proyecto, Componentes >
Microsoft Common Dialog Control ).
En el formulario frmDocumento,
colocar un control
RichTextBox llamado RichTextBox1 y
establecerle a este desde la ventana de propiedades, la propiedad Multiline en
True, La propiedad Scrollbars en
3. ( opara que muestre Ambas barras de desplazamiento).
Por último colocar un módulo bas al proyecto. Agregar el código fuente a los formularios y al módulo bas
Código fuente a colocar en el Formulario Mdi
Option Explicit
Private Sub MDIForm_Initialize()
CommonDialog1.Filter = "Documento de texto|*.txt|Todos los Archivos|*.*"
End Sub
'Menú abrir
Private Sub mnuAbrir_Click()
On Error GoTo errSub
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Set FrmDoc = New frmDocumento
FrmDoc.Show
ActiveForm.Caption = CommonDialog1.FileName
ActiveForm.RichTextBox1.LoadFile CommonDialog1.FileName
End If
Exit Sub
errSub:
Select Case Err.Number
Case 70
ActiveForm.RichTextBox1.LoadFile CommonDialog1.FileName
Resume Next
End Select
End Sub
'Menu Guardar Como
Private Sub mnuGuarcomo_Click()
On Error GoTo errSub
If Forms.Count = 1 Then
MsgBox "No hay documentos para guardar", vbInformation
Exit Sub
End If
CommonDialog1.ShowSave
If CommonDialog1.FileName = "" Then Exit Sub
ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName
Exit Sub
errSub:
Select Case Err.Number
Case 91
Resume Next
End Select
End Sub
'Menú para guardar el archivo
Private Sub mnuGuardar_Click()
On Error GoTo errSub
If Forms.Count = 1 Then
MsgBox "No hay documentos para guardar", vbInformation
Exit Sub
End If
If InStr(1, ActiveForm.Caption, sCaption) Then
CommonDialog1.ShowSave
If CommonDialog1.FileName = "" Then Exit Sub
ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName
Else
ActiveForm.RichTextBox1.SaveFile ActiveForm.Caption
End If
Exit Sub
errSub:
Select Case Err.Number
Case 91
Resume Next
End Select
End Sub
'Menú nuevo archivo
Private Sub mnuNuevo_Click()
Set FrmDoc = New frmDocumento
nForms = nForms + 1
FrmDoc.Caption = sCaption & nForms
FrmDoc.Show
End Sub
'Menú pegar
Private Sub mnuPegar_Click()
On Local Error Resume Next
ActiveForm.RichTextBox1.SelText = Clipboard.GetText
End Sub
'Menú salir
Private Sub mnuSalir_Click()
Set FrmDoc = Nothing
End
End Sub
'Menu para seleccionar todo el texto
Private Sub mnuSeleccionar_Click()
On Local Error Resume Next
ActiveForm.RichTextBox1.SelStart = 0
ActiveForm.RichTextBox1.SelLength = Len(ActiveForm.RichTextBox1.Text)
End Sub
'Menú Copiar texto
Private Sub mnuCopiar_Click()
On Local Error Resume Next
Clipboard.SetText ActiveForm.RichTextBox1.SelText
End Sub
'Menú cortar texto
Private Sub mnuCortar_Click()
On Local Error Resume Next
Clipboard.SetText ActiveForm.RichTextBox1.SelText
ActiveForm.RichTextBox1.SelText = ""
End Sub
Código fuente a colocar en el formulario frmDocumento
Option Explicit
Public flagGuardar As Boolean
Private Sub Form_Resize()
'Redimensionamos el control RichtextBox al ancho y alto del formulario
RichTextBox1.Move ScaleLeft, ScaleTop, ScaleWidth, ScaleHeight
If WindowState = vbMaximized Then
'mdiform1.Caption = Me.Caption
Else
mdiform1.Caption = ""
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo errSub
Dim ret As Integer
If flagGuardar Then
ret = MsgBox(" Guardar cambios", vbYesNoCancel)
End If
Select Case ret
Case vbYes:
If InStr(1, Me.Caption, sCaption) Then
CommonDialog1.ShowSave
RichTextBox1.SaveFile CommonDialog1.FileName
Else
RichTextBox1.SaveFile Me.Caption
End If
Case vbCancel:
Exit Sub
End Select
Set FrmDoc = Nothing
Exit sub
errSub:
Select Case Err.Number
Case 75
Resume Next
End Select
End Sub
Private Sub RichTextBox1_Change()
flagGuardar = True
End Sub
Código fuente a colocar en el Módulo bas
Public FrmDoc As frmDocumento
Public nForms As Integer
Public Const sCaption = "Nuevo documento sin título "
En este enlace está el código fuente para descargar del proyecto anterior, que
incluye una barra de herramientas para las opciones ( abrir, guardar etc.. ) y
un cuadro de buscar y reemplazar para los documentos
vista previa del mdi

Descargar notepad con mdi
Nota. Si querés poder añadir en el menú archivo del formulario
Mdi, la lista de los archivos abiertos recientemente por el programa ( como lo
hacen muchas aplicaciones que utilizan formularios MDI, como por ejemplo el
Word, o inicluso el Visual basic ), podés ver este ejemplo que graba en el
registro de windows las rutas de los ficheros, y al cargar crea en forma
dinámica los menúes en tiempo de ejecución. Luego al hacer click en el elemento
del menú se ejecuta el archivo.
Por ejemplo como muestra esta imagen:

Crear lista de archivos recientes en un menú
|