Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Anderer Drucker im PrintDlgEx-Dialog (https://www.delphipraxis.net/130641-anderer-drucker-im-printdlgex-dialog.html)

markbolten 11. Mär 2009 17:01


Anderer Drucker im PrintDlgEx-Dialog
 
hi,

wie kann ein Drucker , der in dem PrintDlgEx-Dialog ausgewäht wird (abweichend vom Standarddrucker), aktiviert werden? Im Rückgaberecord wird kein Druckername bzw Druckerindex angegeben.
Der Standarddrucker ist weiterhin als aktives Ausgabegerät gesetzt.

Danke im Voraus für Lösungen/Hilfe!

_BlackDragon_ 12. Mär 2009 15:14

Re: Anderer Drucker im PrintDlgEx-Dialog
 
Hi.

Ich habe selber noch nicht damit gearbeitet, deshalb versuche ich das wiederzugeben, was ich der
MSDN entnehmen kann.
  • [1.] In der PRINTDLGEX-Struktur ist ein Parameter hDevMode, welcher ein Handle auf eine DEVMODE-Struktur
    darstellt. Aus dieser Struktur kannst du (unter anderem) den Druckernamen auslesen.

    [2.] Weiterhin existiert ein Parameter hDevNames, welcher ein Handle auf eine DEVNAMES-Struktur
    darstellt. In dieser Struktur stehen die Informationen zum Drucker, welcher im Dialog ausgewählt
    wurde.

    [3.] Welchen Rückgabewert erhälst du den vom Dialog, bzw. schonmal versucht zu prüfen ob der Aufruf
    einen Fehler verursacht hat?

hier nochmal die Links zu MSDN:

MSDN -> PrintDlgEx
MSDN -> PRINTDLGEX-Structure
MSDN -> DEVMODE-Structure
MSDN -> DEVNAMES-Structure

Hoffe das ich helfen konnte.


Gruss

BlackDragon

markbolten 12. Mär 2009 16:38

Re: Anderer Drucker im PrintDlgEx-Dialog
 
Zitat:

Zitat von _BlackDragon_
Hi.

[1.] In der PRINTDLGEX-Struktur ist ein Parameter hDevMode, welcher ein Handle auf eine DEVMODE-Struktur
darstellt. Aus dieser Struktur kannst du (unter anderem) den Druckernamen auslesen.

Danke, nun habe ich die Lösung:

Delphi-Quellcode:
devmode := GlobalLock(pdex.hDevMode);
test := string(devmode);
printer.PrinterIndex := printer.Printers.IndexOf(test) ;
markbolten


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz