JPG Unterstützung für FastReport

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
markus.fuger
Beiträge: 27
Registriert: So Sep 18, 2005 1:43 pm

JPG Unterstützung für FastReport

Beitrag von markus.fuger »

Hallo!

Da ich, wie einige andere hier im Forum, einen JPG Support von AvERP (oder besser gesagt von FastReport) vermisse, habe ich einmal etwas gesurft und bin dabei auf das FastReport Forum gestoßen, wo ich die notwendigen Infos gefunden habe:

http://www.fast-report.com/en/forum/ind ... wtopic=798
http://www.fast-report.com/en/forum/ind ... wtopic=705

Der BMP Support durch FastReport hat ja bereits zuvor funktioniert (d.h. man konnte statisch ein Bild einbinden, dieses aus einem Blob Feld der Datenbank holen, bzw. es. z.B. während der Report Generierung von einem Pfad mit LoadFromFile laden)
Ein JPG konnte zwar im Designer dargestellt werden, allerdings wurde es nicht gespeichert, auch alle anderen Dinge funktionierten mit JPG Dateien nicht.

Nun habe ich mir einmal den AvERP Sourcecode (allerdings nur die Version 2.0.0.8 ) genommen und dabei folgende Änderungen durchgeführt:

In der FR.inc habe ich den JPEG Support ( {$DEFINE JPEG} ) aktiviert und das Paket in Delphi 5 noch einmal installiert.

Und in den Quellcode Dateien
AvERP.exe: fPreview.pas
AvERPDesign: fDBasis.pas,UDBasis.pas
bei Uses die gewünschte JPEG Unterstützung hinzugefügt.

Dann noch einmal die AvERPStart.exe, AvERPDesign.exe und AvERP.exe kompiliert.
Danach schnell ein Druckformular erstellt, dass eine exteren JPG Datei lädt (mittels LoadFromFile z.B. eine im Artikelstamm hinterlegte Datei auf einem Server) -> es funktioniert.
D.h. nun sollten sowohl einmalig in den Report eingebundene JPGs funktionieren als auch das Verknüpfen mit externen Dateien. Da, die Funktion um Bilder in die Firebird Datenbank aufzunehmen nicht verändert wurde, sind in der DB sicher nur BMPs und diese können wie bisher verwendet werden. (Ohne also in Komplikationen zu laufen, dass FastReport ev. bei einem BlobFeld ein BMP vermutet aber ein JPG komprimiertes Bild bekommt)

Nun zu meiner Frage: Gibt es einen Grund, warum dieses Feature, bei doch überschaubarem Aufwand, noch nicht implementiert wurde? Wo liegt der Hund begraben, dass es diese Funktion noch nicht in der letzten offiziellen AvERP.exe gibt?

SG
Markus
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo Markus,
das hört sich ja äußerst interessant an. Reiche doch den kommentierten Quellcode mit den Erweiterungen an Synerpy weiter, vielleicht wird das dann ja schneller eingebaut als Du denkst. Das wäre doch was - und das noch ohne Datenbankänderung :D :D :D

Wie ist es denn mit dem Zeitverhalten beim Laden der JPG's: Wartet der Report denn, bis die JPG-Daten alle da sind ? Bei den in der DB gespeicherten BMP's in den BLOB-Feldern gibt's ja manchmal den Effekt, dass das Bild (z.B. Firmenlogo) im Report schlichtweg fehlt :shock:
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Re: JPG Unterstützung für FastReport

Beitrag von festus01 »

Hallo Markus,
markus.fuger hat geschrieben: In der FR.inc habe ich den JPEG Support ( {$DEFINE JPEG} ) aktiviert und das Paket in Delphi 5 noch einmal installiert.

Und in den Quellcode Dateien
AvERP.exe: fPreview.pas
AvERPDesign: fDBasis.pas,UDBasis.pas
bei Uses die gewünschte JPEG Unterstützung hinzugefügt.
das würde mich auch interessieren.
Könnten Sie das mal ein wenig genauer beschreiben.
Ich habe den neuesten Quellcode schon angefordert. Da würde ich das gerne einbauen, ausser meinen eigenen kleinen Änderungen.
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
markus.fuger
Beiträge: 27
Registriert: So Sep 18, 2005 1:43 pm

Beitrag von markus.fuger »

Hallo!

Eines gleich einmal vorweg: Ich bin absolut kein Delphi Profi, und weiß nicht, ob verwendete Komponenten nur einmal bei der Installation oder bei jeder Verwendung kompiliert werden, also kann man sich möglicherweise Teile des ersten Schrittes sparen.

Vorrausgesetzt wird, dass sich AvERP bereits korrekt unter Delphi5 kompilieren lässt.
1.a) Deinstallieren der FastReport Komponente (bedingt auch eine Deaktivierung des ExportFilters, da dieser von FastReport abhängig ist)
1.b.) Änderung der Datei FR.inc (im FastReport\source Verzeichnis)

von
//------------------- JPEG images -----------------------------------
// JPEG images - only available in Delphi 3 and above. Adds approximately
// 100Kb to your EXE.
// If you want to show jpeg images in "Picture" object, uncomment
// the following line:
//{$DEFINE JPEG}
nach
{$DEFINE JPEG}
Damit wird einmal seitens FastReport der JPEG Support aktiviert. Speichern und schließen :)

1.c) FastReport über FR5.dpk wieder installieren und das Paktet ExportPack wieder aktivieren.

2.) Die AvERP Projektdatei öffnen (AvERP_Project.pbg) und in der Projektverwaltung folgende Dateien suchen:
fPrievew.pas
UDBasis.pas
fDBasis.pas
in jeder dieser 3 Dateien die "uses" clause im JPEG erweitern.
z.B. fDBasis
aus
....
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
IB_Components,IB_Controls, FR_DSet, FR_Class, StdCtrls, FR_DBSet, FR_Desgn, FR_Rich,
FR_E_HTM, FR_E_CSV, FR_E_RTF, FR_E_TXT, FR_RRect, FR_Chart, FR_BarC,
FR_Shape, FR_ChBox, FR_OLE, FR_Pars, FR_Dctrl, IB_Session, mask, extctrls,
Buttons, Menus, IB_StoredProc, Printers, ShellAPI, WinSpool, ExportPack;
....
mach
....
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
IB_Components,IB_Controls, FR_DSet, FR_Class, StdCtrls, FR_DBSet, FR_Desgn, FR_Rich,
FR_E_HTM, FR_E_CSV, FR_E_RTF, FR_E_TXT, FR_RRect, FR_Chart, FR_BarC,
FR_Shape, FR_ChBox, FR_OLE, FR_Pars, FR_Dctrl, IB_Session, mask, extctrls,
Buttons, Menus, IB_StoredProc, Printers, ShellAPI, WinSpool, ExportPack, JPEG;
....
Da von den Änderungen AvERP.exe und AvERPDesign.exe betroffen sind, diese beiden neu kompilieren. (Ich habe mir auch noch einmal die AvERPStart.exe kompiliert, damit ich eine zu dieser Version passende AvERPStart habe.

Das wars eigentlich schon (Hoffe ich habe nichts vergessen) - Sollte etwas nicht funtkionieren, einfach ein PM oder hier posten

Noch ein kurzes Wort zu
und das noch ohne Datenbankänderung
Das stimmt, bedingt allerdings auch, dass nur Dateien, die auf einem Netzlaufwerk liegen (damit alle User die selben Dateien verwenden und natürlich von FastReport erreichbar sein müssen) verwendet werden können. Ein Anwendungsfall wären ev. Drucksorten, die ein Bild verwenden, dass in der Datenbank unter Artikel -> Dateien abgelegt wurde. Mit einer einfachen Prozedur, könnte man somit einen Verzeichnispfad ermitteln (da ja ev. meherer Dateien bzw. Bilder hinterlegt sein können) diesen dann an den Report übergeben und mit LoadFromFile(<PfadZurDatei>) laden.

SG
Markus
markus.fuger
Beiträge: 27
Registriert: So Sep 18, 2005 1:43 pm

Beitrag von markus.fuger »

......
Zuletzt geändert von markus.fuger am Di Nov 18, 2008 11:38 am, insgesamt 1-mal geändert.
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo Markus,

vielen Dank für die ausführliche Anleitung.
Sobald ich die neuesten Quellcodes habe werde ich das einbauen, zumal auch bei uns ab und an das Logo nicht gedruckt wird.
Vielleicht wird es mit JPEG besser.
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
SYN17
Beiträge: 79
Registriert: Do Feb 16, 2006 8:10 am

RE: JPEG

Beitrag von SYN17 »

Das Problem mit JPEG-Dateien sind die Grundkomponenten.
In der verwendeten IBObjects-Komponente und in Delphi selbst wird JPEG nicht direkt unterstützt. Mit der zusätzlichen JPEG-Unit könnte man zwar ein paar Lücken schließen, aber nicht alle durchgängig.
Antworten