Resumen Imprimir un campo Memo

Hola Ariel, Hola Flor

Os envio este código a ver si os sirve para imprimir un Memo y en modo texto sin Crystal.

'***************************************************************************************************
        ' Iniciar impresora
        Printer.Print ""

        ' Indicar propiedades de la fuente (comenta o cambia lo que no te sirva)
        Printer.Font.Name = "Arial"
        Printer.Font.Size = 10
        Printer.Font.Bold = True
        Printer:Font.Italic = True
        Printer.Font.Underline = True

        ' Poner Titulo si lo quieres
        Dim Titulo$
        Titulo = "TituloMemo"
        ' Indicar coordenadas de impresión en twips, las cifras exactas las calculas segun 1cm = 567
        Printer.CurrentX = (11340 - Printer.TextWidth(Titulo)) / 2 ' centra el titulo horizontalmente
        Printer.CurrentY = 567 ' posición vertical del titulo
        Printer.Print Titulo

        '----- Imprimir memo con control data-----
        Dim sCadMemo$
        sCadMemo = Data1.Recordset("NombreCampoMemo")
        ' El registro activo es el que aparece en el control asociado a Data.
        ' Moverse a otro con Move o Find si es necesario.

        ' Si la longitud de la cadena no sobrepasa una línea ni el ancho del papel no tendrás
        ' más problemas que: Printer.Print sCadMemo y darle las posiciones antes.
        ' Si tiene más lineas y el ancho es variable deberás dar formato a la cadena con las
        ' funciones InStr y Mid$ ó insertando Chr(13) cada n caracteres, que correspondan
        ' al ancho de cada línea que quieras, medida según el ancho de la fuente.
        ' El ejemplo que sigue es solo orientativo (sin probar), no te puedo asegurar que funcione.

        Printer. CurrentY = ? ' Aquí pones la posición de inicio vertical de impresión del Memo
        Dim lNumeroCaracteres&, lIniPosic&, lSigPosic&, sCadImprimir$
        lNumeroCaracteres = ? ' Aquí pones el nº carac. que necesites
        lIniPosic = 1
        lSigPosic = 0
     Do While lIniPosic <= Len(sCadMemo)
         Do
                '-------Buscar espacios en el texto----------
                lSigPosic = InStr(lIniPosic, sCadMemo, " ")
                If lSigPosic = 0 Then ' si no hay espacios
                    ' extraer cadena hasta el final
                    sCadImprimir = sCadImprimir & Mid$(sCadMemo, lIniPosic)
                    ' modificar posic. inicio
                    lIniPosic = Len(sCadMemo) + 1
                Else ' si hay espacios
                    ' extraer cadena espacio a espacio (palabra a palabra)
                    sCadImprimir = sCadImprimir & Mid$(sCadMemo, lIniPosic, _
                                lSigPosic - lIniPosic + 1)
                    ' modificar posic. inicio
                    lIniPosic = lSigPosic + 1
                End If
             Loop While Len(sCadImprimir) <= lNumeroCaracteres _
                    And lIniPosic <= Len(sCadMemo)
             '-------Imprimir cada línea-----------
             ' Printer. CurrentY no se indica ya que el salto de carro se añade automaticamente
             ' a cada instrucción Print. Pero hay que expecificar CurrentX por cada línea
             Printer.CurrentX = ? ' Aquí pones distancia de margen izq. para cada línea
             Printer. Print sCadImprimir
        Loop

        ' Enviar doc a la impresora
        Printer.EndDoc
'*****************************************************************************************************
Es posible que se altere un poco la anchura de la cadena por sobrepasar una vez las condiciones a la salida del bucle. Si es así, reducir el nº de caracteres, o estudiar la manera de intercalar más variables de posición en el bucle para remediarlo. Tambien podeis experimentar con la anchura medida con Printer.TextWidth(sCadImprimir) en lugar de Len(sCadImprimir). Mejorarlo y corregirlo ya es cosa vuestra y nos lo contais. Espero que os sirva. Para más información sobre Printer pedidle a Ramón Egido el documento que cita en su mensaje. Saludos

Santiago Jimeno (Madrid)



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com