Verhindern des Druckens aus einer Berichtsvorschau in Visual FoxPro 9.0

In diesem Artikel wird gezeigt, wie Sie die Option zum Drucken eines Berichts deaktivieren, während er in der Vorschau angezeigt wird, indem Sie Object-Assisted Reporting in Visual FoxPro 9.0 verwenden.

Ursprüngliche Produktversion: Visual FoxPro
Ursprüngliche KB-Nummer: 895279

Zusammenfassung

Microsoft Visual FoxPro 9.0 führt Object-Assisted Reporting-Architektur ein. Mit diesem neuen Design können Sie direkt über Code mit Visual FoxPro 9.0-Berichterstellungstools wie den Berichts-Designer und Berichtsvorschauen zusammenarbeiten. Daher ist es einfacher, die Möglichkeit zum Drucken aus einer Berichtsvorschau in Visual FoxPro 9.0 zu deaktivieren als in früheren Versionen von Visual FoxPro. In diesem Artikel wird beschrieben, wie Sie Code schreiben, um direkt mit Object-Assisted Berichtsvorschauen zu interagieren und zu konfigurieren.

Weitere Informationen

Wenn ein Object-Assisted Bericht in Visual FoxPro 9.0 in der Vorschau angezeigt wird, kann der Benutzer den Bericht standardmäßig mithilfe einer der folgenden Methoden aus dem Berichtsvorschaufenster drucken:

  • Klicken Sie auf der Symbolleiste Berichtsvorschau auf die Schaltfläche Drucken .
  • Klicken Sie mit der rechten Maustaste in das Fenster Berichtsvorschau, und klicken Sie dann auf Drucken.

Sie können diese Option deaktivieren. In früheren Versionen von Visual FoxPro musste die Visual FoxPro-Ressourcendatei (FoxUser.dbf) geändert werden.

In Visual FoxPro 9.0 können Sie die Datei FoxUser.dbf weiterhin ändern, um das Drucken im Berichtsvorschaufenster zu deaktivieren. Mit der Einführung von Object-Assisted Reporting ist nun jedoch ein alternativer Ansatz verfügbar. Standardmäßig ist Object-Assisted Reporting in Visual FoxPro 9.0 nicht aktiviert. Um sie zu aktivieren, müssen Sie die REPORTBEHAVIOR Einstellung ändern. Verwenden Sie dazu eine der folgenden Methoden:

  • Methode 1, Ändern der Verhaltenseinstellung der Berichts-Engine über die Visual FoxPro-IDE:

    1. Klicken Sie im Menü Extras auf Optionen.
    2. Klicken Sie im Dialogfeld Optionen auf die Registerkarte Berichte , und wählen Sie dann 90 (Objektunterstützt) in der Liste Berichts-Engine-Verhalten aus.
    3. (Optional) Wenn diese Einstellung zwischen Visual FoxPro 9.0-Sitzungen beibehalten werden soll, klicken Sie im Dialogfeld Optionen auf Als Standard festlegen.
  • Methode 2: Führen Sie den folgenden Befehl im Code aus, um Object-Assisted Reporting zu aktivieren:

    SET REPORTBEHAVIOR 90.

Codebeispiel

Wenn Sie das folgende Codebeispiel ausführen, wird die Beispielberichtsdatei mit dem Namen Colors.frx in der Vorschau angezeigt. Im Codebeispiel wird eine Vorschau des Berichts angezeigt und eine Kombination aus Eigenschafteneinstellungen im Vorschaucontainer und Vorschauerweiterungshandler verwendet, um das Drucken aus dem Berichtsvorschaufenster vollständig zu deaktivieren.

In diesem Codebeispiel wird auch ein Problem in der Berichtsvorschau von Visual FoxPro 9.0 Object-Assisted behoben, bei dem die Berichtsvorschausymbolleiste die Anzeigeeinstellungen zwischen den Darstellungen in derselben Berichtsvorschausitzung nicht ordnungsgemäß beibehalten.

Dieses Codebeispiel gilt sowohl für die Visual FoxPro 9.0-Entwicklungsumgebung als auch für ausführbare Dateien, die mit Visual FoxPro 9.0 erstellt werden, solange Sie Object-Assisted Reporting verwenden.

Führen Sie die folgenden Schritte aus, um dieses Codebeispiel zu verwenden:

  1. Speichern Sie den folgenden Code in einer neuen Programmdatei in Visual FoxPro 9.0, und führen Sie den Code dann aus.

    *----------- START CODE
    *
    *-----------------------------------
    * AUTHOR: Trevor Hancock
    * CREATED: 02/24/05 02:47:08 PM
    * ABSTRACT:
    * Shows how to disable printing from
    * PREVIEW when you use object-assisted
    * reporting in VFP9.
    *
    * Also includes a workaround for problem
    * where the PREVIEW toolbar does not
    * recognize the TextOnToolbar or
    * PrintFromPreview settings between
    * toolbar displays during same preview.
    *-----------------------------------
    
    *-- Defines whether to alllow for
    *-- printing during preview. Used to set
    *-- the "AllowPrintfromPreview" property
    *-- of the object-assisted preview container
    *-- later in this code.
    #DEFINE PrintFromPreview .T.
    
    LOCAL loPreviewContainer AS FORM, ;
    loReportListener AS REPORTLISTENER, ;
    loExHandler AS ExtensionHandler OF SYS(16)
    
    *-- Get a preview container from the
    *-- .APP registered to handle object-assisted
    *-- report previewing.
    loPreviewContainer = NULL
    DO (_REPORTPREVIEW) WITH loPreviewContainer
    *-- Create a PREVIEW listener
    loReportListener = NEWOBJECT('ReportListener')
    loReportListener.LISTENERTYPE = 1 &&Preview
    
    *-- Link the Listener and preview container
    loReportListener.PREVIEWCONTAINER = loPreviewContainer
    
    *-- Changing this property prevents printing from the Preview toolbar
    *-- and from right-clicking on the preview container, and then clicking "print".
    *-- This property is not in the VFP9 documentation at this point.
    loPreviewContainer.AllowPrintfromPreview = PrintFromPreview
    *-- Controls appearance of text on some of the
    *-- Preview toolbar buttons. .F. is the default.
    *-- Included here just to show that it is an available option.
    loPreviewContainer.TextOnToolbar = .F.
    
    *-- Create an extension handler and hook it to the
    *-- preview container. This will let you manipulate
    *-- properties of the container and its Preview toolbar
    loExHandler = NEWOBJECT('ExtensionHandler')
    loPreviewContainer.SetExtensionHandler( loExHandler )
    
    REPORT FORM ;
    HOME() + 'Samples\Solution\Reports\colors.frx' ;
    OBJECT loReportListener
    
    RELEASE loPreviewContainer, loReportListener, loExHandler
    
    *-------------------------
    *-------------------------
    DEFINE CLASS ExtensionHandler AS CUSTOM
    *-- Ref to the Preview Container's Preview Form
    PreviewForm = NULL
    
    *-- Here you implement (hook into) the PreviewForm_Assign
    *-- event of the preview container's parent proxy
    PROCEDURE PreviewForm_Assign( loRef )
    *-- Perform default behavior: assign obj ref.
    THIS.PreviewForm = loRef
    
    *-- Grab the obj ref to the preview form and bind to its
    *-- ShowToolbar() method. This lets the
    *-- STB_Handler() method of this extension handler
    *-- to run code whenever the Preview toolbar is shown
    *-- by the PreviewForm.ShowToolbar() method.
    IF !ISNULL( loRef )
    BINDEVENT(THIS.PreviewForm, ;
    'ShowToolbar', THIS, 'STB_Handler')
    ENDIF
    ENDPROC
    
    PROCEDURE STB_Handler(lEnabled)
    *-- Here you work around the setting
    *-- persistence problem in the Preview toolbar. 
    *-- The Preview toolbar class (frxpreviewtoolbar)
    *-- already has code that you can use to enforce
    *-- setting's persistence; it is just not called. Here,
    *-- you call it.
    WITH THIS.PreviewForm.TOOLBAR
    .REFRESH()
    *-- When you call frxpreviewtoolbar::REFRESH(), the
    *-- toolbar caption is set to its Preview form,
    *-- which differs from typical behavior. You must revert that
    *-- to be consistent. If you did not do this,
    *-- you would see " - Page 2" appended to the toolbar
    *-- caption if you skipped pages.
    .CAPTION = THIS.PreviewForm.formCaption
    ENDWITH
    ENDPROC
    
    *-- A preview container requires these methods
    *-- to be implemented in an associated preview extension handler.
    *-- They are not used in this example, but still must be here.
    PROCEDURE AddBarsToMenu( cPopup, iNextBar )
    PROCEDURE SHOW( iStyle )
    ENDPROC
    PROCEDURE HandledKeyPress( nKeyCode, nShiftAltCtrl )
    RETURN .F.
    ENDPROC
    PROCEDURE PAINT
    ENDPROC
    PROCEDURE RELEASE
    RETURN .T.
    ENDPROC ENDDEFINE
    *
    *
    *----------- END CODE
    

    Eine Vorschau des Berichts Colors.frx wird geöffnet.

    Hinweis

    Sie können im Berichtsvorschaufenster drucken, indem Sie mit der rechten Maustaste auf die Vorschau klicken oder auf der Symbolleiste Berichtsvorschau auf Drucken klicken.

  2. Schließen Sie die Vorschau, und ändern Sie dann den Code im Programm-Editor.

  3. Ändern Sie die #DEFINE-Anweisung am Anfang des Codes in den Wert .F. Suchen Sie dazu den folgenden Code.

    #DEFINE PrintFromPreview .T.
    

    Ersetzen Sie sie durch den folgenden Code:

    #DEFINE PrintFromPreview .F.
    
  4. Speichern Sie den Code, und führen Sie ihn dann erneut aus.

Hinweis

Jetzt können Sie nicht mehr über das Berichtsvorschaufenster drucken, indem Sie mit der rechten Maustaste auf die Vorschau klicken oder auf der Berichtsvorschausymbolleiste auf Drucken klicken.