AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Bestimmte Druckerdaten nicht in DevMode? Wo sonst?
Thema durchsuchen
Ansicht
Themen-Optionen

Bestimmte Druckerdaten nicht in DevMode? Wo sonst?

Ein Thema von r29d43 · begonnen am 22. Dez 2008 · letzter Beitrag vom 22. Dez 2008
Antwort Antwort
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#1

Bestimmte Druckerdaten nicht in DevMode? Wo sonst?

  Alt 22. Dez 2008, 00:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?

  Alt 22. Dez 2008, 01:09
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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?

  Alt 22. Dez 2008, 08:38
Zitat von Flocke:
Wie viele Bytes der DEVMODE-Struktur sicherst du bzw. stellst du wieder her?
Der Einfachheit halber habe ich bisher immer mit einem Rekord vom Typ TDevMode gearbeitet. Aber da wird jetzt wohl ein von GetMem gelieferter Pointer draus werden.

Ok, thx, probier ich mal.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Bestimmte Druckerdaten nicht in DevMode? Wo sonst?

  Alt 22. Dez 2008, 11:07
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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