Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-08-2007
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
impresion directa?

hola gracias a todos por la ayuda que siempre me prestan.

Si pueden necesito ejemplo o algun linck para poder relizar impresiones directas desde un conjunto de datos consultados en una base de datos o desde un memo.

Mucha gracias a todos
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #2  
Antiguo 15-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
En la ayuda de Delphi, hay un topico llamado TPrinter y en él hay un label que dice Using TPrinter, el cual te explica como usar sus metodos BeginDoc, EndDoc y como escribir por medio de su Canvas la impresión que necesitas, todo eso lo puedes adaptar a tu necesidad, ya sea para la del conjunto de datos o la del Memo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 16-08-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Otra opción tal vez más directa sea que en lugar de usar un TMemo (como comentas) uses un TRichEdit (propiedad PlainText = True), en ese caso el comportamiento será muy similar al TMemo, con la diferencia de que un TRichEdit tiene el método Print, que te imprimirá el contenido del control.
En este caso no deberás hacer nada más que llamar al método Print.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 21-08-2007
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
gracias

con sus respuestas me han aclarado el panorama.

muchas gracias por todo
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #5  
Antiguo 23-08-2007
luchifer luchifer is offline
No confirmado
 
Registrado: jul 2007
Ubicación: Santa Cruz - Bolivia
Posts: 50
Poder: 0
luchifer Va por buen camino
Impresion Directa

Mejor que este procedimiento no pude encontrar
Pruebalo !!!

Colocas un objeto excel y listo

procedure TFlis_comprob.manda_xls;
var Rango:Excel2000.Range;
I, row:integer;
bookmark:tbookmarkstr;
begin
Excelapplication1.Visible[0]:=true;
Excelapplication1.Workbooks.Add(null,0);
Rango:=Excelapplication1.ActiveCell;
for i:=0 to Qcon_det.FieldCount-1 do
begin
rango.Value:=Qcon_det.Fields[i].DisplayLabel;
rango:=rango.Next;
end;
Qcon_det.DisableControls;
bookmark:=Qcon_det.Bookmark;
Qcon_det.First;
row:=2;
while not Qcon_det.Eof do
begin
rango:=Excelapplication1.Range['A'+Inttostr(row),'A'+inttostr(row)];
for i:=0 to Qcon_det.FieldCount-1 do
begin
rango.Value:=Qcon_det.Fields[i].AsString;
rango:=rango.Next;
end;
Qcon_det.Next;
inc(row);
end;
Qcon_det.EnableControls;
rango:=Excelapplication1.Range['a1','e'+inttostr(row-1)];
rango.AutoFormat(1,null,null,null,null,null,null);
end;


Y para que funciones yo hago!!
QCon_det.Close;
QCon_det.SQL.Clear;
QCon_det.SQL.Add(Consul2);
QCon_det.Open;
if wdatxls.Checked then manda_xls else QRmayor.Preview;

y funciona excelentemente
Responder Con Cita
  #6  
Antiguo 23-08-2007
luchifer luchifer is offline
No confirmado
 
Registrado: jul 2007
Ubicación: Santa Cruz - Bolivia
Posts: 50
Poder: 0
luchifer Va por buen camino
Impresion directa

Perdon me equivoquede rutina pra enviar a excel los datos del query. Aqui t va la rutina para impresion directa

procedure TFpto_pollo.imprime_fac(stdoc, stipo:shortstring;sndoc:integer);
Var MyPrinter: TextFile;
xcan, xdes, xval, xtot, xpag, xcam:shortstring;
xsum:real;
begin
AssignFILE(MyPrinter,'LPT1');
ReWrite(MyPrinter);
Write(MyPrinter, CHR(27) + CHR(64)); // Inicializar Impresora
//Write(MyPrinter, CHR(27)+CHR(67)+CHR(44)); // Fijar Tamaño en Lineas
Write(MyPrinter,CHR(27)+ CHR(103)); // Tipo de Letra Chicas
//Write(MyPrinter,CHR(27)+CHR(197)); // Negrita
//Write(MyPrinter,CHR(27)+CHR(179)+CHR(28)); // Espacio entre Lines
if stipo='FAC' then Writeln(MyPrinter,'MICROMARKET VIA RAPIDA') else Writeln(MyPrinter,'POLLOS ROSS');
if stipo='FAC' then Writeln(MyPrinter,'AV.ROQUE AGUILERA ESQ.RADIAL CASTILLA') else Writeln(MyPrinter,'AV.SANTOS DUMONT CASI 4TO ANILLO');
if stipo='FAC' then Writeln(MyPrinter,'NIT 2642735017 TELF.3513621') else Writeln(MyPrinter,'NO ES FACTURA TELF.3533417');
if stipo='FAC' then Writeln(MyPrinter,'FACTURA : '+wnrofac.text+' ALFAB.'+walfab.text);
if stipo='FAC' then Writeln(MyPrinter,'NR.ORDEN:'+wnorden.text+' FECHA:'+datetostr(now));
if wnomfac.Text<>'' then
Writeln(MyPrinter,'Senores : '+wnomfac.text)
else
Writeln(MyPrinter,'Senores : Clientes Varios');
//----------------------------
if wnit.Text<>'' then
Writeln(MyPrinter,'NIT : '+wnit.text)
else
Writeln(MyPrinter,'PARA SERVIRSE EN :'+tbl_gloprod.fieldbyname('refer').asstring);
//------------------------------
tbl_gloprod.Locate('tdoc;ndoc',VarArrayOf([stdoc,sndoc]),[loCaseinsensitive]); //loCaseInsensitive
Writeln(MyPrinter,'-------------------------------------');
Writeln(MyPrinter,' Cant. Producto Valor ');
Writeln(MyPrinter,'-------------------------------------');
xsum:=0;
tbl_movpro.Locate('tdoc;ndoc',VarArrayOf([stdoc,sndoc]),[loCaseinsensitive]); //loCaseInsensitive
while not tbl_movpro.Eof and (tbl_movpro.FieldByName('tdoc').AsString=stdoc) and (tbl_movpro.FieldByName('ndoc').AsInteger=sndoc) do
begin
xcan:=format('%6.2f',[tbl_movpro.fieldbyname('cant').asfloat]);
xdes:=copy(tbl_movpro.fieldbyname('descri').AsString,1,20);
xval:=format('%8.2f',[tbl_movpro.fieldbyname('valor_bs').asfloat]);
xsum:=xsum+tbl_movpro.fieldbyname('valor_bs').asfloat;
Writeln(MyPrinter,xcan+' '+xdes+' '+xval);
tbl_movpro.Next;
end;
Writeln(MyPrinter,'-------------------------------------');
xtot:=format('%8.2f',[xsum]);
xpag:=format('%8.2f',[strtofloat(wpagbs.text)]);
xcam:=format('%8.2f',[strtofloat(wcamb.text)]);
Writeln(MyPrinter,' Total Facturado : '+xtot);
Writeln(MyPrinter,' Total Pagado : '+xpag);
Writeln(MyPrinter,' Cambio : '+xcam);
Writeln(MyPrinter,'-------------------------------------');
if stipo='FAC' then Writeln(MyPrinter,'MICROMARKET VIA RAPIDA LE AGRADECE') else Writeln(MyPrinter,'POLLOS ROSS LE AGRADECE');
Writeln(MyPrinter,'POR SU PREFERENCIA '+stdoc+'-'+inttostr(sndoc));
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
Writeln(MyPrinter,'');
//Write(MyPrinter,#12); // Expulsar la Hoja
System.CloseFile(MyPrinter);
end;

Y funciona re bien
Responder Con Cita
  #7  
Antiguo 24-08-2007
Avatar de voldemmor
voldemmor voldemmor is offline
Miembro
 
Registrado: ago 2006
Posts: 232
Poder: 18
voldemmor Va por buen camino
ya gracias

No te preocupes por la equivocacion, voya ver tambien el procedimiento de envio a excel a ver como me va, aunque aun no lo he necesitado pero no se sabe cuando se requiera....




gracia a todos
__________________
tu mente es tu mas presiado tesoro, cultiva tu conocimiento
Responder Con Cita
  #8  
Antiguo 05-09-2007
emimarz emimarz is offline
Registrado
 
Registrado: sep 2007
Posts: 5
Poder: 0
emimarz Va por buen camino
Cita:
Empezado por luchifer Ver Mensaje
Perdon me equivoquede rutina pra enviar a excel los datos del query. Aqui t va la rutina para impresion directa

procedure TFpto_pollo.imprime_fac(stdoc, stipo:shortstring;sndoc:integer);
Var MyPrinter: TextFile;
xcan, xdes, xval, xtot, xpag, xcam:shortstring;
xsum:real;
begin
AssignFILE(MyPrinter,'LPT1');
ReWrite(MyPrinter);
Write(MyPrinter, CHR(27) + CHR(64)); // Inicializar Impresora
//Write(MyPrinter, CHR(27)+CHR(67)+CHR(44)); // Fijar Tamaño en Lineas
Write(MyPrinter,CHR(27)+ CHR(103)); // Tipo de Letra Chicas
//Write(MyPrinter,CHR(27)+CHR(197)); // Negrita
//Write(MyPrinter,CHR(27)+CHR(179)+CHR(28)); // Espacio entre Lines
if stipo='FAC' then Writeln(MyPrinter,'MICROMARKET VIA RAPIDA') else Writeln(MyPrinter,'POLLOS ROSS');
if stipo='FAC' then Writeln(MyPrinter,'AV.ROQUE AGUILERA ESQ.RADIAL CASTILLA') else Writeln(MyPrinter,'AV.SANTOS DUMONT CASI 4TO ANILLO');
if stipo='FAC' then Writeln(MyPrinter,'NIT 2642735017 TELF.3513621') else Writeln(MyPrinter,'NO ES FACTURA TELF.3533417');
if stipo='FAC' then Writeln(MyPrinter,'FACTURA : '+wnrofac.text+' ALFAB.'+walfab.text);
if stipo='FAC' then Writeln(MyPrinter,'NR.ORDEN:'+wnorden.text+' FECHA:'+datetostr(now));
if wnomfac.Text<>'' then
Writeln(MyPrinter,'Senores : '+wnomfac.text)
else
Writeln(MyPrinter,'Senores : Clientes Varios');
//----------------------------
.............

Writeln(MyPrinter,'-------------------------------------');
xtot:=format('%8.2f',[xsum]);
xpag:=format('%8.2f',[strtofloat(wpagbs.text)]);
xcam:=format('%8.2f',[strtofloat(wcamb.text)]);
Writeln(MyPrinter,' Total Facturado : '+xtot);
Writeln(MyPrinter,' Total Pagado : '+xpag);
Writeln(MyPrinter,' Cambio : '+xcam);
Writeln(MyPrinter,'-------------------------------------');
if stipo='FAC' then Writeln(MyPrinter,'MICROMARKET VIA RAPIDA LE AGRADECE') else Writeln(MyPrinter,'POLLOS ROSS LE AGRADECE');
Writeln(MyPrinter,'POR SU PREFERENCIA '+stdoc+'-'+inttostr(sndoc));
.................
Writeln(MyPrinter,'');
//Write(MyPrinter,#12); // Expulsar la Hoja
System.CloseFile(MyPrinter);
end;

Y funciona re bien
esta fantastico este codigo

pero por esas casualidades para colocarlo en las cordenadas X e Y como se hace???

me dijeron que es con el modo grafico de la impresora pero no logro dar con la tecla
Responder Con Cita
  #9  
Antiguo 19-09-2008
nelostanley nelostanley is offline
Miembro
 
Registrado: oct 2006
Posts: 36
Poder: 0
nelostanley Va por buen camino
hmmmmm

y si quisiera que el detalle te salga ordenado ...es decir
cant. Descripcion Precio
1 Producto1 12.00
2 Producto2 15.00

se puede ??, el codigo anterior funciona perfecto peor el ordden del detalle no es estetico.

Me quiero volver changos hasta en el mensaje me salio desordenado el reporte

Última edición por nelostanley fecha: 19-09-2008 a las 16:13:46.
Responder Con Cita
  #10  
Antiguo 19-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por emimarz Ver Mensaje
esta fantastico este codigo

pero por esas casualidades para colocarlo en las cordenadas X e Y como se hace???

me dijeron que es con el modo grafico de la impresora pero no logro dar con la tecla
Para eso debes usar el Canvas de impresión de la unidad Printers, algo que ya no es usado tan frecuentemente, pero te saca de muchos aprietos.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 19-09-2008
luchifer luchifer is offline
No confirmado
 
Registrado: jul 2007
Ubicación: Santa Cruz - Bolivia
Posts: 50
Poder: 0
luchifer Va por buen camino
Orden de los productos

si puedes hacerlo. basta que le des el orden en la base de datos.
por ejm. si estas usando SQL server, puedes crear un campo de correlatividad en base al cual te imprima el listado.
Responder Con Cita
  #12  
Antiguo 19-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por nelostanley Ver Mensaje
y si quisiera que el detalle te salga ordenado ...es decir
cant. Descripcion Precio
1 Producto1 12.00
2 Producto2 15.00

se puede ??, el codigo anterior funciona perfecto peor el ordden del detalle no es estetico.

Me quiero volver changos hasta en el mensaje me salio desordenado el reporte
Lo que yo hago para que los datos se vean correctamente alineados es esto:

Código Delphi [-]
function TFSalida.RJ(cString:string;nRJustOffset:integer):integer;
begin
  Result := nRJustOffSet - Printer.canvas.TextWidth(cString);
end;

var
  Importe: string;

  printer.BeginDoc;
  with printer.canvas do begin
     Y := 100;
     TextOut(1600,Y,QConsumosFecha.AsString);
     TextOut(2100,Y,QConsumosDescripcion.AsString);
     Importe := Format('%10.2m',[QConsumosImporte.AsFloat]);
     X  := RJ(Importe,3100);
     TextOut(3100,Y,Importe);
  end;
  printer.EndDoc;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayunda con impresión directa jcheco Impresión 2 25-08-2006 11:57:31
Impresion Directa berna Impresión 3 07-04-2005 17:29:22
impresion directa a impresora e_god Impresión 2 12-01-2005 20:14:43
Impresión directa en puerto COM altp Impresión 10 22-05-2004 17:26:03
Impresión directa en EPSON guillotmarc Impresión 6 03-09-2003 10:50:00


La franja horaria es GMT +2. Ahora son las 02:04:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi