Announcement

Collapse
No announcement yet.

Button Druckereinrichtung ist disabled

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

  • Button Druckereinrichtung ist disabled

    Hi,
    <br>
    <br>(D5E inkl. SP1 QuickRepport 3.5)
    <br>wenn ich den folgenden Code ausführe wird eine Druckvorschau geöffnet, in der der Button Druckereinrichtung generell disabled ist.
    <br>Was kann man da machen?
    <br>Vielen Dank schon mal.
    <br>
    <br>mfg
    <br>PS
    <pre>
    OpenDialog1.Filter := 'QRP|*.QRP';
    If OpenDialog1.Execute Then
    Begin
    with TQRPHandler.Create do
    Begin
    try
    Filename := OpenDialog1.FileName;
    Preview;
    //print;
    finally
    Free;
    end;
    End;
    End;
    </pre>

  • #2
    Das ist im Code der Preview so hinterlegt. Ich bin mir jetzt nicht mehr ganz sicher, ob oder wie wir das Problem "damals" gelöst haben. Wir verwenden aber eine eigene Preview, die das Problem nicht mehr hat, wenn ich nicht irre. Ich poste hier einfach mal den Code (Delphi 6.02). Binde einfach mal diese Unit ein, dann wird diese Vorschaue soweit ich noch weiß, von allein verwandt:<br>
    <a href="http://www.smile-to-me.de/dl/ZiwuPreview.zip">Eigene Preview mit QR</a><p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      <pre class="sourcecode"><code>
      <b>Unit</b> ZiWuPrev.pas:

      <font color="#003399"><i>{$I QRDEFS.INC}</i></font>

      <b>unit</b> ZiWuPrev;

      <b>interface</b>

      <b>uses</b>
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls, Buttons, QRPrntr, QR3Const, ComCtrls, ToolWin, Menus,
      ImgList, QuickRpt, Printers;

      <b>const</b>
      SqrQRFile = <font color="#9933CC">'QuickReport Datei'</font>;
      SqrPage = <font color="#9933CC">'Seite'</font>;
      SqrOf = <font color="#9933CC">'von'</font>;
      SqrSaveReport = <font color="#9933CC">'Report speichern'</font>;
      SqrLoadReport = <font color="#9933CC">'Report laden'</font>;
      SqrFileNotExist = <font color="#9933CC">'Datei ist nicht vorhanden'</font>;

      <b>type</b>

      <font color="#003399"><i>// To have a custom preview be used as the default preview,</i></font>
      <font color="#003399"><i>// you first define an interface class. You will provide two</i></font>
      <font color="#003399"><i>// functions for this class, Show, and ShowModal.</i></font>
      TQRZiWuPreviewInterface = <b>class</b>(TQRPreviewInterface)
      <b>public</b>
      <b>function</b> Show(AQRPrinter : TQRPrinter) : TWinControl; override;
      <b>function</b> ShowModal(AQRPrinter : TQRPrinter): TWinControl; override;
      <b>end</b>;

      TZiWuStandardPreview = <b>class</b>(TForm)
      StatusBar: TStatusBar;
      ToolBar1: TToolBar;
      ZoomFit: TToolButton;
      Zoom100: TToolButton;
      ZoomToWidth: TToolButton;
      Separator1: TToolButton;
      FirstPage: TToolButton;
      PreviousPage: TToolButton;
      ToolButton2: TToolButton;
      LastPage: TToolButton;
      Separator2: TToolButton;
      Print: TToolButton;
      Separator3: TToolButton;
      SaveReport: TToolButton;
      LoadReport: TToolButton;
      Separator4: TToolButton;
      ToolButton1: TToolButton;
      QRPreview: TQRPreview;
      ComboBoxPrinter: TComboBox;
      ToolButton4: TToolButton;
      PrintSetup: TToolButton;
      ImageListNormal: TImageList;
      BitBtnEnde: TToolButton;
      ImageListDisable: TImageList;
      ImageListHot: TImageList;
      <b>procedure</b> FormClose(Sender: TObject; <b>var</b> Action: TCloseAction);
      <b>procedure</b> ZoomToFitClick(Sender: TObject);
      <b>procedure</b> ZoomTo100Click(Sender: TObject);
      <b>procedure</b> ZoomToWidthClick(Sender: TObject);
      <b>procedure</b> FirstPageClick(Sender: TObject);
      <b>procedure</b> PrevPageClick(Sender: TObject);
      <b>procedure</b> NextPageClick(Sender: TObject);
      <b>procedure</b> LastPageClick(Sender: TObject);
      <b>procedure</b> PrintClick(Sender: TObject);
      <b>procedure</b> FormResize(Sender: TObject);
      <b>procedure</b> FormKeyDown(Sender: TObject; <b>var</b> Key: Word; Shift: TShiftState);
      <b>procedure</b> SaveClick(Sender: TObject);
      <b>procedure</b> PrintSetupClick(Sender: TObject);
      <b>procedure</b> LoadClick(Sender: TObject);
      <b>procedure</b> QRPreviewPageAvailable(Sender: TObject; PageNum: Integer);
      <b>procedure</b> QRPreviewProgressUpdate(Sender: TObject; Progress: Integer);
      <b>procedure</b> FormCreate(Sender: TObject);
      <b>procedure</b> ComboBoxPrinterChange(Sender: TObject);
      <b>procedure</b> BitBtnEndeClick(Sender: TObject);
      <b>procedure</b> FormShow(Sender: TObject);
      <b>private</b>
      FQRPrinter : TQRPrinter;
      <font color="#003399"><i>//Gauge : TProgressBar;</i></font>
      LastProgress : integer;
      <b>public</b>
      <b>constructor</b> CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter); virtual;
      <b>procedure</b> Show;
      <b>procedure</b> UpdateInfo;
      <b>property</b> QRPrinter : TQRPrinter <b>read</b> FQRPrinter <b>write</b> FQRPrinter;
      <b>end</b>;

      <b>implementation</b>

      <font color="#003399"><i>{$R *.DFM}</i></font>

      </code></pre&gt
      Schöne Grüße, Mario

      Comment


      • #4
        <pre class="sourcecode"><code>
        <b>constructor</b> TZiWuStandardPreview.CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter);
        <b>begin</b>
        <b>inherited</b> Create(AOwner);
        QRPrinter := aQRPrinter;
        WindowState := wsMaximized;
        QRPreview.QRPrinter := aQRPrinter;
        <b>if</b> (QRPrinter &lt;&gt; <b>nil</b>) <b>and</b> (QRPrinter.Title &lt;&gt; <font color="#9933CC">''</font>) <b>then</b> Caption := QRPrinter.Title;
        LastProgress := 0;
        <b>if</b> QRPrinter.status = mpFinished <b>then</b>
        Print.Enabled := true;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.FormClose(Sender: TObject; <b>var</b> Action: TCloseAction);
        <b>begin</b>
        QRPrinter.ClosePreview(Self);
        Action := caFree;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.UpdateInfo;
        <b>begin</b>
        StatusBar.Panels[1].Text := SqrPage + <font color="#9933CC">' '</font> + IntToStr(QRPreview.PageNumber) + <font color="#9933CC">' '</font> +
        SqrOf + <font color="#9933CC">' '</font> + IntToStr(QRPreview.QRPrinter.PageCount);
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.ZoomToFitClick(Sender: TObject);
        <b>begin</b>
        Application.ProcessMessages;
        QRPreview.ZoomToFit;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.ZoomTo100Click(Sender: TObject);
        <b>begin</b>
        Application.ProcessMessages;
        QRPreview.Zoom := 100;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.ZoomToWidthClick(Sender: TObject);
        <b>begin</b>
        Application.ProcessMessages;
        QRPreview.ZoomToWidth;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.FirstPageClick(Sender: TObject);
        <b>begin</b>
        QRPreview.PageNumber := 1;
        UpdateInfo;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.PrevPageClick(Sender: TObject);
        <b>begin</b>
        QRPreview.PageNumber := QRPreview.PageNumber - 1;
        UpdateInfo;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.NextPageClick(Sender: TObject);
        <b>begin</b>
        QRPreview.PageNumber := QRPreview.PageNumber + 1;
        UpdateInfo;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.LastPageClick(Sender: TObject);
        <b>begin</b>
        QRPreview.PageNumber := QRPrinter.PageCount;
        UpdateInfo;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.PrintClick(Sender: TObject);
        <b>begin</b>
        <b>if</b> (QRPrinter.Master = <b>nil</b>) <b>or</b> (QRPrinter.Master <b>is</b> TQRCompositeWinControl) <b>then</b>
        QRPrinter.Print
        <b>else</b> <b>if</b> TCustomQuickRep(QRPrinter.Master).QRPrinter.Status &lt;&gt; mpBusy <b>then</b> QRPrinter.Print;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.FormResize(Sender: TObject);
        <b>begin</b>
        QRPreview.UpdateZoom;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.Show;
        <b>begin</b>
        <b>inherited</b> Show;
        UpdateInfo;
        <b>end</b>;

        <b>procedure</b> TZiWuStandardPreview.FormKeyDown(Sender: TObject; <b>var</b> Key: Word; Shift: TShiftState);
        <b>begin</b>
        <b>case</b> Key <b>of</b>
        VK_Next : <b>if</b> Shift = [ssCtrl] <b>then</b>
        LastPageClick(Self)
        <b>else</b>
        NextPageClick(Self);
        VK_Prior : <b>if</b> Shift = [ssCtrl] <b>then</b>
        FirstPageClick(Self)
        <b>else</b>
        PrevPageClick(Self);
        VK_Home : FirstPageClick(Self);
        VK_End : LastPageClick(Self);
        VK_Escape : BitBtnEnde.Click;

        VK_Up : QRPreview.VertScrollBar.Position := QRPreview.VertScrollBar.Position - QRPreview.VertScrollBar.Increment;
        VK_Down : QRPreview.VertScrollBar.Position := QRPreview.VertScrollBar.Position + QRPreview.VertScrollBar.Increment;
        VK_Left : QRPreview.HorzScrollBar.Position := QRPreview.HorzScrollBar.Position - QRPreview.HorzScrollBar.Increment;
        VK_Right : QRPreview.HorzScrollBar.Position := QRPreview.HorzScrollBar.Position + QRPreview.HorzScrollBar.Increment;
        <b>end</b>;
        <b>end</b>;

        </code></pre&gt
        Schöne Grüße, Mario

        Comment


        • #5
          <pre class="sourcecode"><code>
          <b>procedure</b> TZiWuStandardPreview.SaveClick(Sender: TObject);
          <b>var</b>
          aExportFilter : TQRExportFilter;
          <b>begin</b>
          aExportFilter := <b>nil</b>;
          <b>with</b> TSaveDialog.Create(Application) <b>do</b>
          <b>try</b>
          Title := SqrSaveReport;
          Filter := QRExportFilterLibrary.SaveDialogFilterString;
          DefaultExt := cQRPDefaultExt;
          <b>if</b> Execute <b>then</b>
          <b>begin</b>
          <b>if</b> FilterIndex = 1 <b>then</b>
          <b>begin</b>
          <b>if</b> (QRPrinter.Master = <b>nil</b>) <b>or</b> (QRPrinter.Master <b>is</b> TQRCompositeWinControl)
          <b>then</b> QRPrinter.Save(Filename)
          <b>else</b> TCustomQuickRep(QRPrinter.Master).QRPrinter.Save(F ilename);
          <b>end</b>
          <b>else</b>
          <b>begin</b>
          <b>try</b>
          aExportFilter := TQRExportFilterLibraryEntry(
          QRExportFilterLibrary.Filters[FilterIndex - 2]).ExportFilterClass.Create(Filename);
          QRPrinter.ExportToFilter(aExportFilter);
          <b>finally</b>
          aExportFilter.Free
          <b>end</b>
          <b>end</b>
          <b>end</b>;
          <b>finally</b>
          Free;
          <b>end</b>;
          <b>end</b>;
          <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

          <b>procedure</b> TZiWuStandardPreview.PrintSetupClick(Sender: TObject);
          <b>begin</b>
          <b>if</b> <b>NOT</b>((QRPrinter.Master = <b>nil</b>) <b>or</b> (QRPrinter.Master <b>is</b> TQRCompositeWinControl))
          <b>then</b> TCustomQuickRep(QRPrinter.Master).QrPrinter.PrintS etup;
          <b>end</b>;
          <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

          <b>procedure</b> TZiWuStandardPreview.LoadClick(Sender: TObject);
          <b>begin</b>
          <b>with</b> TOpenDialog.Create(Application) <b>do</b>
          <b>try</b>
          Title := SqrLoadReport;
          Filter := SqrQRFile + <font color="#9933CC">' (*.'</font> +cQRPDefaultExt + <font color="#9933CC">')|*.'</font> + cqrpDefaultExt;
          <b>if</b> Execute <b>then</b>
          <b>if</b> FileExists(FileName) <b>then</b>
          <b>begin</b>
          QRPrinter.Load(Filename);
          QRPreview.PageNumber := 1;
          QRPreview.PreviewImage.PageNumber := 1;
          UpdateInfo;
          PrintSetup.Enabled := False;
          Print.Enabled := true;
          <b>end</b>
          <b>else</b>
          ShowMessage(SqrFileNotExist);
          <b>finally</b>
          free;
          <b>end</b>;
          <b>end</b>;
          <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

          <b>procedure</b> TZiWuStandardPreview.QRPreviewPageAvailable(Sender : TObject;
          PageNum: Integer);
          <b>begin</b>
          UpdateInfo;
          <b>if</b> qrprinter.status = mpFinished <b>then</b>
          <b>begin</b>
          PrintSetup.Enabled := true;
          Print.Enabled := true;
          <b>end</b>;
          <b>end</b>;
          <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

          <b>procedure</b> TZiWuStandardPreview.QRPreviewProgressUpdate(Sende r: TObject; Progress: Integer);
          <b>begin</b>
          <b>if</b> Progress &gt;= LastProgress + 5 <b>then</b>
          <b>begin</b>
          StatusBar.Panels[0].Text := IntToStr(Progress)+<font color="#9933CC">'%'</font>;
          LastProgress := Progress;
          <b>end</b>;
          <b>if</b> (Progress = 0) <b>or</b> (Progress = 100)
          <b>then</b> StatusBar.Panels[0].Text := <font color="#9933CC">''</font>;
          <b>end</b>;
          <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

          </code></pre&gt
          Schöne Grüße, Mario

          Comment


          • #6
            <pre class="sourcecode"><code>
            <b>procedure</b> TZiWuStandardPreview.FormCreate(Sender: TObject);
            <b>begin</b>
            HorzScrollbar.Tracking := true;
            VertScrollbar.Tracking := true;
            ComboBoxPrinter.Clear;
            ComboBoxPrinter.Items.Assign(Printer.Printers);
            <b>end</b>;
            <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

            <b>procedure</b> TZiWuStandardPreview.ComboBoxPrinterChange(Sender: TObject);
            <b>begin</b>
            Screen.Cursor := crHourGlass;
            Print.Enabled := False;

            <b>if</b> (QRPrinter.Master = <b>nil</b>) <b>or</b> (QRPrinter.Master <b>is</b> TQRCompositeWinControl)
            <b>then</b> QRPrinter.PrinterIndex := ComboBoxPrinter.ItemIndex
            <b>else</b> TCustomQuickRep(QRPrinter.Master).PrinterSettings. PrinterIndex := ComboBoxPrinter.ItemIndex;

            Print.Enabled := true;
            Screen.Cursor := crDefault;
            <b>end</b>;
            <font color="#003399"><i>//-------------------------------------------------------------------------------------------------------------------------</i></font>

            <b>procedure</b> TZiWuStandardPreview.BitBtnEndeClick(Sender: TObject);
            <b>begin</b>
            Close;
            <b>end</b>;

            <b>procedure</b> TZiWuStandardPreview.FormShow(Sender: TObject);
            <b>begin</b>
            <b>if</b> (QRPrinter.Master = <b>nil</b>) <b>or</b> (QRPrinter.Master <b>is</b> TQRCompositeWinControl)
            <b>then</b> ComboBoxPrinter.ItemIndex := QRPrinter.PrinterIndex
            <b>else</b> ComboBoxPrinter.ItemIndex := TCustomQuickRep(QRPrinter.Master).PrinterSettings. PrinterIndex;
            <b>end</b>;

            <font color="#003399"><i>{ TQRZiWuPreviewInterface }</i></font>

            <b>function</b> TQRZiWuPreviewInterface.Show(AQRPrinter: TQRPrinter): TWinControl;
            <b>begin</b>
            Result := TZiWuStandardPreview.CreatePreview(Application, AQRPrinter);
            TZiWuStandardPreview(Result).Show;
            <b>end</b>;

            <b>function</b> TQRZiWuPreviewInterface.ShowModal(AQRPrinter: TQRPrinter): TWinControl;
            <b>begin</b>
            Result := TZiWuStandardPreview.CreatePreview(Application, AQRPrinter);
            TZiWuStandardPreview(Result).ShowModal;
            <b>end</b>;

            <b>initialization</b>
            <font color="#003399"><i>// To specify this preview as the default, you would call</i></font>
            <font color="#003399"><i>// the RegisterPreviewClass with the type of preview to register:</i></font>
            RegisterPreviewClass(TQRZiWuPreviewInterface);

            <b>end</b>.

            </code></pre&gt
            Schöne Grüße, Mario

            Comment


            • #7
              <br>Vielen Dank!
              <br>
              <br>mfg
              <br>P

              Comment


              • #8
                @Mario Noack:

                Hallo,

                und vielen Dank nochmal.
                Leider funktioniert das folgende nicht richtig:
                <pre>
                if NOT((QRPrinter.Master = nil) or (QRPrinter.Master is TQRCompositeWinControl))
                then TCustomQuickRep(QRPrinter.Master).QRPrinter.PrintS etup;
                </pre>
                <br>
                <br>Der PrintSetup Dialog wird zwar aufgerufen, man kann auch Einstellungen machen, aber leider sind die dann auch weg wenn man auf OK klickt. Z.B. ich möchte Seite 7 bis 9 von 20 Seiten drucken. Es werden jedoch grundsätzlich 20 Seiten gedruckt.
                <br>
                <br>Was kann man da machen?
                <br>
                <br>Vielen Dank schon mal.
                <br>
                <br>mfg
                <br>P

                Comment

                Working...
                X