Quantcast
Channel: FiveTech Software tech support forums
Viewing all articles
Browse latest Browse all 26212

Ejemplo TdosPrn

$
0
0
Hola Roberto Aunque ya te pasaron unos buenos ejemplos, te alcanzo uno mas,,, que nunca esa demas Esta es la cabecera de la clase:ÚÄ Programa ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿³ Aplication: Class TDosPrint ³³ File: TDOSPRN.PRG ³³ Author: Ignacio Ortiz de Z£¤iga Echeverr¡a ³³ CIS: Ignacio Ortiz (Ignacio_Ortiz) ³³ Internet: ³³ Date: 09/13/96 ³³ Time: 20:20:07 ³³ Copyright: 1997 by Ortiz de Zu¤iga, S.L. ³ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ NOTES: This peace of software is freeware and is not part of FiveWin. The following code will let you print directly to the printer from inside any Fivewin program, like OLD DOS days. Those users that need DOS printing speed can use this class instead of the TPrinter class. The use of the class is very easy and is very similar to the TPrinter class of Fivewin, but we have not create any command to avoid the use of any static vars. This is a little sample of how to use the new class: LOCAL oPrn oPrn := TDosPrn():New("lpt1") oPrn:Say(10,20, "This goes in line 10, column 20") oPrn:EndPage() // optional oPrn:End() A little description of all the members of this class: DATA: cPort: Printing port, by default "LPT1" cCompress: String for compressed mode, by default "15" cNormal: String for normal mode, by default "18" cFormFeed: String for EJECT, by default "12" hDC: Printing file Handle (Internal use) nRow: Current printing row nCol: Current pringing column nLeftMargin: Left margin, by default 0 nTopMargin: Top margin, by default 0 lAnsiToOem: If .T. a Ansi to Oem translation is done automatically whe printing, by default is .T. METHODS: New(cPort) Constructor, no comment End() Destructor, no comment EndPage() End of page, this method is optional if there is only on page Command(c) Let you send any command to the printer without changing the current row and col. The string to pass as a parameter should content the ascii values of the command separated with commas, for example, the command to reset Epson printers should be: "27,69" SetCoors(r,c) Let you change the current row and col is the equivalent of SetPrc() of Ca-Clipper NewLine() Increments the current row Write(cText) Prints the string cText in the current row and column Say(nRow ,; Prints the string cText in nRow, nCol nCol ,; lAtoO indicates if the string should be transformed to Oem, cText ,; by default is ::lAnsiToOem lAtoO ) SayCmp() The same as the method Say but prints in compressed mode and the row is updated accordly. NOTE: If you try to print on a row before the current one a EJECT will be done automatically. In the same way if you try to print on the same row as the current, but in a previous column from the current one a EJECT will be done automatically At the end of this class is a little function call WorkSheet that will make the job of DOS printing a lot easier. Enjoy it! ******************************************************************************** ******************************************************************************** La Clase desarrollada originalmente por Ignacio Ortiz me ha resultado útil por su sencillez y efectividad. El único punto debil de esta clase se encuentra cuando el usuario manda a imprimir y la impresora no está lista (sea cual sea la causa). Esto hace que FiveWin capture el error, saltando sobre cualquier manejador de error que el programador defina, y mostrando esa horrorosa ventana blanca que ya todos conocemos. Si el usuario resuelve el problema de la impresora (sigo hablando de cuando aparece la horrorosa ventana blanca), la impresión se realiza, pero a la final el programa termina explotando igual. Ahora les presento algunas modificaciones que le realizado a esta clase con la idea que la impresión se realice directamente en los puertos físicos de la impresora, emulando (en cierta forma) la función que realiza el ROM BIOS, y buscando evitar que el manejador de errores se adelante en situaciones como la que les comenté en el parrafo enterior. La idea es que hagan todas las pruebas posibles para pulirla, y dejarle abierta a Uds. la posibilidad de manejar los eventuales errores de acuerdo a la necesidad particular de cada quien. Este trabajo ES GRATIS!. Lo único que les pido es que no borren este comentario, ni la documentación anexa, ni los comentarios intercalados en los lugares donde se han realizado las modificaciones. En mi caso real, utilizo esta misma clase, pero la que ha sido modificada por el compañero Jose E. Serrano E. (JESE), quien le añadió algunas características más, pero manteniendo la misma estructura de la clase original de Ignacio. Cuando estas modificaciones funcionen sin inconvenientes, las transferiré a la clase modificada por JESE. Un Abrazo a todos, y que les sea útil Giancarlo J. Sabattino S. 08 Julio 2001 Este trabajo se lo dedico a los compañeros Hernán D. Cecarrelli, José E. Serrano E. (JESE), Juan José Machado, y a Willy Quintana. NOTAS IMPORTANTES: Esta clase está orientada totalmente a impresoras matriciales, o impresoras que se comporten como impresores matriciales, por lo que su uso en cualquier otro tipo de impresora puede causar resultados indeseados. Esta clase trabaja directamente sobre los puertos PRN, LPT1 y LPT2 que existan físicamente en el equipo, por lo que no funcionará en ningún otro tipo de dispositivo. Para mantener compatibilidad, se puede pasar un nombre de archivo para grabar la impresión en disco tal como lo hace la clase original. En teoría, no debe ser activada si alguna aplicación Windows se encuentra haciendo uso de la misma impresora que se desea utilizar. Yo no he intentado utilizarla de esta forma, pero la lógica me dice que los resultados serán totalmente impredecibles. y este es el ejemplo: [code=fw:zkrovwo8][/code:zkrovwo8] lo uso a partir de una clase modificada por Giancarlo J. Sabattino S. (08-07-2001), lo que me agrada es que el command() recibe un array, tambien genera un archivo.prn que puedes direccionar a cualquier impresora, local o en red

Viewing all articles
Browse latest Browse all 26212

Trending Articles