Tutorial Visual Basic | Capítulo 9 - Formularios MDI
El siguiente ejemplo es un editor de texto muy simple utilizando un formulario Mdi, y formularios secundarios o hijos para cada archivo de texto, es decir similar a como lo hace el Word u otras aplicaciones que utilizan múltiples documentos
Las opciones que tendrá el editor serán:
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:
Menú edición
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 formulariofrmDocumento 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
Código fuente a colocar en el Formulario Mdi
Código fuente a colocar en el formulario frmDocumento
Código fuente a colocar en el Módulo bas
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

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ú
1 - 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 FrmDocumentoLas 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:
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 formulariofrmDocumento 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
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 "
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
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ú
Comentarios
Publicar un comentario