Visual Basic - Imprimir en columnas con Printer.print

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Imprimir en columnas con Printer.print

Publicado por Adolfo (117 intervenciones) el 15/12/2002 18:33:34
Tengo el siguiente codigo:

'Variables
PosNombreProd = 200
PosCantidadProd = 1000
PosPUnitarioProd = 1500
PosSubTotalProd = 2000

Printer.CurrentX = PosNombreProd
Printer.Print VarNombreProd
Printer.CurrentX = PosCantidadProd
Printer.Print VarCantidad
Printer.CurrentX = PosPUnitarioProd
Printer.Print VarPunit
Printer.CurrentX = PosSubTotalProd
Printer.Print VarSubTotal

El programa me imprime la información de la siguiente manera:

NombreProd
Cantidad
PrecioUnitario
Total

y yo ocupo imprimir todo sobre la misma linea, Ejemplo:

NombreProd Cantidad PrecioUnitario Total

El problema es que si le meto espacios en blanco:

Printer.Print VarNombreProd & " " & VarCantidad & " " Etc.

Entonces las columnas no me quedarian en linea recta, pues la cantidad de caracteres de los nombre de los pruductos así como los precios de los productos tendran cantidad de caracteres variable. Ejemplo:

NombreProd Cantidad PrecioUnitario Total
Atun aumado 10 200.00 2000.00
Leche 2 100.00 200.00

Alguien me podria dar alguna sugerencia sobre como hacer para que las columnas queden en linea recta, Ejemplo:

NombreProd Cantidad PrecioUnitario Total
Atun aumado 10 200.00 2000.00
Leche 2 100.00 200.00

MUCHAS GRACIAS POR LA AYUDA.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Imprimir en columnas con Printer.print

Publicado por pacman (3 intervenciones) el 15/12/2002 19:40:46
Puedes probar:

Printer.print nombre; tab(20); cantidad; tab(40); precio

A ver si te sirve, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Imprimir en columnas con Printer.print

Publicado por Francisco (65 intervenciones) el 16/12/2002 02:10:28
Adolfo:
Te respondí esta duda directamente a tu correo. Hazme saber si aún tienes problemas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir en columnas con Printer.print

Publicado por TROM_US (1 intervención) el 27/08/2018 23:29:58
Es correcto, ya tienes tus limites x, pero igual deves fijar el punto Y desde donde imprimir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'deves tomar encuenta el tamaño de la palabra de cada columna para no ser menos o mas
' usa Printer.TextWidth(VarNombreProd) ' esto te da el mañaño de la palabra, asi...
'si tu palabra VarNombreProd es mayor de 800, sabras que colocarla en la pocicion 200 rebasara la pocicion 1000 
'de la siguiente columna, portanto usa ese valor para colocar bien esas columnas, ejemplo una separacion de 100 
'despues de cada columna
'éjemplo
'PosNombreProd = 200 ' a los 200
'PosCantidadProd = PosNombreProd + Printer.TextWidth(VarNombreProd) + 100
'PosPUnitarioProd = PosCantidadProd + Printer.TextWidth(VarCantidad) + 100
'y asi sucesivamente etc...
 
 
'Variables
PosNombreProd = 200 ' a los 200
PosCantidadProd = 1000 ' a los 1000, osea 800 despues del primer 200
PosPUnitarioProd = 1500
PosSubTotalProd = 2000
 
puntoY=Printer.CurrentY
Printer.CurrentX = PosNombreProd
Printer.Print VarNombreProd
Printer.CurrentY=puntoY 'esto mantendra la misma linea
Printer.CurrentX = PosCantidadProd 'y obvio esto en la pocicion X de la columna que fijaste
Printer.Print VarCantidad
Printer.CurrentY=puntoY 'esto mantendra la misma linea
Printer.CurrentX = PosPUnitarioProd 'y obvio esto en la pocicion X de la columna que fijaste
Printer.Print VarPunit
Printer.CurrentY=puntoY 'esto mantendra la misma linea
Printer.CurrentX = PosSubTotalProd 'y obvio esto en la pocicion X de la columna que fijaste
Printer.Print VarSubTotal



un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
REPORTE.Clear
REPORTE.AddItem "Nombre"
REPORTE.AddItem ": " & nombre.Text
REPORTE.AddItem "Direccion"
REPORTE.AddItem ":  " & direccion.Text
 
MIX = Printer.TextWidth("Direccion") 'FIJAMOS EL LARGO MAS LARGO
For X = 0 To REPORTE.ListCount - 1
  MIY = Printer.CurrentY 'FIJAMOS MI INICIO DE Y PARA SEGUNDA LINEA
  Printer.Print REPORTE.List(X) 'PRIMERA LINEA TITULO
  Printer.CurrentY = MIY
  Printer.CurrentX = MIX
  X = X + 1
  Printer.Print REPORTE.List(X) 'SEGUNDA LINEA VALOR
Next X
Printer.Print ""
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar