Delphi - Imprimiendo

 
Vista:

Imprimiendo

Publicado por Pove (2 intervenciones) el 15/04/2005 00:43:47
Y la pregunta es....: como imprimo una imagen y unos cuantos Labels que cargo en tiempo de ejecución???
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:Imprimiendo

Publicado por Elena (330 intervenciones) el 15/04/2005 13:59:46
Investiga sobre el objeto canvas...
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:Imprimiendo

Publicado por Alejandro Sevilla (18 intervenciones) el 17/04/2005 03:35:57
Puedes utilizar la hermosisima y complicada API de windows. mira aqui te va el rollote:
Primero, en la "form" donde quieres imprimir, vate a la parte de USES (esta mero arriba) y agrega la palabra PRINTERS (libreria necesaria para el codigo de manipulacion del canvas de la impresora)

ahora, por ejemplo, digamos que quieres imrimir al presionar un boton, pues entonces, al evento onclic del boton agrega este codigo (ejemplo):

Nota: Con esto puedes imprimir lo que tu quieras, porque en realidad estas controlando el canvas de la impresora y no del delphi. Velo como si tu fueras la mano y tu lapiz es tu impresora

procedure TForm1.Button1Click(Sender: TObject);
const
Col1Position = 0.8; //constantes para distancias de las columnas
Col2Position = 2.2;

TopMargin = 1;
var
PixPerInchX, PixPerInchY: integer; //obtendremos los pixeles por pulgada
X1, X2, Y, LineSpacing: integer; //variables para distancias de columnas y filas

begin
Printer.BeginDoc; //Indicas al Sistema operativo que la impresion de un
//documento ha iniciado
try
with Printer.Canvas do begin
PixPerInchX := GetDeviceCaps(Handle, LOGPIXELSX); //pixeles por pulgada
PixPerInchY := GetDeviceCaps(Handle, LOGPIXELSY); //lo mismo
X1 := Round(Col1Position * PixPerInchX); //convertir pulgadas en distancias
X2 := Round(Col2Position * PixPerInchX); //faciles para nosotros

Y := Round(TopMargin * PixPerInchY); //distancia de margen superior
Font.Name := 'Arial'; //tipo de letra
Font.Size := 14; //tamaño de letra
LineSpacing := Round(TextHeight('X') * 1.05); //distancia entre fila y fila
TextOut(X1, Y,'Nombre' ); //imprime la palabra "Nombre";
TextOut(X2, Y, 'Pepe'); //imprime "Pepe"
Y := Y + 2*LineSpacing; //Da dos saltos de linea (dos clics a la tecla enter)

Textout(X1,Y,'Sueldo');
Textout(X2,Y,floattostr(254.83)); //puedes poner label1.caption, etc
Y := Y + 2*LineSpacing;

//Sigue imprimiendo aqui mas datos si quieres recuerda incrementar la variable Y para que la impresora de saltos de linea

end; //final del with printer....
finally
Printer.EndDoc; // Imprime y avanza a una nueva pagina
end; //final del try
end; //final del procedimiento



Si quieres copia el codigo en algun proyecto y ve los resultados y luego tu le modificas lo que quieras sales?, espero que esto te ayude, la verdad yo apenas conozco la API de Windows y... por DIOS que es complicada, solo la utilizo para imprimir :P
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:Imprimiendo

Publicado por Pove (2 intervenciones) el 19/04/2005 22:47:46
MUCHISISIMAS GRACIAS!!! :D
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