PDA

Ver la Versión Completa : Como imprimir por canvas un caracter de salto de linea


buitrago
30-08-2004, 10:47:35
Este es el codigo.

Pero en una impresora de Inyeccion no salta la linea, que deberia hacer, imprimirsela yo tambien...imprimir un caracter de salto?

Hay otra forma de hacerlo?

Este es el codigo:


var
printDialog : TPrintDialog;
myPrinter : TPrinter;
begin
inherited;

// Create a printer selection dialog
printDialog := TPrintDialog.Create(form_Printer_Dialog);

// If the user has selected a printer (or default), then print!
if printDialog.Execute then
begin
// Use the Printer function to get access to the
// global TPrinter object.
// All references below are to the TPrinter object
myPrinter := Printer;
with myPrinter do begin
// Start printing
BeginDoc;
// Set up a large blue font
Canvas.Font.Size := 8;
Canvas.Font.Color := clNone;
// Write out the page size

DatosDatabase.a_Transaction_Queries_Commit.Execute;
DatosDatabase.a_Transaction_Queries_Start.Execute;
q_Factura.Close;
q_Factura.ParamByName('P_EMPRESA').AsInteger := t_FacturasID_EMPRESA.Value;
q_Factura.ParamByName('P_FACTURA').AsInteger := t_FacturasID_FACTURA.Value;
q_Factura.Open;
q_Factura_Detalles.Close;
q_Factura_Detalles.ParamByName('P_EMPRESA').AsInteger := t_FacturasID_EMPRESA.Value;
q_Factura_Detalles.ParamByName('P_FACTURA').AsInteger := t_FacturasID_FACTURA.Value;
q_Factura_Detalles.Open;
if Not(q_Factura.IsEmpty) And Not(q_Factura_Detalles.IsEmpty) then Begin
Canvas.TextOut(20, 20, ' ');
Canvas.TextOut(20, 20, ' ');
Canvas.TextOut(20, 20, 'Factura No. ' + IntToStr(q_FacturaID_FACTURA.Value));
q_Factura_Detalles.First;
While Not(q_Factura_Detalles.Eof) Do Begin
Canvas.TextOut(20, 40, 'Producto: ' + t_Facturas_ProdsID_PRODUCTO.Value);
q_Factura_Detalles.Next;
End;
End;
q_Factura.Close;
q_Factura_Detalles.Close;
DatosDatabase.a_Transaction_Queries_Commit.Execute;
// Finish printing
EndDoc;
end;
end;

buitrago
30-08-2004, 10:48:47
Por fa, responderme eso.

Saludos

Fer

__marcsc
30-08-2004, 11:03:51
Hola,

desconozco el tema, pero te doy mi opinión...

Estás seguro de que tiene sentido querer imprimir un salto de línea en un Canvas? Un Canvas sería como una superfície, tu escribes dada una coordenada (x,y) en un plano. Por lo tanto un salto de línea significaría, simplemente, escribir en una coordenada Y superior a la que estabas escribiendo hasta ahora.

Saludos.

__cadetill
30-08-2004, 11:10:05
Como bien dice Marc, lo único que has de hacer es aumentar la Y

En mi web tienes una demo del TListView en la que se muestra cómo imprimir con el Canvas. Echale una ojeada para terminar de aclarar tus dudas

EDIT:
No preguntes en hilos diferentes lo mismo.
Fíjate que en todo momento estás usando la misma Y para la impresión
Canvas.TextOut(20, 20, ' ');
Canvas.TextOut(20, 20, ' ');
Canvas.TextOut(20, 20, 'Factura No. ' + IntToStr(q_FacturaID_FACTURA.Value));
Léete la Guía de Estilos (ver firma)
Usa las etiquetas [ delphi ] y [ /delphi ] sin espacios para el código