Font Metrics

03/02/2005 - 23:23 por Vazquez | Informe spam
Tengo una aplicación que debe imprimir un ticket al finalizar la compra
El problema esque estoy tratando de separar cada linea en 4 columnas, por
ejemplo
1 Nieve Vainilla 8.00 8.00
3 Papas 7.50 22.50

El problema esque cuando pongo cada renglon en un String (el renglon se
obtiene de unas columnas de un spread), no me acepta el vbTab, por lo que
tuve que hacer un función que me diera esta separación por medio de
espacios. Ahora el problema esque dependiendo del tipo de letra me da una
diferente identación.

Alguién tiene una forma correcta de hacer esto..
Anexo el codigo


For i As Integer = 0 To .RowCount - 1
linea = tabula(.Cells(i, 0).Text.Trim, .Cells(i, 1).Text.Trim, .Cells(i,
2).Text.Trim, .Cells(i, 3).Text.Trim)
Posy = (topMargin + (count * (printFont.GetHeight(e.Graphics))))
e.Graphics.DrawString(linea, printFont, myBrush, leftMargin, Posy, New
StringFormat(StringFormatFlags.DisplayFormatControl))
count += 1
linea = ""
Next


Private Function tabula(ByVal cant As String, ByVal art As String, ByVal
unit As String, ByVal importe As String) As String
If cant.Length < 2 Then
cant = " " & cant
End If

While art.Length < 25
art = art & " "
End While

While unit.Length < 7
unit = " " & unit
End While

While importe.Length < 7
importe = " " & importe
End While

Return cant & " " & art & unit & importe
End Function

C Vázquez

Preguntas similare

Leer las respuestas

#1 Jorge Serrano [MVP VB]
04/02/2005 - 17:53 | Informe spam
Hola,

¿has probado con Courier New?. Creo recordar que hay una fuente de letra que
te permite no perder el espacio que indicas, y no recuerdo bien si es esta.
Por probar...

Un saludo,

Jorge Serrano Pérez
MVP VB.NET


"Vazquez" wrote:

Tengo una aplicación que debe imprimir un ticket al finalizar la compra
El problema esque estoy tratando de separar cada linea en 4 columnas, por
ejemplo
1 Nieve Vainilla 8.00 8.00
3 Papas 7.50 22.50

El problema esque cuando pongo cada renglon en un String (el renglon se
obtiene de unas columnas de un spread), no me acepta el vbTab, por lo que
tuve que hacer un función que me diera esta separación por medio de
espacios. Ahora el problema esque dependiendo del tipo de letra me da una
diferente identación.

Alguién tiene una forma correcta de hacer esto..
Anexo el codigo


For i As Integer = 0 To .RowCount - 1
linea = tabula(.Cells(i, 0).Text.Trim, .Cells(i, 1).Text.Trim, .Cells(i,
2).Text.Trim, .Cells(i, 3).Text.Trim)
Posy = (topMargin + (count * (printFont.GetHeight(e.Graphics))))
e.Graphics.DrawString(linea, printFont, myBrush, leftMargin, Posy, New
StringFormat(StringFormatFlags.DisplayFormatControl))
count += 1
linea = ""
Next


Private Function tabula(ByVal cant As String, ByVal art As String, ByVal
unit As String, ByVal importe As String) As String
If cant.Length < 2 Then
cant = " " & cant
End If

While art.Length < 25
art = art & " "
End While

While unit.Length < 7
unit = " " & unit
End While

While importe.Length < 7
importe = " " & importe
End While

Return cant & " " & art & unit & importe
End Function

C Vázquez




Respuesta Responder a este mensaje
#2 Pedro Luna Montalvo, MVP
04/02/2005 - 19:37 | Informe spam
Pos si.. los caracteres de Courier New tienen un ancho fijo, y permite
alinear de mejor forma los caracteres.
Otro tipo de letra de ancho fijo es Lucida Console.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


"Jorge Serrano [MVP VB]"
escribió
en el mensaje news:
Hola,

¿has probado con Courier New?. Creo recordar que hay una fuente de letra


que
te permite no perder el espacio que indicas, y no recuerdo bien si es


esta.
Por probar...

Un saludo,

Jorge Serrano Pérez
MVP VB.NET


"Vazquez" wrote:

> Tengo una aplicación que debe imprimir un ticket al finalizar la compra
> El problema esque estoy tratando de separar cada linea en 4 columnas,


por
> ejemplo
> 1 Nieve Vainilla 8.00 8.00
> 3 Papas 7.50 22.50
>
> El problema esque cuando pongo cada renglon en un String (el renglon se
> obtiene de unas columnas de un spread), no me acepta el vbTab, por lo


que
> tuve que hacer un función que me diera esta separación por medio de
> espacios. Ahora el problema esque dependiendo del tipo de letra me da


una
> diferente identación.
>
> Alguién tiene una forma correcta de hacer esto..
> Anexo el codigo
>
>
> For i As Integer = 0 To .RowCount - 1
> linea = tabula(.Cells(i, 0).Text.Trim, .Cells(i, 1).Text.Trim,


.Cells(i,
> 2).Text.Trim, .Cells(i, 3).Text.Trim)
> Posy = (topMargin + (count * (printFont.GetHeight(e.Graphics))))
> e.Graphics.DrawString(linea, printFont, myBrush, leftMargin, Posy,


New
> StringFormat(StringFormatFlags.DisplayFormatControl))
> count += 1
> linea = ""
> Next
>
>
> Private Function tabula(ByVal cant As String, ByVal art As String, ByVal
> unit As String, ByVal importe As String) As String
> If cant.Length < 2 Then
> cant = " " & cant
> End If
>
> While art.Length < 25
> art = art & " "
> End While
>
> While unit.Length < 7
> unit = " " & unit
> End While
>
> While importe.Length < 7
> importe = " " & importe
> End While
>
> Return cant & " " & art & unit & importe
> End Function
>
> C Vázquez
>
>
>
>
Respuesta Responder a este mensaje
#3 Vazquez
05/02/2005 - 21:16 | Informe spam
Muchas gracias, el Lucida Console funcionó muy bien

C Vázquez

"Pedro Luna Montalvo, MVP" escribió en
el mensaje news:
Pos si.. los caracteres de Courier New tienen un ancho fijo, y permite
alinear de mejor forma los caracteres.
Otro tipo de letra de ancho fijo es Lucida Console.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


"Jorge Serrano [MVP VB]"



escribió
en el mensaje news:
> Hola,
>
> ¿has probado con Courier New?. Creo recordar que hay una fuente de letra
que
> te permite no perder el espacio que indicas, y no recuerdo bien si es
esta.
> Por probar...
>
> Un saludo,
>
> Jorge Serrano Pérez
> MVP VB.NET
>
>
> "Vazquez" wrote:
>
> > Tengo una aplicación que debe imprimir un ticket al finalizar la


compra
> > El problema esque estoy tratando de separar cada linea en 4 columnas,
por
> > ejemplo
> > 1 Nieve Vainilla 8.00 8.00
> > 3 Papas 7.50 22.50
> >
> > El problema esque cuando pongo cada renglon en un String (el renglon


se
> > obtiene de unas columnas de un spread), no me acepta el vbTab, por lo
que
> > tuve que hacer un función que me diera esta separación por medio de
> > espacios. Ahora el problema esque dependiendo del tipo de letra me da
una
> > diferente identación.
> >
> > Alguién tiene una forma correcta de hacer esto..
> > Anexo el codigo
> >
> >
> > For i As Integer = 0 To .RowCount - 1
> > linea = tabula(.Cells(i, 0).Text.Trim, .Cells(i, 1).Text.Trim,
.Cells(i,
> > 2).Text.Trim, .Cells(i, 3).Text.Trim)
> > Posy = (topMargin + (count * (printFont.GetHeight(e.Graphics))))
> > e.Graphics.DrawString(linea, printFont, myBrush, leftMargin, Posy,
New
> > StringFormat(StringFormatFlags.DisplayFormatControl))
> > count += 1
> > linea = ""
> > Next
> >
> >
> > Private Function tabula(ByVal cant As String, ByVal art As String,


ByVal
> > unit As String, ByVal importe As String) As String
> > If cant.Length < 2 Then
> > cant = " " & cant
> > End If
> >
> > While art.Length < 25
> > art = art & " "
> > End While
> >
> > While unit.Length < 7
> > unit = " " & unit
> > End While
> >
> > While importe.Length < 7
> > importe = " " & importe
> > End While
> >
> > Return cant & " " & art & unit & importe
> > End Function
> >
> > C Vázquez
> >
> >
> >
> >



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida