Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2013
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 241
Poder: 14
darkamerico Va por buen camino
Smile Rutina de Impresion TRichEdit

Saludos amigos, estoy intentando acoplar una rutina de impresion a los documentos de mi sistema de Control Documentario, al presionar el boton Imprimir aparece una ventana donde el usuario fija los margenes en cm y el numero de copias, luego finalmente un boton Listo con el siguiente codigo:

Código Delphi [-]
procedure TForm5.PrintRichEdit(Rich: TRxRichEdit; LMargin, RMargin, TMargin, BMargin: real;
  Copies: integer; JobTitle: string);
var
  Loff, TOff, ROff, BOff   : integer;
  XRes, YRes, XOffs, YOffs : integer;
  R: TRect;
begin
  // Set the margins
   { set your needed values in milimeters }
  LOff := Trunc(StrToFloat(txtMIzq.Text)*10);
  TOff := Trunc(StrToFloat(txtMSup.Text)*10);
  ROff := Trunc(StrToFloat(txtMDer.Text)*10);
  BOff := Trunc(StrToFloat(txtMInf.Text)*10);
  { Get printer data }
  XOffs := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX ); { minimum Left offset }
  YOffs := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY ); { minimum Top offset }
  XRes := GetDeviceCaps(Printer.Handle, LOGPIXELSX); { points per inch in X }
  YRes := GetDeviceCaps(Printer.Handle, LOGPIXELSY); { points per inch in Y }
  {Change Your values to printer Units }
  LOff := Round(LOff*XRes/25.4)-XOffs; { of course You can't set margins less than min offset !!! }
  TOff := Round(TOff*YRes/25.4)-YOffs; { of course You can't set margins less than min offset !!! }
  ROff := 2490-Round(ROff*XRes/25.4)-XOffs; { changing to width, not offset !!!}
  BOff := 3510-Round(BOff*YRes/25.4)-YOffs; { changing to height, not offset !!!}

  Rich.PageRect := Rect( LOff, TOff, ROff, BOff );
  // Print the desired number of copies
  while Copies > 0 do begin
    Application.ProcessMessages;
    Rich.Print(JobTitle);
    Dec(Copies);
  end;
end;

El evento click del boton que llama a la funcion anterior es:

Código Delphi [-]
procedure TForm5.Button1Click(Sender: TObject);
begin
  PrintRichEdit(form2.docView, StrToFloat(txtMIzq.Text), StrToFloat(txtMDer.Text), StrToFloat(txtMSup.Text), StrToFloat(txtMInf.Text), cboNumCopias.Value, form2.DBMemo1.Text);
end;


La idea es imprimir solo documentos de 1 pagina en formato A4, pero esta rutina me imprime pequeñas pociones del documento, y las saca en 4 paginas, al parecer los margenes no cuadran, requiero de su ayuda amigos para ver este caso.

Gracias

Americo
Responder Con Cita
 



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
Traducción de rutina JAVA waly2k1 JAVA 2 24-07-2010 10:27:10
Rutina muy lenta... KAYO Firebird e Interbase 10 04-07-2007 17:14:44
Impresión de una ficha con TRichEdit entre otros Pernorak C++ Builder 4 30-05-2007 13:54:59
Problemas con rutina seek JF Sebastian OOP 0 03-02-2007 13:44:20
No sale rutina SQl ............ Coco_jac SQL 2 30-11-2005 16:52:44


La franja horaria es GMT +2. Ahora son las 16:14:22.


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