Results 1 to 7 of 7

Thread: Drucker ansteuern

  1. #1
    Join Date
    Feb 2011
    Posts
    20

    Default Drucker ansteuern

    Hallo zusammen,

    bin gerade ein wenig am rum probieren, da ich von Crystal auf DFReports umsteigen möchte.
    Nun bin ich zur "meiner" Druckersteuerung unter Crystal gekommen:
    1. In einer Tabelle wird einem Dokumententypen der Drucker hinterlegt
    Das sollte noch kein Problem sein, den kann ich, wenn ich es richtig verstanden habe über psPrinterName setzen, mir ist nur nicht ganz klar, wo dir richtige Stelle dazu ist, wenn der Report mit RunReport aufgerufen wird.
    2. Druckerschacht
    Das wird wohl eine größere Herausforderung... unter Crystal konnte ich nach der Druckerauswahl (ComSelectPrinter) die Schachnummer übergeben (ComPaperSource). Nun hab ich gesehen dass es die Eigenschaft peDefaultSource vom PrintDialog gibt. Konnte bisher aber keine Ergebnisse damit erzielen.
    Habe das Problem versucht anders umzugehen und einen weiteren DruckerB einzurichten, der einem DruckerA entspricht mit dem Unterschied, dass der Standardschacht unterschiedlich ist. Leider kommt der Ausdruck immer auf dem Standardschacht des DruckerA raus, auch wenn der DruckerB im psPrinterName gesetzt ist.

    Hätte hierzu jemand eine Idee?
    Viele Gruesse
    Danka

  2. #2
    Join Date
    Jul 2009
    Location
    Wiesbaden, Germany
    Posts
    245

    Default Re: Drucker ansteuern

    Hallo Danka,

    zu beiden Problemen habe ich in einem Thread (im englischen Teil) die (potentiellen) Antworten dazu gefunden.

    Zu 1. Link
    Wie es aussieht, die Property einfach kurz vor der eigentlichen Ausgabe setzen, sollte reichen.

    Zu 2. Link
    Roman Köhler hatte hier auch mit dem cPrintDialog gearbeitet. Vielleicht hilft das ja weiter. Ansonsten gäbe es auch noch die "PrintDialog" Klasse, die eigentlich für Crystal gedacht war, die ebenfalls eine Property für den Schacht (DefaultSource) hat. In der Hilfe der Klasse steht, dass diese nur für die CrystalReport Klasse gedacht ist und für andere Zwecke evtl. ungeeignet ist. Ich habe es nicht ausprobiert, aber vielleicht kann diese ja auch verwendet werden und verhält sich vielleicht anders/besser?

  3. #3
    Join Date
    Feb 2011
    Posts
    20

    Default Re: Drucker ansteuern

    Hallo,

    Habe es mal ganz einfach versucht, mich am Beispiel mit Drucekrdialog orientiert und folgendes getestet:

    Code:
    Object oPrinterSelection is a cPrintDialog 
    End_Object 
    
    Object oOutputReportButton is a Button 
       Set Location to 33 4
       Set Label to 'Output Report' 
    
       Procedure OnClick 
          Integer iResult iTray
          Handle hPrintDlg 
    
          Get PrintDialog of oPrinterSelection to iResult 
          If (iResult <> 0) Begin 
             Get phPrintDlg of oPrinterSelection to hPrintDlg 
             Set phPrintDlg of oReport to hPrintDlg 
             Get peDefaultSource of oPrinterSelection to iTray
             send Info_Box iTray
          End 
    
          Send RunReport of oReport  
       End_Procedure 
     End_Object
    Die Info_Box gibt immer die richtige, also die ausgewählte Schachtnummer aus (an meinem Drucker die 2 für Schacht2).
    Der Aufruf der Procedure PrintReport erfolgt dann auch mit dem richtigen DruckerDialog, die Druckausgabe erfolgt jedoch immer auf dem Standardschacht.
    Das dürfte doch schon mal nicht sein oder? Den wenn ich im Dialog einen Schacht auswähle, sollte auch auf diesem gedruckt werden?

    Viele Grüße
    Danka

  4. #4
    Join Date
    Jul 2009
    Location
    Wiesbaden, Germany
    Posts
    245

    Default Re: Drucker ansteuern

    Welche "peOutputDestination" ist denn angegeben? Ich gehe mal von "PRINT_TO_PRINTER" aus? Denn "PRINT_TO_PRINTER_NO_DIALOG" gibt ändert noch an den Flags des Printdialogs herum.

  5. #5
    Join Date
    Feb 2011
    Posts
    20

    Default Re: Drucker ansteuern

    peOutputDestination ist PRINT_TP_PRINTER, setzt man diese auf PRINT_TO_PRINTER_NO_DIALOG ohne psPrinterName zu hinterlegen, wird der Ausdruck automatisch auf den Standarddrucker umgeleitet.

    Grüße
    Danka

  6. #6
    Join Date
    Feb 2011
    Posts
    20

    Default Re: Drucker ansteuern

    Hallo,

    habe noch ein wenig die Doku/Hilfe durchstöbert und bin auf die Report Options gestoßen.
    Dort kann der Standardschacht im Report gespeichert werden. Gesetzt wird dieser entweder durch ein Dropdown-Menü oder durch eine Funktion! Dies ließ mein Herz höher schlagen!
    Ein kurzer Test und ein lautes JA:

    1. Übergabe der, für den Benutzer hinterlegten Schachtnummer in eine Funktion im Report
    Code:
    Set psFunction of oReport sReportId 'Schacht' to ('return ' + sSchacht)
    2. Setzen des DefaultSource in den Report Options via Funktion
    Code:
    return {@Schacht}
    3. Drucker mit psPrinterName übergeben

    Manchmal ist es doch einfacher als man denkt
    Vielen Dank für die Unterstützung

    Grüße
    Danka

  7. #7
    Join Date
    Aug 2009
    Location
    Germany
    Posts
    54

    Default Re: Drucker ansteuern

    Hallo Danka,

    ich kann das zwar momentan nicht gebrauchen, denke aber, dass kommt noch auf mich zu. Daher herzlichen Dank für deine Lösung :-)

    Grüße
    Carsten

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •