Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Printer.Title fehlerhaft? (https://www.delphipraxis.net/188486-printer-title-fehlerhaft.html)

haentschman 9. Mär 2016 09:42

Delphi-Version: 10 Seattle

Printer.Title fehlerhaft?
 
Hallöle...:P

Heute ist mir etwas Merkwürdiges aufgefallen. :roll:
Delphi-Quellcode:
procedure TMyPrinter.PrintIt;
begin
  Printer.Title := Title;
  Printer.BeginDoc;
  try
.
.
  finally
    Printer.EndDoc;
  end;
end;
Nach dem Programmstart beim ersten Drucken wird zwar der Title zugewiesen, aber sowohl im PDF Creator als auch in der Druckwarteschlange nicht angezeigt. Wenn ich nun gleich danach etwas anderes drucke (Title geändert) erscheint der vorhergehende Title im PDF Creator bzw. Warteschlange. :gruebel:

Hat jemand eine Info dazu? (Windows 10)

Danke :P

himitsu 9. Mär 2016 10:05

AW: Printer.Title fehlerhaft?
 
Schau mal in TPrinter.BeginDoc (irgendwas.Printers.pas) rein.
Dort wird der Wert des Property Title genommen und direkt an MSDN-Library durchsuchenStartDoc übergeben.

Wenn das immernoch so ist, dann kann das eigentlich nicht die Schuld vom Delphi sein, denn was kann Emba da schon falsch machen? :roll:


[add] Allerdings vernachlässigt BorCodEro fahrlässig sämtliche Fehlerbehandlung, wie z.B. die Auswertung des Results von StartDoc. :warn: (zumindestens in XE)

TomF 9. Mär 2016 12:58

AW: Printer.Title fehlerhaft?
 
Mit einem Application.Processmessages direkt nach dem setzen des Printer.Title und vor dem BeginDoc sollte das funktionieren...

haentschman 9. Mär 2016 13:04

AW: Printer.Title fehlerhaft?
 
Zitat:

Mit einem Application.Processmessages direkt nach dem setzen des Printer.Title und vor dem BeginDoc sollte das funktionieren...
...leider nicht. :( Aber trotzdem Glückwunsch zum ersten Beitrag nach der Anmeldung... :thumb:
Zitat:

Wenn das immernoch so ist, dann kann das eigentlich nicht die Schuld vom Delphi sein, denn was kann Emba da schon falsch machen?
Nun ja, ich tippe ja auch auf W10. Kann das jemand vieleicht bestätigen?

haentschman 11. Mär 2016 12:40

AW: Printer.Title fehlerhaft?
 
Moin...:P
...hochhol wegen fehlender Lösung. :cry:

Sir Rufo 11. Mär 2016 13:57

AW: Printer.Title fehlerhaft?
 
Mit Seattle getestet und es funktioniert (W8.1 x64, W10 x64) mit dem Code wie gewünscht.

Ich verwende aber auch den - in meinen Augen korrekten - Code
Delphi-Quellcode:
Printer.Title := 'Some Title';
Printer.BeginDoc;
try
  ...
  Printer.EndDoc;
except
  Printer.Abort;
  raise;
end;
@TomF

Ich sehe nicht wie ein
Delphi-Quellcode:
Application.ProcessMessages
hier helfen könnte.

TomF 11. Mär 2016 19:15

AW: Printer.Title fehlerhaft?
 
Hi Sir Rufo,

klar, dein Code ist richtig und so verwende ich ihn auch. Ich hatte aber doch das beschriebene Problem, dass der Printer.Title nicht zuverlässig oder erst beim nächsten DruckJob angezeigt wurde.

Dann fand ich irgendwo(?) den Hinweis, dass eben dieses
Code:
Application.ProcessMessages
Abhilfe schaffen kann.

Ich füge seither diese Zeile dort immer ein und es funktioniert zuverlässig.
Ob und warum das helfen sollte, habe ich eigentlich nie hinterfragt.

Schade - mein erster Eintrag hier war also eine Niete...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.

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