Mis utilidades:

Un Mini-Editor
para usar de forma genérica

 

Fecha: 8/Sep/97


Esta utilidad... desde que he empezado a usar esto de poner la primera letra más grande, siempre ha empezado por E...
Como decía, esta utilidad la uso cuando quiero ampliar un campo de texto para que pueda mostrarse al tamaño que yo quiera, la idea la saqué de un artículo de VB Online (
Dale's Workbench en la edición de Julio), no todo van a ser ideas mías... la cuestión es usar, ampliar y si es posible, mejorar lo que otros han pensado...
La cuestión es que al final se ha convertido en casi un editor de texto, sólo que no puede leer ni escribir en archivos.

La forma de usarlo es muy simple sólo tienes que asignar el texto que quieres mostrar/editar, mostrar el form y después, si se ha pulsado en Aceptar, volver a asignarlo al sitio que corresponda.

Este form tiene un menú de edición con las rutinas básicas, además de buscar y reemplazar, para mostrar el diálogo de búsqueda, uso el que en su día incluí en el proyecto gsNotas, pero con unos cambios para usarlo más genéricamente... Es cuestión de que le eches un vistazo al código...

En los listados para VB5 el editor acepta archivos usando Drag & Drop, si quieres implementarlo en VB4, deberás sustituir el TextBox por un RichTextBox (el que se incluye con la versión 5 de VB) o bien usar el método que está en el Proyecto gsNotas.

Para usarlo, deberás hacer algo como esto:

With fMiniEditor
    .txtEditor = Text1
    .Show vbModal
    If iFFAccion <> cFFAc_Cancelar Then
        'aceptar el texto
        Text1 = .txtEditor
    End If
End With
Unload fMiniEditor

Aquí tienes el form del Mini-Editor:

 

Y este es el código:

'------------------------------------------------------------------
'Form genérico para mostrar un texto                    (31/Ago/97)
'con algunas opciones de búsqueda, etc.
'
'(c)Guillermo Som, 1997
'------------------------------------------------------------------
Option Explicit

Dim bIniciandose As Boolean


Private Sub CmdAceptar_Click()
    'Aceptar
    iFFAccion = cFFAc_Aceptar
    Hide
End Sub


Private Sub CmdCancelar_Click()
    'cancelar
    iFFAccion = cFFAc_Cancelar
    Hide
End Sub


Private Sub cmdImprimir_Click()
    'imprimir
    
    cmdAceptar.Enabled = False
    cmdCancelar.Enabled = False
    With cmdImprimir
        .Caption = "Imprimiendo..."
        .Enabled = False
    End With
    
    gsImprimir txtEditor
    
    cmdAceptar.Enabled = True
    cmdCancelar.Enabled = True
    With cmdImprimir
        .Caption = "Imprimir"
        .Enabled = True
    End With
End Sub


Private Sub Form_Load()
    bIniciandose = True
    
    txtEditor.Move 60, 60
    sFFIni = App.Path & "\miniEditor.ini"
    
    'Ajustar el tamaño y posición guardada
    Left = Val(LeerIni(sFFIni, "Ventana", "Left", CStr(Left)))
    Top = Val(LeerIni(sFFIni, "Ventana", "Top", CStr(Top)))
    Height = Val(LeerIni(sFFIni, "Ventana", "Height", CStr(Height)))
    Width = Val(LeerIni(sFFIni, "Ventana", "Width", CStr(Width)))
    WindowState = Val(LeerIni(sFFIni, "Ventana", "WindowState", CStr(WindowState)))
    
    Set LineaEstado = Label1
    
    MostrarLinea
    
    bIniciandose = False
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode <> vbFormCode Then
        iFFAccion = cFFAc_Cancelar
    End If
End Sub


Private Sub Form_Resize()
    'actualizar el tamaño del TextBox y los botones     (31/Ago/97)
    'si se minimiza no hacer nada
    If WindowState = vbMinimized Then Exit Sub
    
    With cmdAceptar
        .Top = ScaleHeight - 90 - .Height
        cmdCancelar.Top = .Top
        cmdImprimir.Top = .Top
        Label1.Top = .Top + 60
    End With
    With txtEditor
        .Width = ScaleWidth - 120
        .Height = cmdAceptar.Top - 90 - .Top
    End With
    GuardarTamaño
End Sub


Private Sub Form_Unload(Cancel As Integer)
    GuardarTamaño
    Set fMiniEditor = Nothing
End Sub


Private Sub mnuEd_Click()
    'Llama al procedimiento genérico de edición     (31/Ago/97)
    menuEdi
End Sub


Private Sub mnuEdicion_Click(Index As Integer)
    'Procedimiento genérico de los comandos de edición  (31/Ago/97)
    menuEdicion Index
End Sub


Private Sub GuardarTamaño()
    If bIniciandose = False Then
        'Guardar la posición y tamaño
        If WindowState <> vbMaximized Then
            GuardarIni sFFIni, "Ventana", "Left", CStr(Left)
            GuardarIni sFFIni, "Ventana", "Top", CStr(Top)
            GuardarIni sFFIni, "Ventana", "Height", CStr(Height)
            GuardarIni sFFIni, "Ventana", "Width", CStr(Width)
        End If
        GuardarIni sFFIni, "Ventana", "WindowState", CStr(WindowState)
    End If
End Sub


Private Sub txtEditor_KeyUp(KeyCode As Integer, Shift As Integer)
    MostrarLinea
End Sub


Private Sub txtEditor_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
    'Aceptar archivos dejados
    'deben estar estas propiedades del TextBox:
    '   .OLEDragMode = 0
    '   .OLEDropMode = 1
    '
    Dim nFic As Integer
    Dim sNombre As String
    
    On Local Error Resume Next
    
    sNombre = Data.Files.Item(1)
    
    nFic = FreeFile
    Open sNombre For Input As nFic
    txtEditor = Input$(LOF(nFic), nFic)
    Close nFic
    
    Err = 0
    On Local Error GoTo 0
End Sub


Private Sub MostrarLinea()
    Dim TotalLineas&
    Dim LineaActual&
    Const EM_GETLINECOUNT = &HBA
    Const EM_LINEFROMCHAR = &HC9
    
    TotalLineas = SendMessage(txtEditor.hWnd, EM_GETLINECOUNT, 0, 0&)
    LineaActual = SendMessage(txtEditor.hWnd, EM_LINEFROMCHAR, -1, 0&) + 1
    Label1 = "Línea: " & LineaActual & " / " & TotalLineas
End Sub

Pulsa este link para bajarte el listado con el ejemplo para VB5 (t_imprimir.zip 17.4 KB)
Bajate los listados y el ejemplo para VB4 (t_imprimirVB4.zip 16.5 KB)

la Luna del Guille o... el Guille que está en la Luna... tanto monta...