Access Cookbook, 2nd Edition [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Access Cookbook, 2nd Edition [Electronic resources] - نسخه متنی

Ken Getz; Paul Litwin; Andy Baron

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید










Recipe 5.2 Set and Retrieve the Name of the Default Output Device



5.2.1 Problem



Windows allows you to install a number
of printer drivers, but one of them must always be denoted as the
default printer. Although Windows provides its own concept of its
default printer, Access maintains its own, independent default
printer. You'd like to be able to control which
printer Access thinks is the default printer, perhaps even choosing
from a list of all the installed printers. Is there a way to do this
from within Access?


5.2.2 Solution


Windows
maintains its own list of available printers and stores information
about the default printer. When Access starts up, it automatically
uses Windows's default printer as its own default
printer. Access's Application object provides a
Printer property. Setting this property to refer to an item within
the Printers collection allows you to control the default printer for
all Access objects.


In Access, you always have the choice of printing an object to the
default printer or to a specific printer. None of the techniques
shown in this chapter that allow you to change the output destination
will work if you set up your reports to print to a specific printer.
In addition, printing to a specific printer will almost always lead
to trouble if you distribute your applications to end users who may
or may not have the same printer available. We suggest that, if
possible, you set your reports so that they all print to the default
printer.

To create a combo box in your own
application that allows the user to choose a new default printer,
follow these steps:

  1. Add a combo box to your form and name it cboPrinters.

  2. Add the following procedure to your form's module:

    Private Sub FillPrinterList(ctl As Control)
    ' Fill the provided control (ctl) with a list of printers. This
    ' will cause a runtime error if ctl isn't a list or combo box.
    Dim prt As Printer
    ctl.RowSourceType = "Value List"
    For Each prt In Application.Printers
    ctl.AddItem prt.DeviceName
    Next prt
    End Sub
  3. Modify the form's
    Open event procedure, so that it looks like this:

    Private Sub Form_Load
    Call FillPrinterList(Me.cboPrinters)
    ' Select the default printer, in the combo box.
    ' This may fail, so simply disregard errors.
    On Error Resume Next
    Me.cboPrinters = Application.Printer.DeviceName
    End Sub
  4. Modify the AfterUpdate event procedure of cboPrinters, so that it
    looks like this:

    Private Sub cboPrinters_AfterUpdate( )
    Dim lngIndex As Long
    lngIndex = Me.cboPrinters.ListIndex
    Set Application.Printer = Application.Printers(lngIndex)
    End Sub

To see a sample application that allows you to select the default
printer, load and run the form frmDefaultPrinterList from

05-02.MDB . This form, shown in Figure 5-2, includes a combo box from which you can
select a new default printer for Access. When you first load the
form, the combo box should already have the current default output
device selected. If you make a choice, the code attached to the
AfterUpdate event for the combo box will change the printer that
Access uses for its default. This change will affect any printing you
do from within Access, if the printed object has been set up to print
to the default printer.


Figure 5-2. frmDefaultPrinterList allows you to choose a new Access default printer



5.2.3 Discussion


You saw the code in the

FillPrinterList procedure in the previous
section. This time it's separated out into its own
procedure, so it will be easier for you to use in future projects.
The form's Load event procedure fills the combo box
with its list of printers and then attempts to set the value of the
combo box to match the name of the currently selected default
printer, using this code:

Me.cboPrinters = Application.Printer.DeviceName

After you select an item from
the list of printers in the combo box, the AfterUpdate event
procedure for that control sets the application's
default printer to the printer you just selected, using this code:

Set Application.Printer = Application.Printers(lngIndex)

Access uses the default output device for printing, unless you
specify otherwise in Access's File Page
Setup dialog. The Solution in Recipe 5.7
will combine methods from this section and others to show you how to
send a report to the printer you choose at runtime. The methods shown
there allow you to direct a report to the printer one day and to the
fax modem the next.

If you change
Access's default printer and then determine that
you'd like to put it back to its original value, you
can. Simply set the Application.Printer value to the built-in value
Nothing, and Access will revert to its original
default printer:

Set Application.Printer = Nothing

Although setting the value to Nothing instead of
to a specific printer seems odd, Access understands the special value
and simply reverts to the original default printer it found in
Windows when it started the current session.

Although you could use the Windows API to change
Windows's understanding of its own default printer,
there's really no need to do that from within
Access. Access maintains its own default printer (assuming the
default printer from Windows when it first starts a session), and you
can easily manipulate that value using the techniques shown here.


/ 232