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

Programmically setting the default printer

edited July 2002 in General
How can I programically set the default printer? I.e If I have two printers
installed and Printer 1 is the default, how can I programically set Printer
2 as the default?

mbd

Comments

  • edited July 2002
    ---------------------------------
    Tech Tip: Controlling the Printer
    ---------------------------------

    The PrinterSetup Class
    ----------------------

    You can control which printer is selected for a report
    and its associated properties at either design-time or run-time.
    You can also do things like print to two different printers at once or
    have a report that consists of multiple section type subreports with each
    section going to a different printer.

    The Report.PrinterSetup object that contains properties for controlling
    the printer. You can set these via the object inspector at design-time or
    from the File | PageSetup dialog in the Report Designer.

    At run-time you can control the Report.PrinterSetup properties via
    code. The PrinterSetup object contains a number of public properties
    that can be used to determine the valid values that are available.
    PrinterSetup.PrinterNames can be used to determine what printers
    are installed on the computer. PrinterSetup.PaperNames and BinNames
    can be used to determine the available paper and bin names for the
    currently selected printer. (for more info, see the RBuilder.hlp file
    topic for TppPrinterSetup.)

    Example:

    myReport.PrinterSetup.PrinterName := myReport.PrinterSetup.PrinterNames[0];

    myReport.device := dvPrinter;
    myReport.Print;


    Run the demos\reports\demo.dpr application and check out the printer
    settings section. There is a demo that displays a tabbed dialog showing
    all printer settings - this dialog is manipulating all of the
    PrinterSetup properties.


    The Printer class
    ------------------

    ReportBuilder has a TppPrinter class. A global ppPrinter object is used
    for some tasks, but when a print job is created a TppPrinter is created
    for the specific print job. In fact, one of the demos shows a report going
    to 2 printers at once.

    The TppPrinter.PrinterSetup property is an object of type
    TppPrinterSetup as is the Report.PrinterSetup property. You specifiy
    settings for
    the Report.PrinterSetup object and then they are transferred to
    TppPrinter.PrinterSetup at the appropriate time.

    If you want to control things more you can instantiate your own
    TppPrinter object and show the print dialog by calling
    TppPrinter.ShowSetupDialog: Boolean. The TppPrinter will automatically
    assign the results to the Printer.PrinterSetup object. You could then
    transfer the results to the report:

    procedure PageSetupButtonClick(Sender:TObject);
    begin
    myPrinter := TppPrinter.Create;

    if myPrinter.ShowSetupDialog then
    Report.PrinterSetup := myPrinter.PrinterSetup;

    myPrinter.Free;
    end;


    Or you can show some other dialog and transfer the results to the
    Report.PrinterSetup in some other manner. Run the
    RBuilder\Demos\Report\Demo.dpr project and check out the printer
    section.


    Normally when you want to print to the printer you do something like

    Report.Device := dvPrinter;
    Report.Print;

    But you can also create a TppPrinter object and use the
    Report.PrintToDevices to print a report to one or more devices. Again,
    see the printer section of the demo.dpr project for an example.

    --
    Cheers,

    Alexander Kramnik
    Digital Metaphors

This discussion has been closed.