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/)
-   -   Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles (https://www.delphipraxis.net/207940-drucken-printer-begindoc-funktioniert-nicht-vcl-styles.html)

user69 18. Mai 2021 16:11

Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich brauch mal wieder dringend Eure Hilfe:

Das Drucken in VCL Styles funktioniert nicht auf den Windows10 default Druckern "Microsoft Print To PDF" oder "Microsoft XPS Document Writer".
Wenn man die Syles ausschaltet geht alles.

Nach einem Printer.BeginDoc liefert Printer.Printing in VCL Styles für diese 2 Drucker immer False zurück. (siehe angehängte Demo App - ich habe einfach mal ein Druck Beispiel von Delphi-treff reingehängt)

Kann mir da irgendjemand helfen.
Ich brauch dringend einen Workaround.

Uwe Raabe 18. Mai 2021 16:41

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Funktioniert hier einwandfrei.

Commander Tom 18. Mai 2021 17:18

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Ich habe das Demoprojekt compiliert und gestartet - druckt auf diesen beiden Druckern einwandfrei, auch mit aktiviertem Style. Ich vermute, das liegt eher an der lokalen Maschine.

user69 19. Mai 2021 07:17

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Ihr habt recht mit dem Demo Programm. Da ist es wirklich (noch) nicht nachstellbar.
Ich denk der Rechner ists nicht - ich kann es auch auf nem ganz anders eingerichteten Laptop reproduzieren.

In meiner App liegt es wirklich klar an TStyleManager.TrySetStyle('Carbon') davor geht BeginDoc (und ruft den Dialog zum File Speichern auf). Danach geht es nicht mehr. Es ruft einfach den File Save Dialog nicht auf. Ich kann das Problem auch für andere Drucker erzeugen, wenn ich als Port ein Save to File nutze.

Leider liegt es aber wohl an irgendeiner interaction (es braucht also mehr als nur den aktivierten Style). Und das Problem tritt auch auf, wenn ich es gleich als erstes in der FormCreate prüfe (positiv und negativ getestet).
Ich versuch da noch tiefer zu graben.

user69 19. Mai 2021 16:57

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Ich habs nicht geschafft das Problem in der Demo zu reproduzieren aber eine Lösung gefunden:

In der Form.Create
TStyleManager.SystemHooks:= TStyleManager.SystemHooks - [shDialogs, shToolTips];

shToolTips war der Key zum Erfolg (warum auch immer).
Nun geht das Drucken in ein PDF wieder.

Harry Stahl 19. Mai 2021 22:43

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Irgendwie scheinen die Styles evtl. zur Verminderung der Stabilität der VCL-Programme beizutragen.

Hatte schon selber das "shDialogs" entfernen müssen, um den Error 216 beim Beenden des Programms weg zu bekommen, wenn man Öffnen oder Speichern-Dialoge verwendet hat.

Auch hat sich heute ein Kunde gemeldet, bei dem ein Dialog beim Schließen das Programm zum Absturz bringen kann, aber nur bei geladenen Styles.

Ich werde jetzt auch zusätzlich das shToolTips rausnehmen und den Kunden bitten noch mal zu testen (ich konnte es hier selber leider nicht reproduzieren).

user69 20. Mai 2021 12:01

AW: Drucken (Printer.BeginDoc) funktioniert nicht in Vcl Styles
 
Dabei evtl mal hier schauen … Da gehts genau um sowas.

https://quality.embarcadero.com/browse/RSP-33848

Und ja, bei den Styles gibts noch einiges Potential nach oben. Aber grundlegend sind sie seit HighDPI support schon recht gut nutzbar (ich hab aber trotzdem ein paar Anpassungen im code gemacht).


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