Delphi-PRAXiS

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 Scripttext - Wie wird der ausgeführt? (https://www.delphipraxis.net/54071-fastreport-scripttext-wie-wird-der-ausgefuehrt.html)

smudo 27. Sep 2005 13:11


Fastreport Scripttext - Wie wird der ausgeführt?
 
Hallo :hi: ,

ein Fastreport (TfrxReport) soll aufgerufen und dabei ein Script ausgeführt werden.
Dafür habe ich die Eigenschaft ScriptLanguage auf PascalScript gesetzt und
in ScriptText nichts weiter als
Delphi-Quellcode:
Begin
  Showmessage('Hello World');
end;
eingegeben.

Wie bekomme ich dieses Script jetzt zum laufen?

Marcel Gascoyne 27. Sep 2005 13:47

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Du musst einfach den Report mit der Methode ShowReport anzeigen lassen:

Delphi-Quellcode:
frxReport1.ShowReport;
Wenn Dein Script sich im Rumpf des Reports befindet wird es automatisch ausgeführt.

Gruß,
Marcel

smudo 27. Sep 2005 14:00

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Danke Marcel,

du hast Recht. So einfach ist es. :oops:
Nur darf man nicht nach Erzeugen des Scriptes LoadFromFile aufrufen,
d.h. wenn ich im OI zwar den ScriptText fest vorgegeben habe,
aber erst zur Laufzeit die Datei lade, wird das Script überschrieben.

Soweit ist es klar.
Aber ohne einen weiteren Thread dafür aufmachen zu müssen: Wie kann ich denn nun den Report per Script ansprechen,
z.B. einen Text schreiben oder eine Grafik zeichnen?

Ich nehme auch gern einen Ratschlag an, wo ich etwas nachlesen könnte.

franktron 27. Sep 2005 14:04

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Kannste mal erklären was das für einen sinn haben soll.
Du kannst doch alles im Designer machen oder im Delphi Code warum der gerade im Report Script

smudo 27. Sep 2005 14:09

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Das ist eher mal ein Ausprobieren.
Ich möchte abhängig von der Seitenzahl Markierungen auf den Seiten ausgeben.
Und das auf jedem Report, egal welche Reportdatei.
Ich dachte, die Script-Komponente wäre da ein guter Ansatz.

franktron 27. Sep 2005 14:16

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Also ich habe auch markierungen auf der Seite hab diese aber in den Delphicode gepackt somit kann ich jeden Reort laden ohne das ich die Scriptdaten ändern muss

smudo 27. Sep 2005 14:27

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Mmh, bin ich mit dem Script wohl doch auf dem falschen Weg :gruebel:
Danke für den Hinweis, da werd ich gar nicht weiter viel Zeit verschwenden.

Aber wie kann ich denn aus dem Delphi-Code Markierungen auf eine Reportseite bringen,
noch dazu abhängig von der Seitenzahl :wall:

franktron 27. Sep 2005 15:16

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Also ich hab zum zeichnen ein TfrxPictureView genommen und dann darauf gezeichnet und die Seitenzahl habe ich momentan noch mit einem Zähler gemacht hab leider noch keine andere lösung gefunden.

smudo 27. Sep 2005 15:33

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von franktron
Also ich hab zum zeichnen ein TfrxPictureView genommen

Seh ich schlecht oder ist diese Komponente in meinem Package nicht dabei? :gruebel:
Zitat:

Zitat von franktron
und die Seitenzahl habe ich momentan noch mit einem Zähler gemacht

Wieso funktioniert das eigentlich nicht mit PagesCount?

franktron 27. Sep 2005 15:43

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
ist im Designer drin

smudo 27. Sep 2005 15:56

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Sorry, na klar!
Vielen Dank erstmal, werde es weiter versuchen...

Union 27. Sep 2005 18:39

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von smudo
Zitat:

Zitat von franktron
Also ich hab zum zeichnen ein TfrxPictureView genommen

Seh ich schlecht oder ist diese Komponente in meinem Package nicht dabei? :gruebel:
Zitat:

Zitat von franktron
und die Seitenzahl habe ich momentan noch mit einem Zähler gemacht

Wieso funktioniert das eigentlich nicht mit PagesCount?

Du musst EngineOptions.Doublepass anschalten. Dadruch wird er Report 2 x ausgeführt: 1 mal zum Zählen der Gesamtseitenzahl und beim zweiten mal ist die entsprechende interne Variable dann gefüllt.

smudo 28. Sep 2005 08:58

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von Union
beim zweiten mal ist die entsprechende interne Variable dann gefüllt.

:shock: Ab welchem Ergeignis kann ich dann PagesCount auslesen?
Selbst nach dem Ereignis OnEndDoc (und das sollte das letzte sein), sowie nach
dem Ausführen von PrepareReport ist PagesCount immer noch 1, obwohl 90 Seiten vorbereitet wurden.

Zitat:

Zitat von FastReport – Programmer’s manual
property PagesCount: Integer readonly;
Number of pages in a report template.

Das heißt wohl Anzahl der Seiten der ungefüllten Reportdatei?

Über das Ereignis Progress lässt sich die Anzahl der Seiten des gefüllten Reports zählen.
Wie aber kann ich denn nun die einzelnen Seiten ansprechen und abhängig von der Seitenzahl
auf einem TfrxPictureView zeichnen???

René

Union 28. Sep 2005 09:23

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von smudo
Zitat:

Zitat von Union
beim zweiten mal ist die entsprechende interne Variable dann gefüllt.

:shock: Ab welchem Ergeignis kann ich dann PagesCount auslesen?
Selbst nach dem Ereignis OnEndDoc (und das sollte das letzte sein), sowie nach
dem Ausführen von PrepareReport ist PagesCount immer noch 1, obwohl 90 Seiten vorbereitet wurden.

Zitat:

Zitat von FastReport – Programmer’s manual
property PagesCount: Integer readonly;
Number of pages in a report template.

Das heißt wohl Anzahl der Seiten der ungefüllten Reportdatei?

Über das Ereignis Progress lässt sich die Anzahl der Seiten des gefüllten Reports zählen.
Wie aber kann ich denn nun die einzelnen Seiten ansprechen und abhängig von der Seitenzahl
auf einem TfrxPictureView zeichnen???

René

TfrxReport.Engine.TotalPages bzw. Systemvariable TOTALPAGES# ist die Anzahl der durch eiunen Report erzeugten Seiten. PagesCount ist die Anzahl der definierten Seiten.

smudo 28. Sep 2005 10:14

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von Union
TfrxReport.Engine.TotalPages bzw. Systemvariable TOTALPAGES# ist die Anzahl der durch eiunen Report erzeugten Seiten.

:wall: Zeigt 0 (Null) an, obwohl es 8 Seiten sind und DoublePass auf True steht.

Zitat:

Zitat von Union
PagesCount ist die Anzahl der definierten Seiten.

Das leuchtet mir ein.
Wenn ich jetzt aber auf die Page[0] per Create ein Objekt setze, wird es nur auf der Seite 1 angezeigt.
Auf allen folgenden Seiten gibt es das Objekt nicht, obwohl es doch die gleiche Page ist.
Versuche ich das Objekt auch auf Page[1] zu erzeugen, kommt ein Zugriffsfehler, da es zwar 8 Seiten, aber nur eine definierte Page gibt.

:gruebel: Vielleicht sollte ich mal einen neuen Thead aufmachen, is schon ziemlich weit weg vom Thema.

Union 28. Sep 2005 10:23

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Zitat:

Zitat von smudo
Zitat:

Zitat von Union
TfrxReport.Engine.TotalPages bzw. Systemvariable TOTALPAGES# ist die Anzahl der durch eiunen Report erzeugten Seiten.

:wall: Zeigt 0 (Null) an, obwohl es 8 Seiten sind und DoublePass auf True steht.

Zitat:

Zitat von Union
PagesCount ist die Anzahl der definierten Seiten.

Das leuchtet mir ein.
Wenn ich jetzt aber auf die Page[0] per Create ein Objekt setze, wird es nur auf der Seite 1 angezeigt.
Auf allen folgenden Seiten gibt es das Objekt nicht, obwohl es doch die gleiche Page ist.
Versuche ich das Objekt auch auf Page[1] zu erzeugen, kommt ein Zugriffsfehler, da es zwar 8 Seiten, aber nur eine definierte Page gibt.

:gruebel: Vielleicht sollte ich mal einen neuen Thead aufmachen, is schon ziemlich weit weg vom Thema.

Also bei mir geht es so:
Delphi-Quellcode:
// Referenz auf Seite
ReportPage := TfrxReportPage(frxListe.Pages[0]);

// Picture-Objekt erzeugen
with TfrxPictureView.Create(TfrxPageHeader(ReportPage.FindObject('PageHeader'))) do
begin
   AutoSize  := true;
   Top       := 0;
   left      := 200;
   Picture.LoadFromFile('c:\windows\zapotek.bmp');
end;

smudo 28. Sep 2005 10:44

Re: Fastreport Scripttext - Wie wird der ausgeführt?
 
Danke Union,

mit dieser Variante wird es in das Header-Band der referenzierten Seite reingeschrieben und so funktioniert es auch.
Die Objekte sollen aber auf der Seite erzeugt werden, unabhängig davon, ob ein Band existiert und wie groß es ist.
Außerdem sollen sie eben nicht auf jeder Seite erzeugt werden.

Vielen Dank für die bisherige Hilfe.
Und in der Hoffnung, dass die Diskussion trotzdem weitergeht, verweise ich hier auf einen neuen Thread:
hier gehts weiter


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