Announcement

Collapse
No announcement yet.

Druckerschachtsteuerung mit QuickReport

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Druckerschachtsteuerung mit QuickReport

    Problem: Ansteuerung eines Papiereinzugschachts bis Version 3.5<p>
    Wenn im Druckersetup-Dialog ein anderer Schacht ausgewählt wird, so
    interessiert das Quickreport herzlich
    wenig. Er druckt immer aus dem Standardschacht.
    Nach Wühlen in den Quellen habe ich festgestellt, dass an bestimmten
    Stellen die Druckereinstellungen zurückgesetzt werden -
    ich weiss bis heute nicht warum. Dies führte aber zu dem Problem. Ich habe
    die entsprechenden Stellen angepaßt und arbeite
    schon ein paar Monate ohne Probleme mit dieser Version. Es kann natürlich
    sein, dass bei einem bei mir nicht vorkommenden
    Einsatzfall QuickReport fehlerhaft reagiert - das muss einfach getestet
    werden.

    Hier die Problemlösung:
    <pre>

    1. Um die Änderungen bei Bedarf leicht ungeschehen machen zu können,
    einfach einen Compilerschalter in QRDEFS.INC eintragen, z.B.

    {$DEFINE BINPATCH}

    2.Änderungen in QRPRNTR.PAS:

    procedure TPrinterSettings.ApplySettings;
    begin
    {$IFDEF BINPATCH}
    Exit;
    {$ENDIF}
    FPrinter.GetPrinter(FDevice, FDriver, FPort, DeviceMode);
    DevMode := GlobalLock(DeviceMode);
    if PaperSize = Custom then
    begin
    if Supported(dm_paperlength) then
    begin ........

    ....

    procedure ResetDriver(aPrinter : TPrinter);
    var
    Device, Name, Port: array[0..255] of Char;
    DevMode: THandle;
    begin
    aPrinter.GetPrinter( Device, Name, Port , DevMode );
    {$IFNDEF BINPATCH}
    aPrinter.SetPrinter( Device, Name, Port , 0 );
    {$ENDIF}
    end;

    ...

    constructor TQRPrinter.Create;
    begin
    {$ifdef EvalVersion}
    if not DelphiRunning then
    begin
    ShowMessage('This evaluation copy of QuickReport only works while Delphi is running. '+
    'Please contact QuSoft to order a full version');
    Application.Terminate;
    end;
    {$endif}
    FPrinterOK := Printer.Printers.Count > 0;
    {$IFDEF BINPATCH}
    aPrinter := Printer;
    {$ELSE}
    aPrinter := TPrinter.Create;
    {$ENDIF}
    aPrinterSettings := TPrinterSettings.Create;
    if PrinterOK then
    begin .............

    destructor TQRPrinter.Destroy;
    begin
    if Status <> mpReady then
    Cleanup;
    if FCloseControl <> nil then
    FCloseControl.Free;
    {$IFNDEF BINPATCH}
    aPrinter.Free;
    {$ENDIF}
    aPrinterSettings.Free;
    PageList.Free...............

    3. Änderungen in QuickRpt.pas

    procedure TCustomQuickRep.PrinterSetup;
    var
    aDialog : TQRPrintDialog;
    Device,
    Driver,
    Port : array[0..255] of char;
    hDMode : THandle;
    begin
    aDialog := TQRPrintDialog.Create(Application);
    aDialog.Printer := Printers.Printer;

    aDialog.Printer.GetPrinter(Device, Driver, Port, hDMode);
    {$IFNDEF BINPATCH}
    aDialog.Printer.SetPrinter(Device, Driver, Port, 0);
    {$ENDIF}
    aDialog.Printer.PrinterIndex := PrinterSettings.PrinterIndex;
    with aDialog do
    try...................................

    </pre>

    Das wars.

    Der bei QuSoft angebotene Patch hilft nicht weiter, wenn der User den Schacht selbst auswählen soll.

  • #2
    Hallo Bruno,

    habe das mal ausprobiert, weil ich das gleiche Problem bei einem HP 4100TN habe. Es funzt aber nicht. Habe QR 3.08 für Delphi 4. Der HP druckt immer vom Standardschacht, obwohl ich ein anders Fach ausgewählt habe. Irgendeine Idee woran das liegen könnte?

    Gruß Ka

    Comment


    • #3
      Hallo Kai,<p>
      wenn ein anderer Schacht ausgewählt wurde und dann der Druckdialog geschlossen und sofort wieder geöffnet wird: Ist dann immer noch der vorher ausgewählte Einzugsschacht selektiert

      Comment


      • #4
        Hallo Bruno,

        kann ich Dir im Moment noch nicht sagen weil ich es erst ausprobieren möchte. Ich komme aber erst morgen dazu. Dann werde ich Dir mehr dazu sagen können. Vielen Dank schon ma

        Comment


        • #5
          Hallo,

          melde mich ziemlich spät zu dem Thema. Hat jemand eine Lösung gefunden?
          Habe auch ein Problem mit einem HP 4600N. Es wird das Fach2 gewählt und der Drucker bringt einen Fehler, drückt man diesen weg, dann kommt der Druck. Bei anderen Druckern funktioniert alles korrekt.

          Dan

          Comment

          Working...
          X