Bestimmte Druckerdaten nicht in DevMode? Wo sonst?
Hallo,
in meinem Prog. gibt es zwei unterschiedliche Druckarbeiten, die jeweils über einen eigenen Druckerdialog gemanagt werden. Um nun deren Einstellungen gegenüber dem jeweils anderen Dialog konstant zu halten, speichere ich diese Einstellungen nach einem jeweiligen Drucken einfach ab und setze sie dann vor jedem nächsten gleichen Druckjob wieder neu. Gelesen und geschriebenen werden dabei (mittels Printer.GetPrinter und Printer.SetPrinter) immer die 3 Strings "Device", "Driver", "Port" und über die "DevMode"-Handle auch diese im Topic schon erwähnten "DevMode"-Daten. So weit - so gut. Jetzt ist es aber leider so, dass nicht alle Einstellungs-Daten des Print-Dialoges auch in diesem DevMode-Rekord drin zu sein scheinen. Speziell vermisse ich da das "Seitenformat" (zum Drucken mehrer Seiten auf einem Blatt), welches auf dem PrintDialog über die "Eigenschaften"-Button und dann über den "Layout"-Reiter erreichbar ist. Diese Einstellung lässt sich einfach nicht über ein vorheriges Sichern und ein dann anschließendes wieder Zurückschreiben des DevMode-Rekords wiederherstellen. (Andere plus minus vergleichbare Daten sind ansonsten aber in diesem DevMode-Rekord drin, wie z.B. die "Ausrichtung" (Hochformat/Querformat) oder die auf dem "Papier/Qualität"-Reiter angesiedelte "Papierquelle" (Automatisch auswählen, Kassette1, Kassette2...) oder auch die dort nochmals über die "Erweitert..."-Button erreichbare "Papiergröße" (A4,A5,A6,B6...)) Aber leider eben nicht die Daten über dieses besagte "Seitenformat". Per WinSpool.DeviceCapabilities und fwCapability=DC_NUP kann man zwar eine DWord-Array mit all den möglichen Seiten pro Blatt abfragen, aber, wie gesagt, leider fehlt in DevMode dann eine dazu äquivalente Größe, die sagt, welches Element dieser DWord-Array das auch gerade ausgewählte ist. Eventuell hat ja jemand eine Ahnung, wo diese spezielle Einstellungs-Data sonst noch zu finden sein könnte? ? Thx schonmal im Voraus. Gruß, rXdY |
Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?
Wie viele Bytes der DEVMODE-Struktur sicherst du bzw. stellst du wieder her?
Es sollten (DEVMODE.dmSize + DEVMODE.dmDriverExtra) Bytes sein. Insbesondere im druckerspezifischen zusätzlichen Bereich (dmDriverExtra) müssten die von dir gewünschten Informationen liegen. |
Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?
Zitat:
Ok, thx, probier ich mal. |
Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?
yo, hat geklappt.
Habe es allerdings nicht mit GetMem gemacht, sondern diese Driver-ExtraDaten nach dem Laden der TDevMode-Variable einfach schnell noch in einen TMemoryStream hinterhergeladen ...bzw. dann beim Zurückschreiben von da auch wieder herausgeholt. War bezüglich meines bis dato schon existierenden Codes der dann einfach etwas geringere Arbeitsaufwand. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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