Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   FastReport Anfängerfrage (https://www.delphipraxis.net/205415-fastreport-anfaengerfrage.html)

t2000 7. Sep 2020 16:29

FastReport Anfängerfrage
 
Ich habe einen frxReport und ein frxUserDataSet.
Im frxUserDataSet.Fields(Stringlist) ist genau ein Eintrag drin: 'QRCode'
frxReport hat eine Seite 8x8cm und dort drin ist nur eine Element: Ein QRCode

Ziel der Sache: Ich bekomme einen String und muss dazu einen QRCode erstellen und den als Bitmap abspeichern
FastReport (Enterprise) habe ich sowieso, daher dachte ich, ich nehme das. Fange aber gerade erst mit FastReport an und habe bisher nicht ein einzigen Bericht damit gemacht

Das VCL Programm hat weiterhin eine frxPreview Komponente auf der Form, die den Code anzeigt.

Ganz simpel:

Delphi-Quellcode:
type
  TfrmMain = class(TForm)
    btnMachen: TButton;
    frxReport: TfrxReport;
    frxPreview: TfrxPreview;
    frxUserDataSet: TfrxUserDataSet;
    procedure btnMachenClick(Sender: TObject);
    procedure frxDataSetGetValue(const VarName: string; var Value: Variant);
  private
  public
    QRCode : String;
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}


procedure TfrmMain.btnMachenClick(Sender: TObject);
begin
  QRCode := 'Dies ist mein Test-QRCode';
  frxReport.ShowReport;
end;

procedure TfrmMain.frxDataSetGetValue(const VarName: string; var Value: Variant);
begin
  Value := QRCode;
end;
Wenn ich das starte, sehe ich den QRCode im Preview. Ohne separate Form, so wie ich es möchte. Aber das Programm lässt sich nicht mehr beenden. Ich vermute, da ist ein unsichtbares Fenster aktiv.
Weiterhin glaube ich, das mein Vorgehen mal so gar nicht in Ordnung, geschweige denn gut und sinnvoll, ist.

Hat jemand dazu einen Vorschlag?
Also mal eben ganz simpel aus einem String ein QRCode-Bitmap machen und als Datei speichern.

Dank euch.

Gruß Thomas

Der schöne Günther 7. Sep 2020 16:31

AW: FastReport Anfängerfrage
 
Die Previews in FastReport habe ich nie genutzt, aber du hast doch einen Debugger. Wenn sich das Programm beim Verlassen aufhängt drück im Debugger doch einfach mal auf Pause ⏸ und schaue wo er genau hängt.

t2000 7. Sep 2020 16:49

AW: FastReport Anfängerfrage
 
in der ntdll. In einem UserThread. Habe dort keine 10 Zeilen asm-code zum debuggen.

Aber ich denke, hier geht es um eine grundsätzliche Sache. Wie man mit FastReport und Preview arbeiten kann.
Ich werde es wohl herausfinden, aber die Zeit drängt gerade sehr.

mytbo 7. Sep 2020 18:24

AW: FastReport Anfängerfrage
 
Ab FastReport Version 5 gibt es die BarCode Komponente. Lass erst einmal die Datenbindung weg. Erstelle einen neuen Report im Designer. Schiebe die gewünschte BarCode Komponente auf die leere Seite. Mach einen Doppelklick auf die Komponente und trage im Editor unter Code (erste Zeile) z.B. "<Date>" ein. Dann zeigt dir das Preview das aktuelle Datum als BarCode an. Du hast dabei die Variable "Date" mit der BarCode Komponente verbunden. Auf gleiche Weise kannst du das auch mit allen anderen Datenquellen machen.

Du musst den Report immer erst zusammenstellen. Entweder durch ein ShowReport(), oder ohne Anzeige der Vorschau mit einem PrepareReport().
Zum Speichern kann man eine Export Klasse verwenden. Zum Beispiel als PDF speichern:
Delphi-Quellcode:
var
  memStream: TMemoryStream;
  pdfExport: TfrxPDFExport;
begin
  memStream := TMemoryStream.Create;
  try
    pdfExport := TfrxPDFExport.CreateNoRegister;
    try
      pdfExport.Stream := memStream;
      pdfExport.Compressed := True;
      pdfExport.ShowDialog := False;
      pdfExport.ShowProgress := False;
      frxReport.Export(pdfExport);
    finally
      pdfExport.Free;
    end;
...
Oder es gibt auch noch die IOTransport Klassen. Da musst schauen, was für dich günstiger ist.

Bis bald...
Thomas

t2000 8. Sep 2020 06:54

AW: FastReport Anfängerfrage
 
Das hatte ich ja gemacht.
Ich habe ein BarCode Element genommen. Und einen Text zugewiesen. Danach anstelle der direkten Zuweisung ein UserDatenSet genommen, damit ich den Wert VON HAND setzen kann. Ich bekomme den ja einfach als String von extern übergeben.
Das ist alles gut und schön.
Aber wie rufe ich den Bericht auf? Als Preview in meiner Form. Egal ob ich ShowReport oder PrepareReport aufrufe, der Bericht bleibt in genau dieser Funktion hängen und kommt nicht wieder.

t2000 8. Sep 2020 07:00

AW: FastReport Anfängerfrage
 
Es muss am UserDataSet liegen. Ein ganz simples Beispiel ohne funktioniert.

t2000 8. Sep 2020 07:09

AW: FastReport Anfängerfrage
 
Ich glaube, wir können hier schließen.

TfrxUserDataSetCheckEOF(Sender: TObject; var Eof: Boolean);

muss genutzt werdenn, damit das eigene DataSet ein Ende-Signal gibt.

Leider habe ich keinerlei "nutzbare" Dokumentation zu FastReport gefunden, so dass so ein kleines Problem mich über 2 Stunden gekostet hat.

Kennt jemand eine Hilfe-Quelle zu Fastreport, die neuer als von 2012 ist?

Ich meine nicht diese: https://www.fast-report.com/de/download/documentation/

Der schöne Günther 8. Sep 2020 07:19

AW: FastReport Anfängerfrage
 
Der Frage schließe ich mich an, mir ging es damals genauso. Bin damals auch nur durch Ausprobieren weitergekommen.

mytbo 8. Sep 2020 12:44

AW: FastReport Anfängerfrage
 
Einzelne Werte kannst du auch als Variable definieren. Das geht im Designer oder per Quellcode mit:
Delphi-Quellcode:
var
  variable: TfrxVariable;
begin
  variable := frxReport.Variables.Add;
  variable.Name := 'QRCode';

  variable := frxReport.Variables.Add;
  variable.Name := 'Index';
...
Und dann vor dem Zusammenstellen des Berichts die Variable füllen:
Delphi-Quellcode:
frxReport.Variables['QRCode'] := StrSingleQuote('Mein QRCode');
frxReport.Variables['Index'] := 20;
Für FastReport gilt oft: Viele Wege führen nach Rom. Bedeutet aber gleichzeitig, dass auch Neulinge irgendwann zum Ziel kommt. Einfach loslegen, nach den ersten 100 Berichten hat man es dann drauf. :thumb:

Allgemein ist es hilfreich, bei der Arbeit mit dem Designer nicht pixel- sondern vektororientiert zu denken. Erfahrungen mit einem Vektorzeichenprogramm sind sehr vorteilhaft.

Seit einiger Zeit gibt es auch Beispiele im Blog: How to create a sales receipt from a Delphi application

Bis bald...
Thomas

t2000 8. Sep 2020 13:25

AW: FastReport Anfängerfrage
 
Danke für die Infos. Das sehe ich mir mal an.
Für für das erste Adapter-Programm reicht es jetzt. Das läuft und tut was es soll. Aber die Mengen an Berichten die noch noch kommen werden, ... hoffen wir das Beste.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 1 von 2  1 2      

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