AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drucker wechseln/ändern

Ein Thema von Fritz01 · begonnen am 31. Jan 2008 · letzter Beitrag vom 1. Feb 2008
Antwort Antwort
Fritz01

Registriert seit: 22. Mär 2006
Ort: Großenkneten
181 Beiträge
 
Delphi 7 Professional
 
#1

Drucker wechseln/ändern

  Alt 31. Jan 2008, 22:24
Hallo,
habe da wieder mal . . .
In einer ComboBox sind alle unter Windows installietern Drucker mit
cbDrucker.Items.Assign(Printer.Printers); aufgelistet. Der StandardDrucker ist mit
cbDrucker.ItemIndex := Printer.PrinterIndex; als aktueller Drucker aktiv.
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:
procedure Tfrm1.cbDruckerClick(Sender: TObject);
begin
  Printer.PrinterIndex := -1;
  sAktuellerDrucker := Printer.Printers.[Printer.PrinterIndex];
end;
Somit soll ‚sAktuellerDrucker’ der nun aktive Drucker sein. Wie beschreibe ich ‚sAktuellerDrucker’ in der btnClick Procedure?
Ich habe keine Idee mehr.
Gruß
Fritz
Fritz
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Drucker wechseln/ändern

  Alt 31. Jan 2008, 22:37
sAktuellerDrucker: TPrinter eventuell
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Drucker wechseln/ändern

  Alt 31. Jan 2008, 22:49
Printer.PrinterIndex := EinIndex; und dann ganz normal mit dem Printer-Singleton weiterarbeiten.

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;
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Drucker wechseln/ändern

  Alt 31. Jan 2008, 23:00
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:
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;
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.

P.S.: für andere Programme (Word etc.) hat sich nichts geändert in Richtung Standarddrucker !
Gruß
Hansa
  Mit Zitat antworten Zitat
Fritz01

Registriert seit: 22. Mär 2006
Ort: Großenkneten
181 Beiträge
 
Delphi 7 Professional
 
#5

Re: Drucker wechseln/ändern

  Alt 1. Feb 2008, 13:48
Hallo,
danke für die Antworten.
So hatte ich es ja auch gemacht.
Delphi-Quellcode:
procedure TfrmHaupt.cbDruckerClick(Sender: TObject);
begin
  Printer.PrinterIndex := -1; // PrinterIndex auf Standardwert setzen
  Printer.PrinterIndex := cbDrucker.ItemIndex; // Neuer Drucker
end;
Zurzeit ist der AdobePDF-Drucker als WindowsStandard festgelegt.
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
Fritz
  Mit Zitat antworten Zitat
merlin17

Registriert seit: 15. Dez 2002
Ort: Mittelfranken
980 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Drucker wechseln/ändern

  Alt 1. Feb 2008, 13:50
Fritz,

suche hier einmal nach RpDevice und RpDev.selectPrinter <g>


thomas, TeamNevrona
- TeamNevrona cannot respond to questions received via email -
http://rave-notes.blogspot.com
  Mit Zitat antworten Zitat
Fritz01

Registriert seit: 22. Mär 2006
Ort: Großenkneten
181 Beiträge
 
Delphi 7 Professional
 
#7

Re: Drucker wechseln/ändern

  Alt 1. Feb 2008, 16:33
@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:
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;
Der Windows-StandardDrucker wird dadurch nicht geändert.
Nochmal danke für alle Antworten und ein schönes Wochenende
Fritz
Fritz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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