Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi QuickReport - Nur schwarzer Balken anstelle der Grafik (https://www.delphipraxis.net/93769-quickreport-nur-schwarzer-balken-anstelle-der-grafik.html)

NetSonic 11. Jun 2007 09:18


QuickReport - Nur schwarzer Balken anstelle der Grafik
 
Guten Morgen!

Folgende Problemstellung:
Ich verwende Borland Delphi 5 und die mitgelieferten Quick-Reports. Im Page-Header nutze ich ein TQRImage, in dass ich vor dem Ausdruck eine Grafik aus einer Datei (BMP / JPG) lade. Nun passiert es gelegentlich auf verschiedenen Rechner und Druckern ohne erkennbaren Grund, dass anstelle der Grafik einfach nur ein komplett schwarzer Balken gedruckt wird! Ich kann nich nachvollziehen waron es liegt, habe die Dateigröße schon geprüft, aber 100kb dürften nicht zu viel sein, oder? Es passiert auch, wenn ich die Grafik schon fest in den Page-Header einbinde und dass Programm dann ausführe. Hat dazu vielleicht jemand eine Idee?

Gruß, NetSonic

marabu 11. Jun 2007 09:38

Re: QuickReport - Nur schwarzer Balken anstelle der Grafik
 
Hallo,

es handelt sich wahrscheinlich um einen bekannten Fehler in QReport. Der Hersteller bietet auf seinen Seiten folgenden Patch an: Black Box Image Problem

Grüße vom marabu

NetSonic 11. Jun 2007 11:18

Re: QuickReport - Nur schwarzer Balken anstelle der Grafik
 
OK, da steht folgendes....

Black Box Image Bug :
=====================

Changes to File QRCtrls.pas - remove all references to PrintBitmap, use stretchdraw only.
Replace the current code with this -

If you're using TQRGrImage, make the same changes to TQRGrImage.Print in GrImgCtrl.pas

Delphi-Quellcode:
procedure TQRImage.Print(OfsX,OfsY : Integer);
var
  Dest : TRect;
  DC, SavedDC : THandle;
begin
  Dest.Top := QRPrinter.YPos(OfsY + Size.Top);
  Dest.Left := QRPrinter.XPos(OfsX + Size.Left);
  Dest.Right := QRPrinter.XPos(OfsX + Size.Width + Size.Left);
  Dest.Bottom := QRPrinter.YPos(OfsY + Size.Height + Size.Top);

  if Stretch then
  begin

    // remove all references to PrintBitmap, use stretchdraw only
    QRPrinter.Canvas.StretchDraw(Dest, Picture.Graphic);

  end else
  begin
    IntersectClipRect(QRPrinter.Canvas.Handle, Dest.Left, Dest.Top, Dest.Right, Dest.Bottom);
    DC := GetDC(QRPrinter.Canvas.Handle);
    SavedDC := SaveDC(DC);
    Dest.Right := Dest.Left + 
      round(Picture.Width / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.XFactor);
    Dest.Bottom := Dest.Top + 
      round(Picture.Height / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.YFactor);
    if Center then OffsetRect(Dest,
      (QRPrinter.XSize(Size.Width) - 
        round(Picture.Width / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.XFactor)) div 2,
      (QRPrinter.YSize(Size.Height) - 
        round(Picture.Height / Screen.PixelsPerInch * 254 * ParentReport.QRPrinter.YFactor)) div 2);

    //and again.
    QRPrinter.Canvas.StretchDraw(Dest, Picture.Graphic);

   RestoreDC(DC, SavedDC);
   SelectClipRgn(QRPrinter.Canvas.Handle, 0);
  end;
  inherited Print(OfsX,OfsY);
end;
allerdings gibt es die datei "QRCtrls.pas" bei mir nicht! liegt es vielleicht daran, dass es sich um die mitgelieferten Quick Report Komponenten handelt und ich diese nicht nachträglich eingefügt habe oder welche datei muss ich verändern. Stehe heute glaube ich etwas neben mir...

kretabiker 11. Jun 2007 11:49

Re: QuickReport - Nur schwarzer Balken anstelle der Grafik
 
Hi,

das ist in der Tat ein Problem mit den Standard-QR-Komponenten unter D5; die auf der QR-Website beschriebenen Workarounds beziehen sich auf die QR-Pro-Versionen, so dass sie dem Standard-Anwender nicht helfen.

Es gibt ein paar Workarounds im Netz, die mehr schlecht als recht helfen.
- Nur Grafiken mit weniger als 256 Farben verwenden
- Der Bereich links oben der Grafik sollte als Farbe Rein-Weiß verwenden
- Irgendwas war da noch mit Transparenz, glaube ich, aber das fällt mir nicht mehr ein

Ein Versuch mit Google könnte dich weiterbringen - insbesondere auf ältere Einträge aus den Jahren 1999-2002 achten -, aber ohne die Pro-Version ist das alles nur gefrickel.

Übrigens war das ein Grund, warum wir nach mehren Jahren die QRs aus unseren Projekten geworfen haben, denn das Problem ist einem Kunden nur sehr schwer zu erklären.

Greetings

Udo

messie 11. Jun 2007 12:27

Re: QuickReport - Nur schwarzer Balken anstelle der Grafik
 
Zitat:

Zitat von kretabiker
Übrigens war das ein Grund, warum wir nach mehren Jahren die QRs aus unseren Projekten geworfen haben, denn das Problem ist einem Kunden nur sehr schwer zu erklären.

OT: Was benutzt Du denn seitdem?

Grüße, Messie

kretabiker 11. Jun 2007 12:38

Re: QuickReport - Nur schwarzer Balken anstelle der Grafik
 
Hi messie,

Zitat:

OT: Was benutzt Du denn seitdem?
Wir haben die Umstellung von D5 auf TurboDelphi genutzt und QR gegen FastReports Pro ausgetauscht. Dafür mußten 30+ teilweise recht komplexe Reports umgestellt werden, was den Großteil der Umstellungsarbeiten verursacht hat. Aber auch wenn die FR so ihre Macken für Entwickler haben, beim Kunden traten bislang keine Probleme auf - und alle Kunden sind froh, dass endlich Logos immer richtig ausgedruckt werden... ;-)

Greetings

Udo


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz