HBPrinter findet keinen Drucker!?

Moderator: Moderatoren

Antworten
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

HBPrinter findet keinen Drucker!?

Beitrag 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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.
Gruß
Hubert
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag 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
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag 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
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag 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().
Gruß
Hubert
Antworten