Sección de tutoriales y manuales vb
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
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:
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:
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
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
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ú
Volver al menú - tutorial de controles de visual basic
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar