Sei sulla pagina 1di 10

1 - Pasos para crear el ejemplo:

Iniciar un nuevo proyecto Exe, aadir un formulario MDI y dejarlo por defecto con el nombre Mdi Form1. Tambin agregar un formulario y renombrarlo a FrmDocumento Las opciones que tendr el editor sern: 1. En el men Archivo: Abrir, Nuevo, guardar , guardar como y salir 2. El men Edicin : Copiar, Cortar, Pegar y seleccionar Todo.

La vista de los menes quedar similar a los siguientes grficos:

El men Archivo:

El men Edicin:

Los nombres de los menues debern ser los siguientes: Men Archivo: 1. 2. 3. 4. Abrir: mnuAbrir Nuevo: mnuNuevo Guardar: mnuGuardar Guardar Como: mnuGuardarComo

5. Salir: mnuSalir

Men edicin 1. 2. 3. 4. Copiar: mnuCopiar Cortar: mnuCortar Pegar: mnuPegar Seleccionar todo: mnuSeleccionar

Nota: si no sabs como crear los menes con el editor de visual basic, pods chequear este enlace que explica resumidamente como crear uno:
Crear menes 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 opcin Objecto inicial.

Luego agregar un control CommonDialog llamado CommonDialog1 en el formulario Mdi y tambin otro en el formulariofrmDocumento para poder utilizar los Cuadros de dilogo Abrir Archivo y Guardar como. ( El control CommonDialog lo acceds 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 mdulo bas al proyecto

Agregar el cdigo fuente a los formularios y al mdulo bas

Cdigo fuente a colocar en el Formulario Mdi

Option Explicit Private Sub MDIForm_Initialize() CommonDialog1.Filter 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 = "Documento de texto|*.txt|Todos los

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

Cdigo fuente a colocar en el formulario frmDocumento

Option Explicit Public flagGuardar As Boolean

Private Sub Form_Resize() 'Redimensionamos formulario el control RichtextBox al ancho y alto del

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

Cdigo fuente a colocar en el Mdulo bas

Public Public

FrmDoc nForms

As As

frmDocumento Integer

Public Const sCaption = "Nuevo documento sin ttulo "

En este enlace est el cdigo 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 quers poder aadir 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 ), pods ver este ejemplo que graba en el registro de windows las rutas de los ficheros, y al cargar crea en forma dinmica los menes en tiempo de ejecucin. Luego al hacer click en el elemento del men se ejecuta el archivo Por ejemplo como muestra esta imagen:

Potrebbero piacerti anche