AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Fast Report, Titlepage und Fusszeile per code
Thema durchsuchen
Ansicht
Themen-Optionen

Fast Report, Titlepage und Fusszeile per code

Ein Thema von bernhard_LA · begonnen am 26. Sep 2023 · letzter Beitrag vom 26. Sep 2023
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.123 Beiträge
 
Delphi 11 Alexandria
 
#1

Fast Report, Titlepage und Fusszeile per code

  Alt 26. Sep 2023, 07:11
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
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fast Report, Titlepage und Fusszeile per code

  Alt 26. Sep 2023, 07:15
Moin...

Zitat:
per code
Was hat das für einen tieferen Sinn? Machst du auch deine Form per Code?
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...

Geändert von haentschman (26. Sep 2023 um 07:21 Uhr)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.123 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fast Report, Titlepage und Fusszeile per code

  Alt 26. Sep 2023, 07:34
in der finalen Version will will ich den ganzen Report über einige Parameter flexibel aufbauen ,
deshalb geht kein *.fr3
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fast Report, Titlepage und Fusszeile per code

  Alt 26. Sep 2023, 07:45
Ok...
Zitat:
deshalb geht kein *.fr3
...aber das halte ich für ein Gerücht. 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.

Du könntest auch sinngemäß pro "Parameter" einen separaten Report machen. Keine Fummelei im QT. 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

Geändert von haentschman (26. Sep 2023 um 07:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 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