Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Nach Printer.Abort kommt Schrott (https://www.delphipraxis.net/53843-nach-printer-abort-kommt-schrott.html)

easywk 23. Sep 2005 16:33


Nach Printer.Abort kommt Schrott
 
Moin, moin,

wenn ich einen Ausdruck mit Printer.Abort abbreche, dann kommt beim nächsten (nicht abgebrochenen) Ausdruck nur Schrott raus (manchmal auch PCL-Error). Laut Hilfe soll Abort den Drucker ja zurücksetzen und eventuelle Druckdaten löschen. Der Versuch, trotz Abort noch ein Printer.EndDoc zu verwenden hat nichts gebracht, dann kommt beim EndDoc die Fehlermeldung, dass der Drucker gar nicht druckt.

Auch wenn einige Unteroutinen fehlen, hier mal das Codefragment:
Delphi-Quellcode:
Printer.BeginDoc;
for cnt:=1 to AnzahlZeilen do
  // Fortschritt ist das Fenster mit dem Abbrechen-Button
  if not Fortschritt.Terminated then
    begin
      // hier wird dann eine Zeile ausgegeben
      PrintZeile(Zeilen[cnt]);
    end;
if not Fortschritt.Terminated then
  Printer.EndDoc
else Printer.Abort;
Jemand eine Ahnung, woher dieses Verhalten kommt?

cu und Danke
Björn

easywk 27. Sep 2005 11:44

Re: Nach Printer.Abort kommt Schrott
 
Moin, moin,

leider habe ich für das o.g. Problem immer noch keine Lösung. Weiss jetzt eventuell jemand Rat?

cu
easywk

leddl 27. Sep 2005 11:59

Re: Nach Printer.Abort kommt Schrott
 
Was genau ist denn "Fortschritt"? Wird die else-Klausel auch wirklich korrekt durchlaufen? Könnte ja sein, daß Printer.Abbort gar nicht erst aufgerufen wird.

Flocke 27. Sep 2005 12:22

Re: Nach Printer.Abort kommt Schrott
 
Du solltest statt mit Fortschritt.Terminated mit Printer.Aborted arbeiten - also direkt beim Drücken des Abbrechen-Buttons Printer.Abort aufrufen.

easywk 27. Sep 2005 12:37

Re: Nach Printer.Abort kommt Schrott
 
Fortschritt ist das Fenster, auf dem der Abbrechen-Button ist. Das ist ein Standard-Form von mir, welches ich auch bei anderen Dingen benutzen um einerseite eine Fortschrittsanzeige zu realisieren und andererseites eine Abbruchmöglichkeit zu geben. Wenn man in diesem Fenster den Abbrechen-Button drückt, wird die Eigenschaft "Terminated" von Fortschritt auf TRUE gesetzt ...

easywk 27. Sep 2005 12:38

Re: Nach Printer.Abort kommt Schrott
 
Zitat:

Zitat von Flocke
Du solltest statt mit Fortschritt.Terminated mit Printer.Aborted arbeiten - also direkt beim Drücken des Abbrechen-Buttons Printer.Abort aufrufen.

Der Effekt ist quasi der Gleiche. Habe es mal so ausprobiert, wie du gesagt hast - Problem bleibt bestehen. Ich habe einfach das Gefühl, dass der Abort den Drucker nicht wieder sauber zurücksetzt.

marabu 27. Sep 2005 13:02

Re: Nach Printer.Abort kommt Schrott
 
Hi Björn,

leite die Druckausgabe mal in eine Datei um und schau nach, ob die Reset Sequenz am Ende reingeschrieben wurde - dann haben wir wenigstens deine Vermutung bestätigt oder widerlegt. Und nenne mal Druckermodell und Hersteller und Treiberangaben. Den aktuellen Treiber verwendest du schon?

Grüße vom marabu

Flocke 27. Sep 2005 13:08

Re: Nach Printer.Abort kommt Schrott
 
Also TPrinter.Abort ruft die API-Funktion AbortDoc auf und danach (indirekt) noch EndPage (was mich ein bisschen irritiert) und räumt noch ein wenig auf (setzt z.B. FAborted auf TRUE).

An sich sollte das aber klappen.

Hast du mit anderen Programmen ähnliche Schwierigkeiten?
Tritt der Fehler auch mit anderen Druckern auf?

Ups: hatte Marabus Beitrag gar nicht bemerkt...

easywk 27. Sep 2005 13:35

Re: Nach Printer.Abort kommt Schrott
 
Hallo zusammen,

Ich verwende einen Lexmark E232 mit dem neusten Treiber. Wenn ich bei anderen Programmen einen Druck aus der Druckerqueue lösche, dann habe ich das Problem nicht. Wenn ich die Ausgabe auf eine Datei umleite, dann steht die Reset-Sequenz zum Schluss drinnen... Auch der Kyocera hier in der Firma macht keine Probleme (der ist aber auch im Netzwerk und eigentlich immer sehr "genügsam").

Scheint also echt ein Problem meines Lexmarks zu sein..... :evil: und das bedeutet wohl, dass ich damit leben muss.

Erstmal vielen Dank für die Hilfe.

cu
easywk


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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