Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   FastReport + Datenbank Anfänger Fragen (https://www.delphipraxis.net/211895-fastreport-datenbank-anfaenger-fragen.html)

user69 18. Nov 2022 08:59

FastReport + Datenbank Anfänger Fragen
 
Ich möchte zukünftig in meiner Windows VCL Anwendung einen PDF (Word) Report erzeugen und habe mir da FastReport dafür rausgesucht.
Das scheint das ganze ja auch ganz gut zu können jedoch ergeben sich bei mir ein paar grundlegende Fragen wie ich es am Besten nutze.
Nun habe ich aber sowohl bei FastReport also auch bei Datenbanken keine Vorkenntnisse.

Ich benötige einige individuelle Textfelder + Grafiken am Anfang und dann eine Wiederholung von x Screenshots (am besten als PNG) mit etwas Text dazu (diese liegen nicht in einer Datenbank vor).
Die Individuellen Grafiken und Texte dachte ich mit FindObject zu lösen und dann einfach den Inhalt zuweisen.
Für den Wiederholbereich bleibt wohl nur eine In-Memory-Table übrig. Da dacht ich dann an eine TFDMemTable.

Das Programm soll bei Kunden laufen. Also alles bei der Installation mitbringen (am besten in der Exe haben).
Deshalb würde ich die Datenbank (Table) lieber umgehen - scheint aber wohl nicht zu gehen.

Nun bleiben mir einige Fragen:

1. Ist dies ein guter Weg oder würdet ihr anders vorgehen (evtl. sogar anderen Reportgenerator?)? Viele Code samples findet man dazu leider nicht.
2. Muss ich irgendwelche Datenbanktreiber beim Kunden installieren? Das würde ich gerne vermeiden, da dies immer irgendwelche Probleme mit sich bringt.
3. Gehen PNG Bilder überhaupt in FastReport? Laut Hilfe gehen die wohl nicht an Grafikobjekte zuzuweisen. BMP sind zu groß und alle anderen verlustbehaftet. Zu Word wären zumindest PNG optimal. Was wäre da zu empfehlen.

Ich hoffe ihr könnt mir da etwas Starthilfe geben.

TurboMagic 18. Nov 2022 12:21

AW: FastReport + Datenbank Anfänger Fragen
 
Hallo,

manche der Dinge die du möchtest (wiederholwerte) gehen auch ohne Datenbank.
Auf FastReports Seite ist dazu aber schon ein DataSet (das von FR) zu benutzen
und dem kann man seine Werte dann in einem Event füttern.

Theoretisch sollten bei FR auch Beispiele mit installiert werden.
Ich nutze FR auch und denke, dass deine Anforderungen damit umsetz7bar sind.

Hab' nur gerade keine Zeit für weitere Details.

Grüße
TurboMagic

user69 18. Nov 2022 18:43

AW: FastReport + Datenbank Anfänger Fragen
 
Vielen Dank!!!

Ich habe es mal soweit kurz getestet.
Grundlegend bekomm ich wohl das meiste mit dem DataSet hin.

Für Text geht auch der Wiederholbereich auch ganz gut.
Aber ich für das Bild hab ich keine Idee, wie ich das zum laufen bekomme.

Ich habe Picture2 im Wiederholbereich eingefügt und dies auf das field picture im TfrxUserDataSet (MasterDS) zugewiesen.

Per folgender procedure kann ich perfekt den Text für MemoFelder setzen. Aber für die Grafik finde ich keine Weg wie es überhaupt geht.
Ich kann das Bitmap (oder PNG) ja nicht dem variant zuweisen.

Code:
procedure TForm1.MasterDSGetValue(const VarName: String; var Value: Variant);
//var p: TBitmap;
begin
  if CompareText(VarName, 'name') = 0 then
    Value := Master[MasterNo][2];
  if CompareText(VarName, 'year') = 0 then
    Value := Master[MasterNo][3];
  if CompareText(VarName, 'picture') = 0 then begin
//    p.Create;
//    p.LoadFromFile('.\pic1.bmp');
//    Value:= p;
  end;
end;
Hat da jemand eine Tipp, wie ich das Bild im Report ohne Datenbank setze?

mytbo 18. Nov 2022 18:44

AW: FastReport + Datenbank Anfänger Fragen
 
Zitat:

Zitat von user69 (Beitrag 1514956)
Ich hoffe ihr könnt mir da etwas Starthilfe geben.

Die Aufgabe lässt sich in FastReport einfach erledigen. Du kannst z.B. eigene Variablen anlegen. Für deine Zwecke bietet sich auch eine universelle Anbindung, wie ich sie hier beschrieben habe, an. Wenn du die Ressourcen von Hand laden willst, kannst du es auch im Event OnBeforePrint der Report-Komponente erledigen. Bei dir würde sich folgendes Schema anbieten:
Delphi-Quellcode:
procedure ...DoReportBeforePrint(pmSender: TfrxReportComponent);
var
  fileName: TFileName;
begin
  if pmSender is TfrxPictureView then
  begin
    fileName := TPath.Combine(ImageFileDir, TPath.ChangeExtension(TfrxPictureView(pmSender).Name, '.png'));
    if TFile.Exists(fileName) then
      TfrxPictureView(pmSender).Picture.LoadFromFile(fileName);
Es stehen mehrere Wege offen und alle führen dich sicher ans Ziel.

Bis bald...
Thomas

user69 19. Nov 2022 11:08

AW: FastReport + Datenbank Anfänger Fragen
 
Super. Das BeforePrint Ereignis funktioniert bestens - vielen Dank.

TurboMagic 19. Nov 2022 11:24

AW: FastReport + Datenbank Anfänger Fragen
 
Jupp! Das war glaube ich auch was ich als Event im Kopf hatte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.

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