HOLA, despues de tiempo retomanto un proyecto.
El siguiente codigo hace o simula una especie de salto de linea cuando el ancho del nombre del articulo es
demaciado ancho para ser exactos corta la cadena tomando los 1ero cuarenta caracteres y luego crea una
2da linea con el resto del nombre del producto.
El problema esta en que ya 2 lineas no son sufientes ya que necesito imprimir textos pudiendo ser 3 o 4 lineas y no he podido solucionarlo he probado de muchas formas pero siempre falta algo, haber si me pueden ayudar.
Public Sub Imprime_doc(rsT As Recordset, f As Form)
Dim sImp0, sImp1, sImp2, sImp3 As String
Dim Linea, Linea1, Linea2 As String
On Error GoTo Impresion
With Printer
.ScaleMode = vbCentimeters
.FontName = "LinePrinter"
End With
Printer.CurrentY = CDbl(1) 'Horizontal
rsT.MoveFirst
Do Until rsT.EOF
With rsT
sImp0 = Format(Trim(!nomProd))
Linea = Mid(Len(Trim(!nomProd)), 1) 'Numero de caracteres del producto
If Linea >= CDbl(40) Then 'Si sobrepasa los 40 caracteres
Linea1 = Left(sImp0, CDbl(40)) '1ºlinea
Linea2 = Right(sImp0, CDbl(Linea) - CDbl(40)) '2ºlinea
Else
Linea1 = sImp0
Linea2 = ""
End If
Printer.CurrentX = CDbl(1) 'Vertical
Printer.Print Linea1;
sImp1 = Format(!precioVenta, "Fixed")
Printer.CurrentX = CDbl(10) - (Printer.TextWidth(sImp1)) 'Alinea los decimales a la derecha?
Printer.Print sImp1;
sImp2 = Format(!Cantidad)
Printer.CurrentX = CDbl(12) - (Printer.TextWidth(sImp2))
Printer.Print sImp2;
sImp3 = Format(!SubTotal, "Fixed")
Printer.CurrentX = CDbl(14) - (Printer.TextWidth(sImp3))
Printer.Print sImp3;
'Si existe una 2da linea "osea si no esta vacio"
If Not Linea2 = Empty Then
Printer.CurrentX = CDbl(1)
Printer.CurrentY = Printer.CurrentY + CDbl(0.3) 'Separador de filas(se refiere a cuando el nombre es demaciado largo)
Printer.Print Linea2;
Printer.CurrentY = Printer.CurrentY + CDbl(0.5) 'Separador entre Items(se refiere a cuando cambia de items)
Else
Printer.CurrentY = Printer.CurrentY + CDbl(0.5) 'Separador entre Items
End If
End With
rsT.MoveNext
Loop
Printer.EndDoc
Exit Sub
Impresion:
MsgBox "error"
Err.Clear
End Sub