PDA

Ver la Versión Completa : Ayuda con imprimir


Fede_colon
20-02-2008, 04:41:36
Buenas... soy nuevo en esto.. estoy haciendo un proyecto con una factura que contiene unos cuantos edits, y necesitaria que me imprima la factura entera, pero solo con el contenido de los edits, es decir, que en la impresion figuren los textos de los edits ordenados como en la factura. He visto el componente printer, pero no se usarlo y no entiendo que es canvas texout, textrect, nada de eso...

si alguien me puede dar una mano le agradeceria de antemano!

Chogo
20-02-2008, 06:15:24
Este es un pequeño ejemplo de como imprimir por medio del objecto Printer

Necesitar poner en uso la unidad Printers.

Procedure TFrm.Imprimir;
var
DeviceMode: THandle;
Device, Driver, Port: array[0..1023] of char;
begin
Printer.GetPrinter(Device, Driver, Port, DeviceMode);;
with Printer do
begin
SetMapMode(Printer.Handle,MM_LOMETRIC);
BeginDoc;
Canvas.Font.Name:= 'Verdana';
Canvas.Font.Style:= [fsBold];
Canvas.Font.Size:=12;
Canvas.TextOut(10,100,'Hola mundo');
EndDoc;
end;
Printer.SetPrinter(Device, Driver, Port, DeviceMode);
end;

Fede_colon
20-02-2008, 16:25:36
disculpa, olvide aclarar que estoy trabajando con c++ builder 6, y no entiendo mucho todavia como para traducir el codigo a c++... si me puedes ayudar.. gracias!!

otra preguntita... en el TextOut(int X, int Y, AnsiString texto) en que unidades estan X e Y? o a cuantos centimetros equivale? porq con esto podria alinear mi texto y solucionaria el problema, ya que no logro colocarlo en el espacio de la hoja que necisito imprimir mi texto... gracias por todo!

Chogo
22-02-2008, 01:07:56
No se nada de c++, pero si te das cuenta la ayuda de delphi y c builder son la misma.

Ahi tambien puedes encontrar la respuesta a tus preguntas si el textout usa centimetros. solo selecciona el textout y dale "F1";).

negro_sto
23-02-2008, 21:05:29
viejaaaa
soy el negro jajaja
usa un QReport y acomodalo

ucanneo
26-02-2008, 19:26:44
Pues bueno recien estoy en lo mismo y ve he visto en la necesidad de pasarlo a builder (gracias por la ayuda),
hay que aclarar que tienes que ver a cada hoja de impresion como un objeto TCanvas, por lo que si has manejado
este objeto antes no tendrás problemas, es decir si lo que quieres es poner un texto en cualquier parte de la hoja
tendrías que:


1.- Darle formato al texto (Cabiar las propiedades de fuente "Canvas->Font" )

2.- Calcular el sitio donde lo vas a poner... y ponerlo (Canvas->TextOutA(posicionX, posicionY, "Texto"))


Si lo que uieres poner es un gráfico o crear una segunda página en blando checa el ejemplo

//---------------------------------------------------------------------------

void __fastcall TForm1::btnImprimirClick(TObject *Sender)
{

Printer()->Title = "Listado"; //Nombre del archivo

Printer()->BeginDoc(); //Abriendo el buffer de impresion, como abrir un .doc

Printer()->Canvas->Draw(100,100,Image1->Picture->Graphic); //ASí es como mandas una imagen al documento
/*
En esta parte del código es donde pones en la página lo que te plazca
ya sean textos, imagenes o dibujos, siempre teniendo en cuenta que la página es
un lienzo gigante Printer()->Canvas->LoQueDeseesHacer
*/

Printer()->NewPage(); // as´es como obtienesuna nueva pag, en blanco por supuesto


Printer()->EndDoc(); //Como darle salvar al .doc y prepararlo para la impresion


}
//---------------------------------------------------------------------------



_____________________
saludos
_____________________