Seite 1 von 1

HBPrinter findet keinen Drucker!?

Verfasst: Mi, 05. Dez 2007 14:17
von Christof
Hallo Leute,
hallo Hubert,

ich habe seinerzeit öfters Deine Druckerklasse benutzt. Jetzt bekomme ich von einem Anwender den Hinweis, dass mein Programm beim Drucken aussteigt.

Code: Alles auswählen

oError:args: Valtype U Value: NIL
Fehler: Parameter hat falschen Typ
Aufgerufen von:
   Errbox(3349)
   HBPRINTDIALOG:PRINT(431)
Ich denke mal, die Kiste findet keinen Drucker. Gibt/gab es da nicht einmal ein Problem mit Netzwerkdruckern? Könnte sein, dass der Anwender nur Netzwerkdrucker (über USB angeschlossen) hat.

Was kann ich tun?

Danke und Gruß

Christof

Verfasst: Mi, 05. Dez 2007 14:57
von brandelh
Hi,

Netzwerkdrucker sind aus Sicht des Client-PC nie über USB angeschlossen, auf dem Server sehr selten, da USB Drucker meist nicht freigegeben werden können.

Ein solcher Fehler könnte auftauchen, wenn überhaupt kein Drucker in Windows definiert wurde (der letzte eventuell im Druckerordner gelöscht ?)

Wobei ich bei neueren Versionen immer Abfrage ob der Drucker erfolgreich definiert wurde und nötigenfalls eine Fehlermeldung abgebe.
Dies scheint hier aber auch der Fall zu sein, da ja ERRBOX aufgerufen wurde. Du hast offensichtlich eine ältere Version, da hier bei mir die Zeile 441 ERRBOX (aber mit richtigem Parameter) aufruft.

Grundsätzlich muss im Drucker-/Faxordner ein Drucker angelegt und als Standard definiert sein.

Wobei wenn du dir z.B. die Test.PRG ansiehst, dort steht (heute):

Code: Alles auswählen

oHBPrinter := MyHBPrinter():New():create()
if oHBPrinter:IsPrinterError()
...
so kann man schon im Anwendungsprogramm verhindern, dass das Druckfenster überhaupt geöffnet wird wenn überhaupt kein Printer verfügbar ist.

Intern verwende ich

Code: Alles auswählen

oHBPrinter := oXbpPrinter():new()
oHBPrinter:list()
um die installierten Drucker abzufragen und in Create übergebe ich den gewünschten oder nichts für den Standarddrucker. Du solltest auf die neueste Version von HBPrinter updaten und der Anwender soll prüfen ob überhaupt ein Windowsdrucker vorhanden ist. In deiner Anwendung solltest du die obige IF Abfrage einbauen, damit du selbst darauf reagieren kannst.

Verfasst: Mi, 05. Dez 2007 15:58
von Christof
Hallo Hubert,

danke für die schnelle Antwort.

Beim Anwender sind offensichtlich Drucker installiert. Das Programm druckt auch, wenn er den lokalen Drucker auswählt, wie ich zwischenzeitlich erfahren habe. Wählt er einen Netzwerkdrucker aus, kommt es zur Fehlermeldung. Hast Du dazu eine Idee?

Ich muss mal nachfragen, welcher Drucker als Standard hinterlegt ist.

Gruß

Christof

Verfasst: Do, 06. Dez 2007 11:17
von Rolf Ramacher
Hi Christof,

also ich verwende XbpPrinterDialog() aus Xbase - hier bekommst du auch
die Druckerauswahl auf welchen Drucker du drucken möchtest.

Keine Probleme hierbei

Verfasst: Do, 06. Dez 2007 18:20
von brandelh
Christof hat geschrieben:Das Programm druckt auch, wenn er den lokalen Drucker auswählt, wie ich zwischenzeitlich erfahren habe. Wählt er einen Netzwerkdrucker aus, kommt es zur Fehlermeldung. Hast Du dazu eine Idee?
wie geschrieben, zuerst die neueste Version herunterladen und die PRGs austauschen. Dann wie im TEST.PRG den Fehlerstatus des Druckers abfragen. Zur Zeit blockiere ich auch angehaltene Drucker aber es müsste immer eine Fehlermeldung kommen.

Kann er mit anderen Programmen auf diesen Drucker drucken ?

@ROLF,

wenn der Druckertreiber sauber installiert ist, hat meine Druckerklasse auch keine Probleme damit. Schließlich nutze ich auch den XbpPrinter().