FoxPro/Visual FoxPro - impresion corrida

   
Vista:

impresion corrida

Publicado por hugo hugobaieli@yahoo.com (9 intervenciones) el 07/03/2014 01:07:03
por favor, si alguien me da una mano
trabajo con vfp6 armo los listados con @ say , asigno las coordenadas para una impresora, imprime bien
pero cuando lo paso a otra impresora se corre la linecion, saben como se puede dejar fijo, que salga en todas
las impresoras igual
gracias
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

impresion corrida

Publicado por Fidel José (558 intervenciones) el 07/03/2014 15:45:22
@ say es una forma antigua, útil todavía para trabajar con impresoras de matriz de punto, con secuencias de escape y SET DEVICE TO (lcnamePrinter)
Para trabajar con cualquier impresora gráfica, debes utilizar los comandos ? | ??
Para poder tabular con comodidad necesitas utilizar fuentes de espaciado fijo (Lucida Console, Courier New)

Este es un ejemplo. En general conviene resumir el trabajo a imprimir en un Array o en un cursor.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
PROCEDURE PrintProof
*---------------------------------
LOCAL lcPrinter,I,LnCopias,j,LnMaxLines,lnCount,lnPag
lnMaxLines=62
lnCopias=2
lnCount=0
LOCAL ARRAY gaPrint(100)
#DEFINE PR_MARGEN 5
#DEFINE PR_FONT "Lucida Console"
#DEFINE PR_SIZE 8
#DEFINE PR_STYLE "N"
 
* Prepara el trabajo a imprimir en un ARray (gaprint)
FOR i=1 TO ALEN(gaprint)
	gaprint[i]=PADR("Texto enviado "+TRANSFORM(i),40);
		+TRANSFORM(ROUND(1260*i/93,2),"999,999.99")+" ";
		+TRANSFORM(ROUND(18*36/i,2),"999,999.99")
NEXT
 
* Selección de la impresora
lcPrinter=GETPRINTER()
 
IF EMPTY(lcPrinter)
	RETURN
ENDIF
 
* Activa la impresora seleccionada
SET CONSOLE OFF
SET PRINTER TO NAME (lcPrinter)
 
* Preguntar estado de la impresora (Vertical u Horizontal)
do while PrtInfo(1)#0	&& si no está en vertical
	Messagebox("&lcPrinter"+chr(13)+"Seleccione Orientación Vertical.",0,Th_mensaje)
	sys(1037)
ENDDO
SET PRINTER ON
 
* Comienza la impresión
FOR j=1 TO lnCopias
	lnCount=0
	lnPag=0
	FOR i=1 TO ALEN(gaPrint)
		IF PROW()=0
			lnPag=lnPag+1
			? "Empresa Impresiones" at 1 FONT "Arial",12 STYLE "B"
			? "Domicilio Empresa Impresiones" at 1 FONT "Arial",10 STYLE "N"
			?? "Copia "+TRANSFORM(j)+" » Pag "+TRANSFORM(lnPag) ;
				at 100 FONT "Arial",8 STYLE "N"
			? REPLICATE(CHR(151),70) AT 1 FONT "Arial",8 STYLE "N"
			? PADR("Descripción",40)+" ";
				+PADC("Columna1",10)+" ";
				+PADC("Columna2",10) at PR_MARGEN FONT PR_FONT,PR_SIZE STYLE PR_STYLE
			? REPLICATE(CHR(151),70) AT 1 FONT "Arial",8 STYLE "N"
			lnCount=5
		ENDIF
 
		? gaPrint[i] at PR_MARGEN font PR_FONT,PR_SIZE STYLE PR_STYLE
		lnCount=lnCount + 1
		IF lnCount>lnMaxLines
			EJECT
		ENDIF
 
	NEXT
	IF j<lnCopias
		EJECT
	ENDIF
NEXT
* Cierra la impresora seleccionada (respetar el orden)
SET CONSOLE ON
SET PRINTER OFF
SET PRINTER TO
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

impresion corrida

Publicado por hugo (9 intervenciones) el 08/03/2014 13:13:17
gracias, lo voy a probar , un abrazo
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