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/)
-   -   Drucker auswählen mit PrinterIndex (https://www.delphipraxis.net/68134-drucker-auswaehlen-mit-printerindex.html)

Luckie 25. Apr 2006 10:16


Drucker auswählen mit PrinterIndex
 
Ich lese aus einer Ini-Datei einen Drucker aus und will auf ihn drucken:
Delphi-Quellcode:
with FPrinter do
    begin
      // Druckjob starten
      PrinterIndex := Printers.IndexOf(FPrinterName);
      BeginDoc;
Setze ich den PrinterIndex vor BeginDoc, wie oben, dann bekomme ich die Exception:
Zitat:

'Printer is not currently printing'
Setze ich den PrinterIndex nach BeginDoc bekomme ich die Exception
Zitat:

'Printing in progress'
:wall:

Kann mir mal bitte jemand verraten wann ich denn dann den Drucker auswählen soll? Ich bin etwas ratlos ehrlich gesagt. Irgendwie muss ich was vom Prinzip her falsch machen.

FPrinter ist vom Typ TPrinter aus der Unit Printers. Udn wird im Konstruktor der Klasse so
Delphi-Quellcode:
FPrinter := TPrinter.Create;
erzeugt. Der obige Codeauszug stammt aus meiner Methode TPrintDoc.Print. Davor passiert eigentlich nichts.

Hansa 25. Apr 2006 11:03

Re: Drucker auswählen mit PrinterIndex
 
Mal sehen, wie ich das mache. So :

Delphi-Quellcode:
  Ini := TIniFile.Create (ExtractFilePath (ParamStr (0)) + 'CONST.INI');;
  (*$IFNDEF DEMO*)
    if dlgDrucker.Execute then begin
      if MessageBox(Self.Handle, 'Drucker standardmäßig für Programm benutzen ?',
                    'Information', MB_ICONINFORMATION or MB_YESNOCANCEL) = idYes then begin
        DruckerName := Printer.Printers [Printer.PrinterIndex];
        Ini.WriteString('Standardvorgaben','Windows - Drucker',DruckerName);
        showmessage ('aktiver Drucker ab jetzt : ' + DruckerName);
      end;
    end;
  (*$ELSE*)
    showmessage ('Demo - Version : Drucker ist immer Windows - Standardrucker !');
    DruckerName := GetDefaultPrinter;
    DruckerDateiName := 'STANDARD.INI';
    Ini.WriteString('Standardvorgaben','Drucker - Dateiname',DruckerDateiName);
  (*$ENDIF*)
  Ini.Free;
  sbDrucker.SimpleText := 'Drucker : ' + DruckerName;
Quelltext dürfte wohl klar sein.

Elfriede 25. Apr 2006 11:07

Re: Drucker auswählen mit PrinterIndex
 
Zitat:

Zitat von Luckie
FPrinter ist vom Typ TPrinter aus der Unit Printers. Udn wird im Konstruktor der Klasse so
Delphi-Quellcode:
FPrinter := TPrinter.Create;
erzeugt. Der obige Codeauszug stammt aus meiner Methode TPrintDoc.Print. Davor passiert eigentlich nichts.

Da war doch was .... niemals ein TPrinter selbst erzeugen, sondern immer aus der Unit Printers über die Funktion Printer() geben lassen.

Aus der Delphi-Hilfe:
Zitat:

Obtain an instance of TPrinter by calling the Printer function in the Printers unit.

Luckie 25. Apr 2006 11:10

Re: Drucker auswählen mit PrinterIndex
 
@Elfriede: Das wars. Habe ich mittlerweile auch rausgefunden. ;) Aber Danke denn noch.


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