Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Problema de escalado de funtes con QuickReport (https://www.clubdelphi.com/foros/showthread.php?t=92777)

darkerbyte 30-01-2018 08:18:23

Problema de escalado de funtes con QuickReport
 
Hola amigos del foro

Me ha pasado algo extraño con Quickreport. La computadora de mi cliente donde instalé un sistema de gestión de inventarios tiene windows 10 pero lo que hizo fue cambiar el tamaño de los elementos de pantalla (en la configuración del windows) y los puso al 150%
Esto me esta generando un problema en Quickreport porque los elementos dentro del reporte aparecen mucho mas pequeños a como fueron diseñados. Y por ende también se imprimen más pequeños.
Pongo aquí un ejemplo:

Ver Imagen en Dropbox

En todos los reportes me hace lo mismo. Cambié la configuración de windows al 125% y me los reduce un porcentaje menor. Solo cuando en la configuración de Windows están los elementos al 100% es cuando me lo muestra bien en el reporte.

Alguien sabe quizá de alguna propiedad que haya que configurar en Quickreport para que no me haga este escalado? Gracias a todos por su ayuda,

Versión Delphi: XE5
Versión QuickReport: 5.05

Garada 30-01-2018 23:05:19

En delphi 2010 y QR 5.05.2 me va con la modificación del método CreateMetafilecanvas en la unidad QrPrntr:

Código Delphi [-]

procedure TQRPrinter.CreateMetafileCanvas;

  function scaleToNativeDeskRes(pVal: Integer): Integer;
  var
   tTemp: HDC;
  begin
    tTemp := GetDC(0);
    try
      Result := Round((pVal * GetDeviceCaps(tTemp, VERTRES)) / GetDeviceCaps(tTemp, DESKTOPVERTRES));
    finally
      ReleaseDC(0, tTemp);
    end;
  end;

begin
  FMetafile := TMetafile.Create;
//{$define HIRES}
{$ifdef HIRES}
  // try a high res canvas
  XFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsX) / 254;
  YFactor := GetDeviceCaps(aPrinter.Handle, LogPixelsY) / 254;
  FMetafile.Width := XSize(PaperWidthValue);
  FMetafile.Height := YSize(PaperLengthValue);
  FCanvas := TMetafileCanvas.Create(FMetafile, aprinter.Handle);
  FCanvas.Font.PixelsPerInch := GetDeviceCaps(aprinter.Handle, LOGPIXELSY);
  {$else}
  FMetafile.Width := scaleToNativeDeskRes(XSize(PaperWidthValue));
  FMetafile.Height := scaleToNativeDeskRes(YSize(PaperLengthValue));
  FCanvas := TMetafileCanvas.Create(FMetafile, 0);
//  FCanvas.Font.PixelsPerInch := MetafileDPI;
//***
  YFactor := Screen.PixelsPerInch / 254;
  XFactor := YFactor;
  SetGraphicsMode( FCanvas.handle, GM_ADVANCED);
{$endif}
  //FHyperlinks := TList.Create;
end;

darkerbyte 31-01-2018 19:10:33

Eureka
 
Gracias Garada, me ha funcionado a la perfección
Dios te bendiga con un Core i9
Saludos


La franja horaria es GMT +2. Ahora son las 20:04:49.

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