创建“打印机设置”窗体 在“设计”视图中创建一个窗体,并如上图所示添加下列控件。 lbxSelectReport:显示报表列表的列表框 cmbPrinter:显示可用打印机列表的组合框 cmbPaperSize:显示纸张大小列表的组合框 opgOrientation:具有两个选项的选项组,用于显示方向选项 cmdPreview:以预览模式打开报表的命令按钮 cmdApplyChanges:将最新设置应用到当前报表的命令按钮 cmdPrint:使用在窗体中指定的设置打印选定报表的命令按钮 向窗体的 Open 事件中添加代码以初始化控件。 Open 事件子过程示例
Private Sub Form_Open(Cancel As Integer) ' 包含默认打印机索引的变量。 Dim strDefaultPrinter As String ' 包含打印机对象的变量。 Dim prt As Printer ' 在 AllReports 集合中遍历时 ' 包含报表对象的变量。 Dim accObj As AccessObject ' 填写打印机列表。 ' 确保 RowSource 为空。 Me!cmbPrinter.RowSource = "" Me!lbxSelectReport.RowSource = "" ' 遍历计算机上已安装的打印机,并将它们添加到组合框中。 For Each prt In Application.Printers ' 使用新的 AddItem 方法将打印机名称添加到组合框中。 Me!cmbPrinter.AddItem prt.DeviceName Next ' 记忆默认打印机。 strDefaultPrinter = Application.Printer.DeviceName ' 将组合框设置为默认打印机。 Me!cmbPrinter = strDefaultPrinter Me!cmbPaperSize = 1 ' 填写报表列表。 For Each accObj In CurrentProject.AllReports Me!lbxSelectReport.AddItem accObj.Name Next ' 将列表框设置为第一个报表。 Me!lbxSelectReport.SetFocus Me!lbxSelectReport.ListIndex = 0 End Sub 向“预览报表”命令按钮添加代码,以便以预览模式打开选定的报表。 “预览报表”命令按钮的 onClick 事件过程示例
Private Sub cmdPreview_Click() ' 包含要操纵的打印机对象的变量。 Dim prt As Printer ' 为选定的打印机选取打印机对象。 Set prt = Application.Printers(Me!cmbPrinter.Value) ' 读取用户指定的设置。 prt.PaperSize = Me!cmbPaperSize prt.Orientation = Me!opgOrientation ' 以预览模式打开报表。 DoCmd.OpenReport Me!lbxSelectReport, acViewPreview ' 将报表的打印机设置为已修改的打印机对象。 Reports(Me!lbxSelectReport).Printer = prt End Sub 向“应用更改”命令按钮添加代码,以将更改应用到以预览模式打开的报表。 “应用更改”命令按钮的 onClick 事件过程示例
Private Sub cmdApplyChanges_Click() If CurrentProject.AllReports(Me!lbxSelectReport).IsLoaded Then With Reports(Me!lbxSelectReport).Printer .PaperSize = Me!cmbPaperSize .Orientation = Me!opgOrientation End With Else MsgBox "请先预览报表。" End If End Sub 向“打印报表”命令按钮添加代码,以便基于用户指定的设置打印选定的报表。 “打印报表”命令按钮的 onClick 事件过程示例
Private Sub cmdPrint_Click() ' 检查报表是否已打开。 If CurrentProject.AllReports(Me!lbxSelectReport).IsLoaded Then ' 打印报表(如果已打开)。 DoCmd.OpenReport Me!lbxSelectReport, acViewNormal Else ' 使用自定义设置来设置应用程序打印机。 Application.Printer = Application.Printers(Me!cmbPrinter.Value) Application.Printer.PaperSize = Me!cmbPaperSize Application.Printer.Orientation = Me!opgOrientation ' 使用新的应用程序级别打印机设置来打开和打印报表。 DoCmd.OpenReport Me!lbxSelectReport, acViewNormal ' 将应用程序打印机重置为默认设置。 Set Application.Printer = Nothing End If End Sub |