Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   fastReport und ShowReport (https://www.delphipraxis.net/98579-fastreport-und-showreport.html)

DevStar 29. Aug 2007 12:01


fastReport und ShowReport
 
Hallo,

habe folgende Frage zu FastReport 3

Leider finde ich kein Code-Beispiel zum "Progressbar".

Delphi-Quellcode:
Showprogess := true;
OldStyleProgress := true;
funktioniert ja. Allerdings will ich nicht die Seitenzahlen dargestellt haben, sonden eine Progressbar.

Wer hat ein passendendes Code-Schnippsel parat? Mit Google war ich erfolglos.

Danke im vorraus.

Gruß DevStar

Memo 29. Aug 2007 13:40

Re: fastReport und ShowReport
 
Ich habe nur FR4, aber in der Hilfe steht:
Zitat:

property OnProgressStart : TfrxProgressEvent;

Description
This event is fired at start of some continuos operation (print, export, run report). The event handler may display a dialog window with progress bar. Progress parameter is a page number which is currently processed.
Vllt. gabs das in FR3 auch schon.

DevStar 29. Aug 2007 17:16

Re: fastReport und ShowReport
 
Ja, da gibt es einige Möglichkeiten. Das ist schon richtig.
Nur ist es nicht kommentiert und es gibt nirgends ein Beispiel.

FR hat wohl einen eigenen Progress-Dialog (nicht der Oldstyle).

Im Prinzip brauche ich ja nur die Seitenzahl im vorraus wissen und an die Progressbar übergeben.
Der Report musss dann im Hintergrund erstellt werden.

Leider weiss ich nicht wie ich anfangen soll.
Hat jemand schon so etwas für FastReport erstellt?

Ich habe einen Report, der seine Daten aus sieben SQL-Dateien holt und knapp 200 Seiten daraus erstellt.
Das dauert natürlich, deshalb wäre die "richtige" Progressbar schon optimal.

Gruß DevStar

DevStar 29. Aug 2007 22:19

Re: fastReport und ShowReport
 
Keiner Ideen? :wall:


Gute Nacht :wink:

alzaimar 30. Aug 2007 07:06

Re: fastReport und ShowReport
 
Probiers doch einfach mal aus.

OnProgressStart: Erzeugt ein nichtmodales Fenster mit ProgressForm.Show, sowie der Initialisierung der Progressbar.
OnProgress: Setzt den Balken der Progressbar (und ruft ggf. Application.Processmessages auf)
OnProgressStop: Entfernt die ProgressForm.

Ist doch ganz einfach.

Wichtig ist nur, das beim ersten Durchlauf die Gesamtanzahl der Seiten noch nicht bekannt ist. Daher wirst Du wohl erst im zweiten Durchlauf (Engine.FinalPass = True) eine Progressbar anzeigen können. Wenn dein Report aber immer +/- 200 Seiten hat, dann setzt Du eben beim 1.Durchlauf ProgressBar.Max auf 200.

DevStar 30. Aug 2007 09:33

Re: fastReport und ShowReport
 
Danke erstmal.

Die Befehle habe ich zwar gefunden, jedoch weiss ich nicht welche Parameter ich übergeben muss. Daran hakt es nämlich.

Sender (TfrxReport)

ProgressType (TfrxProgressType)

Progress (Integer)

Gebe ich bei Sender meinen Report an, so gibt es eine Access Violation :wall:


Hat denn jemand ein Beispiel? :gruebel:

Danke schon im vorraus.

DevStar

alzaimar 30. Aug 2007 09:44

Re: fastReport und ShowReport
 
Der Sender sagt dir, welches Objekt die Nachricht geschickt hat.
Las Dir einfach mal Progress und ProgressType anzeigen. Verändern musst du da nichts.

DevStar 30. Aug 2007 11:23

Re: fastReport und ShowReport
 
Ich gebs auf.... :wall:

Immer Access Violation...

Zugriffsverletzung bei Adresse 00000000000

Ohne Codebeispiel komme ich nicht weiter.

Mit der alten Progressbar (Oldstyle) klappt es ja wunderbar.

alzaimar 30. Aug 2007 11:25

Re: fastReport und ShowReport
 
Zeig mal deinen Code. AV at 00000000 bedeutet, das Du irgendein Objekt nicht instantiiert hast.

DevStar 30. Aug 2007 11:38

Re: fastReport und ShowReport
 
Delphi-Quellcode:
try
  Report.PepareReport;
  Report.Showprogress := true;
  Report.OnProgressStart (Report, ptRunning, iPages);
finally
  Report.ShowPreparedReport;
  Report.OnProgressStopp (Report, ptRunning, iPages);
end;
Musste eben alles abtippen, da der Delphi-PC nicht am Internet hängt.

Gruß DevStar

alzaimar 30. Aug 2007 11:43

Re: fastReport und ShowReport
 
Nee nee, da hast Du aber etwas missverstanden.

Die OnProgressXXXXX - Events des FastReport-Objektes sind Ereignisse, die vom FR-Objekt aufgerufen werden (wenn sie definiert sind). Klick mal auf die FR-Komponente und wechsle im Objektinspektor auf die Eregnis-Seite. Dann Doppelklick auf OnProgressStart und -wupps- bist Du im Begriff, ein benutzerdefniertes Ereignis zu schreiben.

Geht eigentlich genauso, wie ein Ereignis für einen Button zu erzeugen. Das kannst Du doch, oder?

DevStar 30. Aug 2007 12:32

Re: fastReport und ShowReport
 
Zitat:

Zitat von alzaimar
Das kannst Du doch, oder?

Ja, doch.

Aber tut sich nur nix. Warum ist das so kompliziert?

Delphi-Quellcode:
procedure TForm1.frxReport1ProgressStart(Sender: TfrxReport;
  ProgressType: TfrxProgressType; Progress: Integer);
begin
  if ProgressType = ptRunning then
    frxReport1.FileName:='c:\grundschule.rtf';
end;

DevStar 30. Aug 2007 16:19

Re: fastReport und ShowReport
 
Und das tuts auch nicht....

Delphi-Quellcode:
procedure TfrmReports.frxReport1Progress(Sender: TfrxReport;
  ProgressType: TfrxProgressType; Progress: Integer);
var
    Min, Max, i: Integer;

begin
  with TfrxProgress do
    begin
      Min := 0;
      Max := 200;
      for i := Min to Max do
        Progress := i;
    end;
end;

DevStar 30. Aug 2007 17:52

Re: fastReport und ShowReport
 
Hat denn jemand noch nen Tipp?

Beim Export, zeigt er jetz zwar den Dialog an, aber vorher kommt trotzdem der alte OldStyleDialog.

DevStar 30. Aug 2007 20:03

Re: fastReport und ShowReport
 
Kann niemand ein Beispiel posten?

DevStar 31. Aug 2007 19:51

Re: fastReport und ShowReport
 
Hallo alzaimar,

kannst Du mir nochmal helfen?

DevStar 1. Sep 2007 18:07

Re: fastReport und ShowReport
 
Weiss sonst noch jemand was?

Arbeit überhaupt jemand mit FR oder ist der RB besser?

DevStar 2. Sep 2007 00:29

Re: fastReport und ShowReport
 
:gruebel:

DevStar 2. Sep 2007 18:54

Re: fastReport und ShowReport
 
Wenn ShowProgress ein Event ist, dann vielleicht so...
Delphi-Quellcode:
procedure TfrmReports.frxReport1Progress(Sender: TfrxReport;
  ProgressType: TfrxProgressType; Progress: Integer);
var
  iMaxPages, i: integer;

begin
   frxReport1.OldStyleProgress := false;
   frxReport1.ShowProgress     := true;
   iMaxPages                   := frxReport1.PreviewOptions.PagesInCache;
   if ProgressType = ptRunning then
     frxReport1.SetProgressMessage('Please wait.');
   for i := 0 to iMaxPages do
     Progress := i+1;
end;
Doch da tut sich auch nix. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz