Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Fast Report, Titlepage und Fusszeile per code (https://www.delphipraxis.net/213787-fast-report-titlepage-und-fusszeile-per-code.html)

bernhard_LA 26. Sep 2023 07:11

Fast Report, Titlepage und Fusszeile per code
 
mein Projekt zum Erstellen eine FastReports komplett via Code kommt langsam voran.
Aktuelle Problem , ich verstehe nicht warum meine Funktion PrintTitlePage nicht funktioniert.

Die Fusszeile wird auch nicht auf jeder Seite des Reports erzeugt.



Delphi-Quellcode:

procedure TFastReportForm.PrintTitlePage(var Report: TfrxReport;
  TitleText: string);
var
  Page: TfrxReportPage;
  Band: TfrxBand;
  Memo: TfrxMemoView;
  Memo1: TfrxMemoView;
begin
  Page := TfrxReportPage.Create(Report);
  Page.CreateUniqueName;
  Page.SetDefaults;

  Band := TfrxReportTitle.Create(Page);
  Band.CreateUniqueName;
  Band.Top := 0;
  Band.Height := Page.Height - 1;

  Memo := TfrxMemoView.Create(Band);
  Memo.CreateUniqueName;
  Memo.Font.Height := 36;
  Memo.Text := TitleText;
  Memo.SetBounds(x_left, 50, 400, 60);
  Memo.Align := baWidth;

  Memo1 := TfrxMemoView.Create(Band);
  Memo1.CreateUniqueName;
  Memo1.Font.Height := 36;
  Memo1.Text := 'date :' + DatetoStr(now);
  Memo1.SetBounds(x_left, 50, 400, 60);
  Memo1.Align := baWidth;

end;

procedure TFastReportForm.PlaceMemoOnPage(var Memo, MemoS: TfrxMemoView;
  DataBand: TfrxMasterData; frxDBDataSet: TfrxDBDataset; row: Integer;
  datafieldname: String);
begin
  Memo := TfrxMemoView.Create(DataBand);
  Memo.CreateUniqueName;
  { connect to data }
  Memo.DataSet := frxDBDataSet;
  Memo.DataField := datafieldname;
  Memo.SetBounds(x_left, row, 600, 20);

  MemoS := TfrxMemoView.Create(DataBand);
  MemoS.CreateUniqueName;
  MemoS.Text := datafieldname;
  MemoS.SetBounds(0, row, 50, 20);

end;

procedure TFastReportForm.ExecuteFastReportV2(Sender: TObject);
var
  Report: TfrxReport;
  Page: TfrxReportPage;
  DataPage: TfrxDataPage;
  Band: TfrxBand;
  DataBand: TfrxMasterData;
  Memo: TfrxMemoView;
  Memo_1: TfrxMemoView;
  Memo_1S: TfrxMemoView;
  Memo_2: TfrxMemoView;
  Memo_2S: TfrxMemoView;
  Memo_3: TfrxMemoView;
  Memo_3S: TfrxMemoView;
  Memo_4: TfrxMemoView;
  Memo_4S: TfrxMemoView;
  Memo_5: TfrxMemoView;
  Memo_5S: TfrxMemoView;
  Memo_6: TfrxMemoView;
  Memo_6S: TfrxMemoView;
  Memo_7: TfrxMemoView;
  Memo_7S: TfrxMemoView;
  Memo_8: TfrxMemoView;
  Memo_8S: TfrxMemoView;
  Memo_9: TfrxMemoView;
  Memo_9S: TfrxMemoView;
  Memo_10: TfrxMemoView;
  Memo_10S: TfrxMemoView;
  DataSet: TfrxDataset;

  Frxdataset: TfrxDataset;
  ItemIndex: Integer;
  ItemCount: Integer;
  FooterBand: TfrxBand;
begin

  ///
  /// GUI info :-)
  ///
  StatusBar.SimpleText := 'Prepare Cutframes report .... ';
  Application.ProcessMessages;

  Report := TfrxReport.Create(nil);
  try

    { add a dataset to the list of ones accessible for a report }
    Report.DataSets.Add(frxDBDataset1);

    DataPage := TfrxDataPage.Create(Report);

    { add a page }
    Page := TfrxReportPage.Create(Report);

    { create a unique name }
    Page.CreateUniqueName;

    { set sizes of fields, paper and orientation by default }
    Page.SetDefaults;

    { add a page for the first title page }
    PrintTitlePage(Report, 'Fast report ---  test report (Version 01.2023) !');

    { add a 2nd. title pagefor testing }
     PrintTitlePage(Report, 'My new title page');

    ///
    /// report
    ///
    { add the masterdata band }
    DataBand := TfrxMasterData.Create(Page);
    DataBand.CreateUniqueName;
    DataBand.DataSet := frxDBDataset1;
    // DataBand.OnBeforePrint;
    { the Top coordinate should be greater than the previously added band’s top + height }
    DataBand.Top := 100;
    DataBand.Height := 600;


    PlaceMemoOnPage(Memo_1, Memo_1S, DataBand, frxDBDataset1,
      y_left_delta, 'Index');

    PlaceMemoOnPage(Memo_3, Memo_3S, DataBand, frxDBDataset1,
      y_left_delta * 2, 'Name');


    .....

    PlaceMemoOnPage(Memo_10, Memo_10S, DataBand, frxDBDataset1,
      y_left_delta * 10, 'newBMP');

     Memo_10.Font.Height := 8;
     Memo_10.Font.Color := clblue;

    PictureView := TfrxPictureView.Create(DataBand);
    PictureView.DataSet := frxDBDataset1;
    PictureView.DataField := 'Image';

    PictureView.SetBounds(x_left + 10, 450, 300, 300);

    Imagefilename := frxDBDataset1.DataSet.FieldByName('newBMP').AsString;

    FooterBand := TfrxFooter.Create(Page);
    FooterBand.CreateUniqueName;
    FooterBand.Height := 20;
    FooterBand.Top := Page.Height - FooterBand.Height;

    Memo := TfrxMemoView.Create(FooterBand);
    Memo.CreateUniqueName;
    Memo.Text := 'This is the footer! (V01)';
    Memo.SetBounds(0, Page.Height - 50, Page.Width, FooterBand.Height);
    Memo.HAlign := haCenter;

    if FOpenReportFlag then
    begin
      { show the report }
      Report.ShowReport;
    end;

    Report.FileName := FReportfilenamePDF;

    Save_asPDF_Report(Report);

  finally
    Report.Free;
  end;

  ///
  /// GUI
  ///
  StatusBar.SimpleText := '[DONE] Build report';

end;

procedure TFastReportForm.Save_asPDF_Report(MyReport: TfrxReport);
begin

  MyReport.PrepareReport();
  { Set the range of pages to export. By default, all pages of the generated report are exported. }
  // frxPDFExport1.PageNumbers := '2-3';
  { Set the PDF standard
    TPDFStandard = (psNone, psPDFA_1a, psPDFA_1b, psPDFA_2a, psPDFA_2b, psPDFA_3a, psPDFA_3b);
    It is required to add the frxExportPDFHelpers module to the uses list:
    uses frxExportPDFHelpers; }
  frxPDFExport1.PDFStandard := psNone;
  { You can set the PDF standard version for PDFStandard = psNone
    TPDFVersion = (pv14, pv15, pv16, pv17);
    It is required to add the frxExportPDFHelpers module to the uses list:
    uses frxExportPDFHelpers; }
  frxPDFExport1.PDFVersion := pv17;
  { To get smaller file size, you can set the compression }
  frxPDFExport1.Compressed := true;
  { Set whether to embed fonts in the resulting document.
    Embedding fonts significantly increases the size of the resulting document }
  frxPDFExport1.EmbeddedFonts := False;
  { Set whether we need to export the background image }
  frxPDFExport1.Background := true;
  { Disable export of objects with optimization for printing. With option enabled images will be high-quality but 9 times larger in volume }
  frxPDFExport1.PrintOptimized := False;
  { Set whether the resulting PDF will contain an external table of contents, as in the original report }
  frxPDFExport1.Outline := False;
  { Set whether to export images with transparency }
  frxPDFExport1.Transparency := true;
  { You can set the desired DPI of images. Enabling this option disables SaveOriginalImages option, which allows you to save images in their
    original form }
  frxPDFExport1.PictureDPI := 150;
  { Set the compression ratio of bitmap images }
  frxPDFExport1.Quality := 95;
  { Set whether to open the resulting file after export }
  frxPDFExport1.OpenAfterExport := False;
  { Set whether to display export progress
    (show which page is currently being exported) }
  frxPDFExport1.ShowProgress := False;
  { Set whether to display a dialog box with export filter settings }
  frxPDFExport1.ShowDialog := False;
  { Set the name of the resulting file. Please note that if you do not set the file name and disable the export filter dialog box, the file name selection dialog will still be displayed }
  frxPDFExport1.FileName := FReportfilenamePDF;
  { Fill in the corresponding fields of the Information tab }
  frxPDFExport1.Title := 'Your Title';
  frxPDFExport1.Author := 'Your Name';
  frxPDFExport1.Subject := 'Your Subject';
  frxPDFExport1.Keywords := 'Your Keywords';
  frxPDFExport1.Creator := 'Creator Name';
  frxPDFExport1.Producer := 'Producer Name';
  { Fill in the corresponding fields of the Security tab }
  // frxPDFExport1.UserPassword := '1234';
  // frxPDFExport1.OwnerPassword := '1234';
  frxPDFExport1.ProtectionFlags := [ePrint, eModify, eCopy, eAnnot];
  { Set the Viewer settings (Viewer tab) }
  frxPDFExport1.HideToolbar := False;
  frxPDFExport1.HideMenubar := False;
  frxPDFExport1.HideWindowUI := False;
  frxPDFExport1.FitWindow := False;
  frxPDFExport1.CenterWindow := False;
  frxPDFExport1.PrintScaling := False;
  { Export the report }
  MyReport.Export(frxPDFExport1);

end

haentschman 26. Sep 2023 07:15

AW: Fast Report, Titlepage und Fusszeile per code
 
Moin...8-)

Zitat:

per code
Was hat das für einen tieferen Sinn? :gruebel: Machst du auch deine Form per Code? :zwinker:
Imho hat die Anwendung den Report nur am "Namen" zu kennen und die Daten rüber zu schieben...

Ich rate mal...du willst den Report nicht als *.fr3 mit ausliefern?

PS: Durch deine Kommentare ist der eigentliche QT schlecht zu finden...:zwinker:

bernhard_LA 26. Sep 2023 07:34

AW: Fast Report, Titlepage und Fusszeile per code
 
in der finalen Version will will ich den ganzen Report über einige Parameter flexibel aufbauen ,
deshalb geht kein *.fr3

haentschman 26. Sep 2023 07:45

AW: Fast Report, Titlepage und Fusszeile per code
 
Ok...:wink:
Zitat:

deshalb geht kein *.fr3
...aber das halte ich für ein Gerücht. :wink: Dafür gibt es die Programmierung innerhalb des Reports. (einblenden/ausblenden/Farben etc.)
Der Report erhält die Parameter über Variablen und die Daten...und er kümmert sich. :zwinker:

Du könntest auch sinngemäß pro "Parameter" einen separaten Report machen. Keine Fummelei im QT. :wink: Bei uns müssen verschiedene Kunden ein spezielles Rechnungsformular haben. Ich hätte das auch im Report lösen können (anhand der Kundennummer), aber jetzt wähle ich das Reportformular anhand der Kundennummer aus. Ist einfacher und übersichtlicher im Report.
Bsp:
BM_BillMaintance_Default.fr3
BM_BillMaintance_19999.fr3


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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