Sección de tutoriales y manuales vb

Ejemplo de un editor de texto usando formularios MDI

Volver al índice



 

 

 

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

 

 

 

 

 

 

 

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 FrmDocumento

Las opciones que tendrá el editor serán:

  1. En el menú Archivo: Abrir, Nuevo, guardar , guardar como y salir
  2. 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:

vista del menú Archivo en el Mdi

 

El menú Edición:

vista del menú Edición en el Mdi

 

Los nombres de los menues deberán ser los siguientes:

Menú Archivo:

  1. Abrir: mnuAbrir
  2. Nuevo: mnuNuevo
  3. Guardar: mnuGuardar
  4. Guardar Como: mnuGuardarComo
  5. Salir: mnuSalir

 

Menú edición

  1. Copiar: mnuCopiar
  2. Cortar: mnuCortar
  3. Pegar: mnuPegar
  4. 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.

 

vista de la ventana de visual basic ( Propiedades de proyecto) para establecer el objeto inicial que arrancará al iniciar la aplicación

 

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:

 

vista del menú del formulario Mdi mostrando la lista de archivos abiertos recientemente por la aplicación

 

Crear lista de archivos recientes en un menú

 

Relacionados - Recursos vb6

 

Enlaces - Recursos vb.net

 


Volver al menú - tutorial de controles de visual basic

 

 


Buscar en Recursos vb