Home General
New Blog Posts: Merging Reports - Part 1 and Part 2

can manipulate the standard preview form?

edited December 2004 in General
hi all
How to disable(or invisible)the print button (or other buttons)in the
standard priview form?

Thanks

Comments

  • edited December 2004
    Hi,

    The following example shows how to hide the print button in a custom preview
    window. The article below explains the plugin archetecture of the previewer
    and how to create your own custom previewers.

    http://www.digital-metaphors.com/tips/PreviewerHidePrintButton.zip

    -----------------------------------------
    Article: Creating a Preview Plugin
    -----------------------------------------

    Q: I've followed the tutorials and registered a Preview Form replacement but
    that did not affect the TppDesigner's Preview workspace.


    A: Do not use the form replacement, but rather, there is a different
    architecture built into the preview form that is registered by default.



    You will need to register a TppPreview descendent. The class you register
    is used to create the preview controls inside the standard print preview
    form and the designer preview workspace.


    Here is an example of creating a simple custom preview that access the
    viewer its been assigned in order to change the page color. You can also do
    more advanced operations such as adding and removing buttons and change the
    behavior of the preview form. Access the inherited controls via. protected
    properties and override the virtual methods in order to customize behavior.

    Open ppPreview.pas and view the TppPreview class as a guide to create a
    custom preview descendent.


    unit MyPreviewPlugin;

    interface

    uses
    ppPreview;

    type
    TMyPreviewPlugin = class(TppPreview)
    public
    procedure BeforePreview; override;

    end;


    implementation

    uses
    Graphics;


    procedure TMyPreviewPlugin.BeforePreview;
    begin
    inherited BeforePreview;

    Viewer.PageColor := clRed;

    end;

    initialization
    TppPreviewPlugIn.Register(TMyPreviewPlugin);

    finalization
    TppPreviewPlugIn.UnRegister(TMyPreviewPlugin);

    end.

    --
    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited December 2004
    Thanks Nico Cizik

    I have adapted code from yours.
    The delphi compiler tells me that Undeclared identifier: 'PrintButton'


    interface
    uses
    Classes, Controls, ppPreview;

    type
    TMyPreviewPlugin = class(TppPreview)
    public
    constructor Create(aParent: TWinControl); override;
    end;

    implementation
    uses
    Graphics;

    constructor TMyPreviewPlugin.Create(aParent: TWinControl);
    begin
    inherited;
    PrintButton.Visible := False;
    end;

    initialization
    TppPreviewPlugIn.Register(TMyPreviewPlugin);

    finalization
    TppPreviewPlugIn.UnRegister(TMyPreviewPlugin);
    end.
  • edited December 2004
    Hi,

    The PrintButton property is a public property of the TppPreview class.
    Adding ppPreview to your uses clause should make this property available for
    a descendent of the TppPreview class. Which version of ReportBuilder are
    you using? Be sure your library path is correct. Does the example I sent
    compile correctly?

    --
    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
  • edited December 2004
    "Nico Cizik (Digital Metaphors)" ?b?l??
  • edited December 2004
    Hi,

    Sorry, I did not relize you were using an older version of ReportBuilder.
    The preview plugin archetecture was not in place yet for RB 6. You will
    need to either upgrade your version of ReportBuilder or create a replacement
    form for the current preview form. Take a look at the tutorial located in
    the \RBuilder\Tutorials\Complete\II. Applications\04. End-User with Custom
    Explorer\... directory for an example of replacing a form in ReportBuilder.

    ------------------------------------------------------------
    Tech Tip: Replacing Built-in Dialogs/Forms in ReportBuilder
    ------------------------------------------------------------

    ReportBuilder has an open architecture for replacing any of the built-in
    dialogs. You can replace any of the built-in dialogs by creating a new form
    that inherits from an abstract ancestor and then registering it as the new
    built-in dialog.

    For example to replace ReportBuilder's print dialog you could

    1. Create a new Print dialog by renaming ReportBuilder's default print
    dialog, then doing a SaveAs to save it under another unit name.

    The default dialog resides in RBuilder\Source\ppPDlg.pas and the form is
    called ppPrintDialog. You should assign your form a unique name, for
    example, myPrintDlg, and save the unit to another name. Also save the unit
    to the directory where your other forms are stored (not RBuilder\Source).

    2. Make desired changes.

    You will notice that the print dialog inherits from an ancestor
    TppCustomPrintDialog - this ancestor resides in ppForms.pas (where all the
    abstract ancestor forms for ReportBuilder are defined).

    3. Register the new form.

    Declare an initializtion section at the bottom of the unit:

    initialization

    ppRegisterForm(TppCustomPrintDialog, TMyPrintDialog);


    4. Add the new unit to your project and compile.

    Now your preview dialog should be automatically created and destroyed by
    ReportBuilder. The two page preview dialog in the
    RBuilder\Demos\Reports\Demo.dpro was created this same way. The only
    difference is the ppRegisterForm call is in then OnClick event of the
    button.

    --
    Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com

    Best Regards,

    Nico Cizik
    Digital Metaphors
    http://www.digital-metaphors.com
This discussion has been closed.