FastReport Tipps und Tricks: Dialoge im Report

Aus GEVITAS
Version vom 9. November 2021, 12:43 Uhr von Gevitas (Diskussion | Beiträge) (Ausführen des Reports per Kennzeichen verhindern)
Wechseln zu: Navigation, Suche

1 Dialoge im Report

1.1 Ausführen des Reports per Kennzeichen verhindern

Wenn man das Ausführen (Vorschau, Drucken usw.) eines Reports über ein Kennzeichen verhindern will, kann man dazu in den Report ein Dialog-Fenster einbauen, das unter bestimmten Bedingungen angezeigt wird und die Ausführung des verhindert.

Beispiel
Man verwendet das Auftragskennzeichen 8 ("Ladeliste freigegeben"), um das Drucken einer Ladeliste zu verhindern. Wenn dort "Nein" ausgewählt wird, darf die Ladeliste nicht gedruckt werden.

Dazu fügt man im Designer mit dem Menü Datei ⇒ einen neuen Dialog ein. In diesen Dialog fügt man ein Label (Text) und einen Button ein, wie in diesem Beispiel:


FastReport TippsUndTrick Dialog 01.png


  • Stellen Sie die Schriftart ("Font") und die Farbe ("Color") der Objekte nach Ihren Ansprüchen ein!
  • Die Eigenschaft ModalResult" ("Ergebnis des Dialogs") des Buttons stellen Sie auf "mrCancel" (Abbruch).

Wenn Sie nun den Report ausführen, wird der Dialog angezeigt und der Report nicht ausgeführt!!!

So wollen wird das natürlich nicht haben! Der Dialog soll ja nur angezeigt werden, wenn das Kennzeichen 8 nicht auf "Nein" steht.

Deshalb suchen Sie im Report-Baum den Report "Report" aus.

  • Den Report-Baum können Sie über das Menü Ansicht ⇒ Symbolleisten einschalten.


Klicken Sie nun im Objektinspektor auf Ereignisse und dort doppelklicken Sie auf frxReport1OnRunDialogs.

  • Den Objektinspektor können Sie über das Menü Ansicht ⇒ Symbolleisten einschalten.

Geben Sie nun diesen Code ein:

procedure frxReport1OnRunDialogs(var Result: Boolean);
begin
  if <AuftragsKopf."KENNZ8"> = 'Nein' then
    Result := DialogPage1.ShowModal = mrOK
  else
    Result := True;
end;


Die Variable Result ist das Ergebnis der Abfrage:

  • Wird sie auf True gestellt, wird der Report ausgeführt.
  • Wird sie auf False gestellt, wird der Report nicht ausgeführt.

Wenn das Kennzeichen auf "Nein" steht, wird dieser Dialog angezeigt:

FastReport TippsUndTrick Dialog 02.png


2 Dialog mit Ja/Nein-Button

Wenn beim Ausführen des Reports ein Dialog mit einer Ja/Nein-Frage kommen soll, für man wie oben beschrieben mit Datei ⇒ Neuer Dialog einen neuen Dialog in den Report ein. Dann setzt man ein Label mit der Frage und zwei Buttons auf den Dialog. Beispiel:


Nur Problempositionen aufführen?   
                                   
      Ja    Nein                   
                                  

Dann doppelklickt man nacheinander auf das Ereignis "OnClick" der Buttons und gibt z.B. diesen Code ein:

procedure btnNoOnClick(Sender: TfrxComponent);
begin
   Set( 'bNurProblempositionen', False );                        
end; 

procedure btnYesOnClick(Sender: TfrxComponent);
begin
   Set( 'bNurProblempositionen', True );                        
end;

Damit setzt man eine (zuvor deklarierte) Variable aufg True oder False, je nachdem, welcher Button geklickt wurde. Mit dieser Variable kann man nun machen was man will, also Bereiche ein-/ausschalten usw.

Beispiel:


procedure PositionenOnBeforePrint(Sender: TfrxComponent);
begin
  if <bNurProblempositionen> then
    memoNurProblempositionen.Visible := True
  else
    memoNurProblempositionen.Visible := False;             
...

3 Links