Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Druckeransteuerung (https://www.delphipraxis.net/58884-probleme-mit-druckeransteuerung.html)

stonimahoni 14. Dez 2005 09:52


Probleme mit Druckeransteuerung
 
Hi Leute....


ich stehe mal wieder vor einem kleinen Problemchen :/


Folgendes :
Ich drucke aus meiner Anwendung heraus und nutze dazu folgenden KURZEN ansatz :

Delphi-Quellcode:
      if PrintAuftrag.Execute then
      begin
           .
           .
           .
           .
      end;

Soweit so gut....ich bekomm die Druckerauswahl von Windows angezeigt und kann da auch schön Drucker nach belieben aussuchen, allerdings wird IMMER auf dem in Windows hinterlegten Standartdrucker gedruckt - WIESO ???
Kann ich das irgendwie ändern, OHNE immer vorher den Standartdrucker händig zu ändern ???

Vielen Dank.


MFG


Carsten

Der_Unwissende 14. Dez 2005 11:09

Re: Probleme mit Druckeransteuerung
 
Hi,
nun ja, wie sieht denn dein eigentliches Drucken aus? Ohne ist es recht schwer zu sagen was schief läuft, oder?

Gruß Der Unwissende

Der_Unwissende 14. Dez 2005 11:16

Re: Probleme mit Druckeransteuerung
 
Aber noch ganz kurz zum Prinzip zum Drucken.
Am einfachsten machst du es dir, wenn du eine Methode erzeugst, die für die eigentliche Ausgabe zuständig ist (also was genau angezeigt werden soll). Die bekommt als Argument halt einen TCanvas und zeichnet dort etwas rauf.
Delphi-Quellcode:
procedure printSomething(const Canvas : TCanvas);
begin
  if assigned(Canvas) then
    begin
      // Zeichne irgendwas
    end;
end;
Dann hast du an einer anderen Stelle den Aufruf des Druckerdialogs und der sieht dann so aus
Delphi-Quellcode:
procedure printOnPrinter;
begin
  if self.PrinterDialog1.Execute then
    begin
      Printer.BeginDoc;
      print(Printer.Canvas);
      Printer.EndDoc;
    end;
end;
Vielleicht siehst du hier schon den Vorteil dieser rangehensweise (kenne deine ja nicht), aber du kannst so auch leicht eine Vorschau erstellen. Statt einem PrinterCanvas übergibst du dort dann halt einen Bitmap-Canvas und zeigst das entsprechende Bitmap an.
Bei mir klappt das so jedenfalls mit jedem beliebigen Drucker.

Gruß Der Unwissende

stonimahoni 14. Dez 2005 11:20

Re: Probleme mit Druckeransteuerung
 
HI...


also ich rufe nach dem printauftrag.execute ein formular im hintergrund auf auf dem ich mit quickreport gearbeitet habe und gebe dann den print befehl.

nun habe ich noch folgendes gefunden und bei mir eingebaut :
Delphi-Quellcode:
      if PrintAuftrag.Execute then
      begin
       DruckerName := Printer.Printers [Printer.PrinterIndex];
       showmessage ('*'+DruckerName+'*');
       AssignFile (f, 'DruckerName');
       rewrite(f);
       showmessage ('aktiver Drucker ab jetzt : '+Printer.Printers [Printer.PrinterIndex]);
       .
       .
       .
das geht aber immer noch nicht, obwohl mir der richtige drucker dann bei showmessage angezeigt wird.
es kommt immer noch auf dem standarddrucker raus :(

ich hab da noch was gelesen von wegen windows bräuchte länger um die änderung zu registrieren - kann das sein ? und wenn ja, bin ich auf dem richtigen wege oder muss ich noch was hinzufügen ?

*verzweifel*


vielen dank

mfg


Carsten

Mattin 14. Dez 2005 11:38

Re: Probleme mit Druckeransteuerung
 
Hi,

Du musst dem Quickreport sagen auf wechlen Drucker der Ausdruck
erfolgen soll.

Delphi-Quellcode:
 QuickRep1.PrinterSettings.PrinterIndex := MeinDrucker;
 QuickRep1.PrinterSettings.Copies      := 1;

stonimahoni 14. Dez 2005 11:48

Re: Probleme mit Druckeransteuerung
 
@ all : erstmal tausend dank für eure hilfe !!

@ Mattin : wenn du hier wärst würd ich dir ne kiste bier spendieren ! :mrgreen:

Man man man...ich hab das prob die ganze zeit auf dem hauptformular gesucht und nicht gedacht , dass ich quickrep extra noch den drucker dann zuweisen muss. Dachte dass wenn ich den vorher schon zuweise, der Drucker dann automatisch herangezogen wird.


:wall: :wall: :wall:


ABer nun gehts endlich.



VIELEN VIELEN DANK NOCHMAL



MFG

Carsten

:dp:


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