FastReport Tipps und Tricks: Dialoge im Report
Inhaltsverzeichnis
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:
- 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:
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:
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 auf 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; ...
Beim Ausführen des Reports wird dann als erstes der Dialog angezeigt:
Fertich!