Impedisci la stampa da un'anteprima del report in Visual FoxPro 9.0

Questo articolo illustra come disabilitare l'opzione per stampare un report durante l'anteprima usando Object-Assisted Reporting in Visual FoxPro 9.0.

Versione originale del prodotto: Visual FoxPro
Numero KB originale: 895279

Riepilogo

Microsoft Visual FoxPro 9.0 introduce l'architettura Object-Assisted Reporting. Con questa nuova progettazione, è possibile interfacciarsi direttamente tramite il codice con gli strumenti di creazione di report di Visual FoxPro 9.0, ad esempio le anteprime Progettazione report e report. È quindi più semplice disabilitare la possibilità di stampare da un'anteprima del report in Visual FoxPro 9.0 rispetto alle versioni precedenti di Visual FoxPro. Questo articolo descrive come scrivere codice per interagire direttamente con e configurare le anteprime dei report di report di Object-Assisted Reporting.

Ulteriori informazioni

Per impostazione predefinita, quando un report di Object-Assisted viene visualizzato in anteprima in Visual FoxPro 9.0, l'utente può stampare il report dalla finestra Anteprima report usando uno dei metodi seguenti:

  • Sulla barra degli strumenti Anteprima report fare clic sul pulsante Stampa .
  • Fare clic con il pulsante destro del mouse all'interno della finestra Anteprima report e quindi scegliere Stampa.

È possibile disabilitare questa opzione. Nelle versioni precedenti di Visual FoxPro, il file di risorse Di Visual FoxPro (FoxUser.dbf) doveva essere modificato.

In Visual FoxPro 9.0 è comunque possibile modificare il file FoxUser.dbf per disabilitare la stampa dalla finestra Anteprima report. Tuttavia, con l'introduzione di Object-Assisted Reporting, è ora disponibile un approccio alternativo. Per impostazione predefinita, Object-Assisted Reporting in Visual FoxPro 9.0 non è abilitato. Per abilitarla, è necessario modificare l'impostazione REPORTBEHAVIOR . A tale scopo, usare uno dei metodi seguenti:

  • Metodo 1, Modificare l'impostazione del comportamento del motore di report tramite l'IDE Visual FoxPro:

    1. Nel menu Strumenti fare clic su Opzioni.
    2. Nella finestra di dialogo Opzioni fare clic sulla scheda Report e quindi selezionare 90 (Assistito da oggetti) nell'elenco Comportamento del motore di report .
    3. (Facoltativo) Se si vuole che questa impostazione venga mantenuta tra le sessioni di Visual FoxPro 9.0, fare clic su Imposta come predefinito nella finestra di dialogo Opzioni .
  • Metodo 2, Eseguire il comando seguente nel codice per abilitare Object-Assisted Reporting:

    SET REPORTBEHAVIOR 90.

Esempio di codice

Quando si esegue l'esempio di codice seguente, viene visualizzata l'anteprima del file di report di esempio denominato Colors.frx. L'esempio di codice visualizza in anteprima il report e usa una combinazione di impostazioni delle proprietà nel contenitore di anteprima e nel gestore dell'estensione di anteprima per disabilitare completamente la stampa dalla finestra Anteprima report.

Questo esempio di codice risolve anche un problema nell'anteprima del report di Visual FoxPro 9.0 Object-Assisted in cui la barra degli strumenti Anteprima report non mantiene correttamente le impostazioni di visualizzazione tra gli aspetti nella stessa sessione di anteprima del report.

Questo esempio di codice si applica sia all'ambiente di sviluppo di Visual FoxPro 9.0 che ai file eseguibili creati tramite Visual FoxPro 9.0, purché si usi Object-Assisted Reporting.

Per usare questo esempio di codice, seguire questa procedura:

  1. Salvare il codice seguente in un nuovo file di programma in Visual FoxPro 9.0 e quindi eseguire il codice.

    *----------- 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
    

    Verrà aperta un'anteprima del report Colors.frx.

    Nota

    È possibile stampare dalla finestra Anteprima report facendo clic con il pulsante destro del mouse sull'anteprima o facendo clic su Stampa sulla barra degli strumenti Anteprima report.

  2. Chiudere l'anteprima e quindi modificare il codice nell'editor del programma.

  3. Modificare l'istruzione #DEFINE all'inizio del codice in un valore F. A tale scopo, individuare il codice seguente.

    #DEFINE PrintFromPreview .T.
    

    Sostituirlo con il codice seguente:

    #DEFINE PrintFromPreview .F.
    
  4. Salvare il codice e quindi eseguirlo di nuovo.

Nota

Non è ora possibile stampare dalla finestra Anteprima report facendo clic con il pulsante destro del mouse sull'anteprima o facendo clic su Stampa sulla barra degli strumenti Anteprima report.