Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi FastReport - Create von Objekten auf Seiten (https://www.delphipraxis.net/54110-fastreport-create-von-objekten-auf-seiten.html)

smudo 28. Sep 2005 10:35


FastReport - Create von Objekten auf Seiten
 
Hallo :hi: ,

im letzten Thread zum Thema FastReport hier entfernte sich alles ziemlich weit vom Thema.
Deshalb gehts jetzt hier weiter:

Mit einem FastReport (bestehend aus 1 oder 2 definierten Seiten) werden beliebig viele Seiten ausgedruckt.
Wie kann ich die Gesamtanzahl der auszudruckenden Seiten ermitteln und wie kann ich in Abhängigkeit von der Seitenzahl
Objekte auf den einzelnen Seiten erstellen? Es handelt sich um TfrxLineView-Objekte.

Zum Verständnis ein einfaches Beispiel:
Delphi-Quellcode:
var Page: TfrxReportPage;
    Line: TfrxLineView;
begin
[..]
frxReport1.LoadFromFile(report);
    Page:=TfrxReportPage(frxReport1.Pages[0]);
    Line:=TfrxLineView.Create(Page);
    Line.CreateUniqueName;
    Line.SetBounds(0,50,20,1);
[..]
end;
Hierbei wird die Linie aber nur auf der ersten Seite, nicht aber auf den Folgeseiten dargestellt.

Was muss ich ändern?

René

Union 28. Sep 2005 10:51

Re: FastReport - Create von Objekten auf Seiten
 
Hi,

hier ein Beispiel für das Linienzeichen. Beim Erstellen des Reports erscheinen die Linien auf jeder erzeugten Seite:
Delphi-Quellcode:
ColumnHeader := TfrxColumnHeader(ReportPage.FindObject('ColumnHeader'));


with ColumnHeader do
begin
   Clear;
   Font.Size := iFontSize;
   Height := Font.Size*2+2;
end;

with TFrxLineView.Create(ColumnHeader) do
begin
   top  := 0;
   Align := baWidth;
end;

with TFrxLineView.Create(ColumnHeader) do
begin
   top := ColumnHeader.Height;
   Align := baWidth;
end;
Die Anzahl der Seiten ausserhalb des Reports ermittelst Du so:
Delphi-Quellcode:
frxListe.EngineOptions.Doublepass := true;
frxListe.PrepareReport();
ShowMessage(Format('Anzahl Seiten: %d', [frxListe.Engine.PreviewPages.Count]));
frxListe.ShowReport();

smudo 28. Sep 2005 11:05

Re: FastReport - Create von Objekten auf Seiten
 
:wall: Nicht schon wieder der gleiche Fehler!
ich raufe mir die Haare und streue mir Asche auf das Haupt!

Ich kann im OI viel einstellen, wenn ich danach erst LoadFromFile aufrufe. :oops:
Und natürlich hatte ich DoublePass im OI eingestellt, aber nicht
Delphi-Quellcode:
frxReport1.EngineOptions.Doublepass := true;
aufgerufen.

Sorry dafür.
Wegen dem Zeichnen der Linien melde ich mich nochmal, wenn ich´s ausprobiert habe.

@Union: Was heißt eigentlich deine Signatur?

René

Union 28. Sep 2005 11:20

Re: FastReport - Create von Objekten auf Seiten
 
Ich habe es getestet, wenn man ein Lineview direkt auf der Page erzeugt, dann wird es nur auf der ersten Seite gedruckt.
Allerdings kann man ein Hintergrundbild setzen, das auf jeder Seite gedruckt wird:
Delphi-Quellcode:
ReportPage.BackPicture.LoadFromFile('c:\windows\kaffeetasse.bmp');
Wo das Geld am nächsten, da (ist auch) das Recht.

smudo 28. Sep 2005 11:32

Re: FastReport - Create von Objekten auf Seiten
 
Folgendermaßen kann ich das Objekt auf jeder beliebigen Folgeseite generieren:
Delphi-Quellcode:
for z:=0 to Sender.Engine.TotalPages-1 do
begin
  Page:=TfrxReportPage(Sender.Engine.PreviewPages.Page[z]);
  Line:=TfrxLineView.Create(Page);
  Line.CreateUniqueName;
  Line.SetBounds(0,50,20,1);
end;
In dieser Schleife kann ich für jede Seite abfragen, ob beispielsweise der Seitenheader existiert und kann
dementsprechend meine Linien einfügen.

Vielen Dank :bounce1:

die Delphipraxis hat mir mal wieder sehr geholfen!

Zu Unions Signatur: traurig, aber wahr!

smudo 30. Sep 2005 14:11

Re: FastReport - Create von Objekten auf Seiten
 
:-D Himmelhoch jauchzend :cry: zu Tode betrübt...
--> Die Probleme gehen weiter

Ich habe jetzt also meine Markierungen mittels TfrxLineView.Create auf die Seiten gebracht.
Bis 50 Seiten funktioniert das auch gut. Habe ich aber 51 Seiten im Report, so wird auf keiner! Seite eine Linie angezeigt.
Und noch schlimmer: Drucke ich im ersten Fall die Seiten aus, wird nur auf der 1. gedruckten Seite (egal welche) die Markierung gedruckt, alle folgenden enthalten keine Linien.

:wall: Ich komm nicht weiter, bitte helft mir!

Union 30. Sep 2005 14:25

Re: FastReport - Create von Objekten auf Seiten
 
Zitat:

Zitat von smudo
:-D Himmelhoch jauchzend :cry: zu Tode betrübt...
--> Die Probleme gehen weiter

Ich habe jetzt also meine Markierungen mittels TfrxLineView.Create auf die Seiten gebracht.
Bis 50 Seiten funktioniert das auch gut. Habe ich aber 51 Seiten im Report, so wird auf keiner! Seite eine Linie angezeigt.
Und noch schlimmer: Drucke ich im ersten Fall die Seiten aus, wird nur auf der 1. gedruckten Seite (egal welche) die Markierung gedruckt, alle folgenden enthalten keine Linien.

:wall: Ich komm nicht weiter, bitte helft mir!

Muss das wirklich auf dem Seitenobjekt sein? FR scheint damit Probleme zu haben.

smudo 30. Sep 2005 14:37

Re: FastReport - Create von Objekten auf Seiten
 
Welche Alternative gäbe es denn, damit auf dem fertig preparierten Report
auf jeder Seite Markierungen hinzugefügt werden können?

Union 30. Sep 2005 14:38

Re: FastReport - Create von Objekten auf Seiten
 
Zitat:

Zitat von smudo
Welche Alternative gäbe es denn, damit auf dem fertig preparierten Report
auf jeder Seite Markierungen hinzugefügt werden können?

Z.b. in einem Header oder Footerband.

smudo 30. Sep 2005 15:33

Re: FastReport - Create von Objekten auf Seiten
 
Habe es auf einem TfrxOverlay-Band versucht und erhalte das gleiche Ergebnis.
Vielleicht könnte ich die Linien auf dem Band vorgeben und nachher die Visible-Eigenschaft auf jeder Seite anpassen?

Edit: scheint auch so nicht zu funktionieren. Ich bin am verzweifeln!!!


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