Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
13Activity
0 of .
Results for:
No results containing your search query
P. 1
Impresion en Delphi

Impresion en Delphi

Ratings: (0)|Views: 1,898 |Likes:

More info:

Categories:Topics, Art & Design
Published by: Franklin Quispe Arpi on Aug 20, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/24/2013

pdf

text

original

 
1
 Impresión en Delphi
Hay dos formas principales de imprimir en Delphi: utilizando un motor de impresión -generalmenteorientado a reportes de bases de datos, como Report Smith, Quick Report o Crystal Reports- o enviandolos datos directamente al driver de la impresora. Veremos aquí los dos métodos.Es tarea del programador determinar cuando es conveniente usar un reporte o generarlo “a mano”. Losdos métodos tienen puntos a favor y en contra. En general, podemos decir que para reportes simples osobre pocos datos es preferible el enfoque directo por la velocidad de respuesta -es simplemente
irritante
cuando para obtener tres líneas impresas debemos esperar que se cargue el Report Smith, y despuésseguir esperando a que se descargue. En cambio, cuando la consulta sea complicada, implique gráficos,muchos datos, un formato especial de la página o cosas así, valdrá la pena la espera.NOTA: en las versiones de 32 bits, Delphi provee un paso intermedio al Report Smith llamado QuickReport (en Delphi 3 ni siquiera viene incluido el Report Smith). Compuesto de varios componentes VCL,se integra en el ejecutable proveyendo facilidad de programación de reportes complejos con pocasobrecarga. Incluso hay una versión para Delphi 1, que se puede conseguir en el sitio WEB de QuSoft:http://www.qusoft.com.Por supuesto, el último y definitivo determinante del método a utilizar será... el usuario final.
 
1
Se debe agregar la unit
Printers
a la cláusula
uses
para tener acceso al procedimiento
 AssignPrn
.2
Impresión directa, sin utilizar un motor deimpresión
Tengamos en cuenta que si no utilizamos un motor, cualquier subida parece más alta. Entonces ¿por quéno utilizar uno? Principalmente, por la sobrecarga que imponemos al sistema. Al momento de comenzar aimprimir, Delphi debe cargar en memoria los módulos que componen el “reportero”; esto no sólo limita losrecursos disponibles sino que también demora más. Y a veces el resultado no justifica la espera.Cualquiera que haya utilizado Report Smith para hacer reportes sabe bien lo que estamos diciendo.La impresión en Windows se hace a través de funciones de la GDI (Graphics Device Interface), que seencarga de ejecutar los comandos correspondientes al dispositivo específico que producirá la salida. Escomo tener un subordinado a quien le decimos lo que queremos que haga, y que lo haga como pueda. Asique pueden sentirse un poco jefes... hasta que empiecen los problemas, que nunca faltan. Es parte deltrabajo.Cuando enviamos algo a la impresora, Windows se encarga de arrancar el Administrador de Impresión.Delphi define una clase para tratar con la impresión, otro intermediario más para hacer las cosas aún másfáciles. Esta clase se denomina
TPrinter
y está definida en la unit
Printers
, que debemos agregarmanualmente a la cláusula
uses
.
Método 1: asignar la salida estándar a la impresora
Hay una forma fácil de enviar texto a la impresora: crear un
archivo de texto
y redireccionarlo al puertode la impresora. A partir de entonces se puede escribir directamente utilizando los procedimientosestándar
Write
y
Writeln
; el tipo de letra, tamaño, espaciado, etc. son los seleccionados en la propiedad
font
del canvas de
Printer 
. Sólo debemos escribir como hacíamos en DOS (que época...).Para asociar un archivo de texto a la salida de impresora se utiliza el procedimiento
AssignPrn
1
. Notemosque debemos
crear 
el “archivo” con
rewrite
antes de empezar a imprimir, y cerrarlo al terminar.Ejemplo 1: imprimir el contenido de un memo en la impresora con el mismo tipo de letra de pantalla.
 
3
Figura 1
El form principal de la aplicación deimpresión directaCreamos una aplicación muy sencilla; el formprincipal puede verse en la fig. 1 y el listado del evento OnClick del botón “Imprimir” en el listado 1. Notela utilización de un bloque de protección de código
try..finally
para asegurarnos que se libere la salidaestándar aunque se produzcan errores en la impresión. El tema de los errores se tratará en el capítulo de
 Excepciones
.De esta manera se puede imprimir fácilmente un texto.
Método 2: el objeto Printer
Delphi provee una clase para facilitar el acceso directo a la impresora. En las primeras versiones se defineuna variable global, instancia de la clase
Tprinter 
; en la versión 3 esta variable se hace local a la unit
printers
y se define en cambio una
 función
llamada
Printer 
. De esta manera se puede seguir usando lamisma sintaxis. También en esta última versión se agrega una función llamada
SetPrinter
que sirve paracambiar el objeto de impresora global, pudiéndose definir varias instancias con diferentes parámetros.Bueno, entonces la situación es la siguiente: tenemos una tarea que llevar a cabo -la impresión propiamentedicha- un “brazo ejecutor” de nuestras órdenes -la GDI- y un intérprete que traduce nuestro idioma deDelphinianos al lenguaje de funciones que entiende Windows -la instancia de la clase TPrinter. Por lotanto, sólo tenemos que aprender las capacidades de esta última clase para lograr los resultadosapetecidos. Y esto implica, como con cualquier clase, hablar de
Propiedades
y
 Métodos
.
procedure TForm1.Button1Click(Sender:TObject);vart:TextFile;i: integer;beginAssignPrn(t);rewrite(t);tryPrinter.Canvas.Font:= Memo1.Font;for i:= 0 to Memo1.Lines.Count-1 dowriteln(t,memo1.lines[i]);finallyCloseFile(t);end;end;
Listado 1
: El evento OnClick del botón deimpresión

Activity (13)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
San Nahuat liked this
San Nahuat liked this
vic_acosta liked this
Horacio Medina liked this
Claudia López liked this
Horacio Medina liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->