![]() |
Drucker wechseln/ändern
Hallo,
habe da wieder mal . . . In einer ComboBox sind alle unter Windows installietern Drucker mit
Delphi-Quellcode:
aufgelistet. Der StandardDrucker ist mit
cbDrucker.Items.Assign(Printer.Printers);
Delphi-Quellcode:
als aktueller Drucker aktiv.
cbDrucker.ItemIndex := Printer.PrinterIndex;
Nun kommt mein Problem. Ich möchte zum Drucken einen anderen Drucker benutzen. Der Wechsel soll, wie ich in der DP gelesen habe, mit einem Zweizeiler zu erledigen sein.
Delphi-Quellcode:
Somit soll ‚sAktuellerDrucker’ der nun aktive Drucker sein. Wie beschreibe ich ‚sAktuellerDrucker’ in der btnClick Procedure?
procedure Tfrm1.cbDruckerClick(Sender: TObject);
begin Printer.PrinterIndex := -1; sAktuellerDrucker := Printer.Printers.[Printer.PrinterIndex]; end; Ich habe keine Idee mehr. Gruß Fritz |
Re: Drucker wechseln/ändern
Delphi-Quellcode:
eventuell
sAktuellerDrucker: TPrinter
|
Re: Drucker wechseln/ändern
Delphi-Quellcode:
und dann ganz normal mit dem Printer-Singleton weiterarbeiten.
Printer.PrinterIndex := EinIndex;
Beispiel:
Delphi-Quellcode:
//Combobox mit verfügbaren Druckern befüllen
procedure TForm1.FormCreate(Sender: TObject); begin ComboBox1.Items.Assign(Printer.Printers); end; //Auswahl übernehmen procedure TForm1.ComboBox1Select(Sender: TObject); begin Printer.PrinterIndex := ComboBox1.ItemIndex; end; //Testdokument drucken procedure TForm1.Button1Click(Sender: TObject); var P: TPrinter; begin if ComboBox1.ItemIndex <> -1 then begin P := Printer; P.BeginDoc; try P.Canvas.Font.Size := 32; P.Canvas.TextOut(100, 100, 'Hallo, Welt!'); finally P.EndDoc; end; end else begin MessageDlg('Nix ausgewählt!', mtError, [mbOK], 0); end; end; |
Re: Drucker wechseln/ändern
Warum immer nur den "Windows-Standard" benutzen ? Der ist vielfach eher kontraproduktiv. Auf diversen Forms will ich den Drucker ändern. Aber wie ?
Annahme ist hierbei, dass der Drucker nicht nur für eine einzelne Seite umgestellt werden soll. Der Drucker soll also verwendet werden, ohne den Windows-Standarddrucker umzubiegen. Schreibe den also in eine INI-Datei. Ungefähr so :
Delphi-Quellcode:
Es geht um einen Button, der einen PrinterDialog öffnet, um die Auswahl eines Druckers zu ermöglichen. Dieser wird dann einmalig benutzt. Der User hat aber die Alternative, den Drucker auch als Standard für das eigene Programm zu betrachten. Sofern das gewünscht wird, wird der gewünschte Drucker eben in INI-Datei vorgemerkt. Hat er seine 20 Seiten auf dem "nicht - normalen" Drucker ausgedruckt, dann muss er sich eben die Mühe machen, den wieder umzustellen.
procedure Tfrm.btnDruckerClick(Sender: TObject);
var Ini : TIniFile; begin inherited; Ini := TIniFile.Create (ExtractFilePath (ParamStr (0)) + 'XY.INI');; 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; Ini.Free; end; P.S.: für andere Programme (Word etc.) hat sich nichts geändert in Richtung Standarddrucker ! |
Re: Drucker wechseln/ändern
Hallo,
danke für die Antworten. So hatte ich es ja auch gemacht.
Delphi-Quellcode:
Zurzeit ist der AdobePDF-Drucker als WindowsStandard festgelegt.
procedure TfrmHaupt.cbDruckerClick(Sender: TObject);
begin Printer.PrinterIndex := -1; // PrinterIndex auf Standardwert setzen Printer.PrinterIndex := cbDrucker.ItemIndex; // Neuer Drucker end; In der ComboBox wird der neue Drucker angezeigt, gedruckt wird aber immer auf dem Drucker der mit den WindowsEinstellungen als StandardDrucker gewählt wurde, also AdobePDF. Obwohl ich auf HP DeskJet umgestellt habe öffnet sich bei Click auf Drucken ein Fenster mit der Frage wo die PDF Datei gespeichert werden soll. Nun habe ich die OnClick Procedure auch bei OnSelect eingetragen. Jetzt öffnet sich das Fenster mit der PDF Abfrage sofort nach Druckerwechsel. Für den in der ComboBox gezeigten Drucker kann ich über die DruckerEigenschaften die entsprechenden Eigenschaften ansehen. Der gewählte Drucker wird aber nicht zum Drucken benutzt. Gedruckt wird mit Rave. Könnte das eventuell an den Rave Einstellungen liegen? Wenn ja dann wo? Ich kann da nichts finden, habe es versucht. Fritz |
Re: Drucker wechseln/ändern
Fritz,
suche hier einmal nach RpDevice und RpDev.selectPrinter <g> :-) thomas, TeamNevrona |
Re: Drucker wechseln/ändern
@merlin17,
ja, das war's!! Danke für den SuchTipp. Nun geht auch die Druckerauswahl. Hier die Lösung: RpDevice in uses einbinden und:
Delphi-Quellcode:
Der Windows-StandardDrucker wird dadurch nicht geändert.
procedure TfrmHaupt.cbDruckerClick(Sender: TObject);
begin Printer.PrinterIndex := -1; // PrinterIndex auf Standardwert setzen // neuer Drucker für RaveAnwendungen RpDev.SelectPrinter(cbDrucker.Items[cbDrucker.ItemIndex], true); end; Nochmal danke für alle Antworten und ein schönes Wochenende Fritz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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