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 QuickReport: Druckvorschau modal anzeigen (https://www.delphipraxis.net/40083-quickreport-druckvorschau-modal-anzeigen.html)

Wheelie 10. Feb 2005 19:31


QuickReport: Druckvorschau modal anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi!

Ich verwende in meinem Programm den QuickReport. Wenn ein Anwender nun im Menü "Datei" den Menüpunkt "Drucken" wählt, lasse ich einen Dialog zur Druckeinstellung anzeigen. Erst nachdem der Anwender diverse Einstellungen in diesem Dialog getätigt hat, wird der eigentliche Report generiert, d.h. die Druckvorschau von QuickReport wird angezeigt. Folgendes Problem: Da der Druckeinstellungsdialog während der Vorschau noch aktiv ist, kann der Anwender mehrere Druckvorschaufenster öffnen. Wird eines dieser Vorschaufenster nun wieder geschlossen, lässt sich auch das Formular zur Druckeinstellung schließen und das Schließen der restlichen Vorschaufenster führt zu einer Access Violation.

Genug um den heißen Brei geredet. Mit dem Projekt im Anhang lässt sich dieser Fehler wunderbar reproduzieren:

- "Drucken"
- mehrmals auf "Druckvorschau" klicken (2x reicht aus)
- eine dieser nun entstandenen Vorschaufenster schließen
- "formPrint" schließen
- eine weitere Druckvorschau schließen -> Zugriffsverletzung

Wie kann ich eine QuickReport-Vorschau modal anzeigen lassen, so dass der Anwender meiner Software gar nicht erst mehrere Vorschaufenster öffnen kann :?:

Keldorn 10. Feb 2005 19:35

Re: QuickReport: Druckvorschau modal anzeigen
 
Zitat:

Zitat von Wheelie
Wie kann ich eine QuickReport-Vorschau modal anzeigen lassen, so dass der Anwender meiner Software gar nicht erst mehrere Vorschaufenster öffnen kann :?:

es gibt print, preview und previewmodal

Mfg Frank

Wheelie 10. Feb 2005 19:40

Re: QuickReport: Druckvorschau modal anzeigen
 
Genial! Danke dir :-D

Wheelie 11. Feb 2005 23:26

Re: QuickReport: Druckvorschau modal anzeigen
 
Zu früh gefreut. Habe beim Testen mit PreviewModal bemerkt, dass einige Bilder, die ich im OnNeedData-Ereignis des Reports lade, einfach schwarz bleiben :cry: In der QuickReport-Hilfe bin ich auf Folgendes gestoßen:

Zitat:

procedure PreviewModal

Beschreibung

Mit PreviewModal erzeugen Sie den Report und zeigen diesen in der Vorschau an. Im Vorschaufenster kann der Benutzer die Option Drucken wählen.

Beim Aufruf von PreviewModal wird der Report generiert, ohne daß ein Hintergrund-Thread erstellt wird. Einige Datenbanktreiber arbeiten nicht thread-sicher. Daraus könnte ein unerwartetes Verhalten oder ein Programmabsturz resultieren. Setzen Sie deshalb PreviewModal nur ein, wenn Sie absolut sicher sind, daß ein thread-sicherer Datenbanktreiber verwendet wird.
Gibt es noch eine andere Möglichkeit, die Druckvorschau anzeigen zu lassen und den Rest der Anwendung ähnlich wie PreviewModal einzufrieren :?:

omata 12. Feb 2005 00:21

Re: QuickReport: Druckvorschau modal anzeigen
 
Moin,

ich mache dann immer das Formular unsichtbar...

Delphi-Quellcode:
Report:=TMyReport.create;
try
  Self.Visible:=false;
  Report.preview;
finally
  Report.free;
  Self.Visible:=true;
end;
MfG
Thorsten

Luckie 12. Feb 2005 00:49

Re: QuickReport: Druckvorschau modal anzeigen
 
Unsichtbar ist aber auchnicht so schön, da hätte ich als Anwender den Eindruck ich hätte was falsch gemacht und das Programm hätte sich beendet. Ich würde einfach das Foemular deaktiviren mit TForm.Enabled := False;

omata 12. Feb 2005 02:36

Re: QuickReport: Druckvorschau modal anzeigen
 
Moin,

es ist ja nicht so, dass man dann nichts mehr sieht. Das Quickreport-Formular ist dann im Vordergrund und wenn diese Form minimiert wird, sieht man die Anwendung nicht. Die Anwendung ist dann eben nur noch das Vorschaufenster des Reports.

Ich finde das nun nicht unbedingt so super schlimm, aber gut dann eben enabled:=false, wenn das besser gefällt - bitte.

MfG
Thorsten

Wheelie 12. Feb 2005 10:17

Re: QuickReport: Druckvorschau modal anzeigen
 
So, nun klappt die Sache wirklich. Da das Formular selbst schon modal angezeigt wird, kann ich Enabled nicht False setzen. Stattdessen deaktiviere ich die einzelnen Elemente auf dem Formular.


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