Ver Mensaje Individual
  #5  
Antiguo 19-03-2013
alsn alsn is offline
Miembro
NULL
 
Registrado: abr 2012
Posts: 20
Reputación: 0
alsn Va por buen camino
Volviendo a tu primera función, prueba de esta forma:

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 := Round(LMargin*10);
  TOff := Round(TMargin*10);
  ROff := Round(RMargin*10);
  BOff := Round(BMargin*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);
  TOff := Round(TOff*YRes/25.4);
  ROff := Round(ROff*XRes/25.4);
  BOff := Round(BOff*YRes/25.4);
  if Loff < XOffs then Loff := XOffs;
  if TOff < YOffs then TOff := YOffs;
  if ROff < XOffs then ROff := XOffs;
  if BOff < YOffs then BOff := YOffs;

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

Saludos
Responder Con Cita