Der ausgewählte Drucker ist ungültig
-
Welche Eigenschaften hat denn das zurückgelieferte
TPrinter
Objekt? Sieht das gesund aus? Was liefert denn die WinAPI FunktionGetDefaultPrinter
?
-
Das TPrinter Objekt sieht ganz Ok aus. Ich kann Printers abfragen und PrinterIndex setzten. Im Debugger wird angezeigt, dass FCanvas, FFonts, DC, DevMode etc 0 ist. Das kommt mir etwas komisch vor.
GetDefaultPrinter liefert true und den korrekten Druckernamen.
-
Ich habe jetzt mal genauer nachgeschaut.
Die Exception kommt von TPrinter.SetState weil nach Aufruf von CreateHandleFunc das DC 0 ist. Fragt sich nur warum.
-
Kannst du über
GetLastError
noch was rausfinden?
-
Wenn ich CreateIC mit dem Printernamen von GetPrinter aufrufe gibt GetLastError Nummer 1801 (The printer name is invalid.) zurück.
Scheinbar stimmt irgendwas an dem Namen nicht. Ich schau mal weiter.
-
So, ich habe mir jetzt die Printer und Driver Namen über EnumPrinters organisiert. Damit erzeugt CreateIC keinen ErrorCode mehr aber auch kein DeviceContext.
-
Noch eine Meldung zum vorläufigen Abschluß.
Wie schon erwähnt bekomme ich mit dem Printernamen keinen DC und auch keinen IC, kann also über GetDeviceCaps nicht rausbekommen.
Ich habe mir also die nötigen Informationen mittels des DEVMODE Feldes, welches ja EnumPrinters auch zurückgibt organisiert. Damit kann ich erstmal wieder die Druckvorschau sehen. Drucken kann ich damit natürlich noch nicht.
-
Ok, letzte Meldung.
Das Drucken geht jetzt auch vom Programm aus, wenn ich es direkt starte aber nicht wenn es vom Builder aus gestartet wird. Das reicht mir jetzt erstmal.
Scheint irgendein Zugriffsproblem zu sein (Win 7 64).Ciao
-
Braunstein schrieb:
Scheint irgendein Zugriffsproblem zu sein (Win 7 64).
BCB mal als Admin gestartet?
-
Ja. Mach ich immer.