VB中打印机选择
VB打印功能全代码

VB打印功能全代码Private Sub Image5_Click() '打印报表Dim i As IntegerDim pageleft As IntegerDim pageheader As IntegerDim pagefooter As IntegerDim pageright As IntegerDim startx As IntegerDim starty As IntegerDim startline As IntegerDim endline As IntegerDim usewidth As IntegerDim useheight As Integer pageheader = 25pagefooter = 25pageleft = 20pageright = 20'定义纸张类型A4Printer.FontSize = 20Printer.PaperSize = 9Printer.ScaleMode = 6Printer.FontBold = FalsePrinter.ScaleLeft = -20Printer.ScaleTop = -25Printer.ScaleWidth = 210Printer.ScaleHeight = 297 usewidth = Printer.ScaleWidth - 40 useheight = Printer.ScaleHeight - 50Printer.CurrentX = 0Printer.CurrentY = 0Printer.DrawWidth = 2'打印主标题Printer.FontSize = 20Printer.CurrentX = (usewidth - Printer.TextWidth(Me.Text1.Text & "经济情况表")) / 2Printer.CurrentY = Printer.ScaleTopPrinter.Print Me.Text1.Text & "经济情况表"'打印空白行Printer.FontSize = 8Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2Printer.CurrentY = Printer.CurrentY + 1Printer.Print ""'打印副标题Printer.FontSize = 15Printer.CurrentX = (usewidth - Printer.TextWidth(commonth & "月份经济情况报表")) / 2Printer.CurrentY = Printer.CurrentY + 1Printer.Print commonth & "月份经济情况报表"'打印空白行Printer.FontSize = 8Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2Printer.CurrentY = Printer.CurrentY + 1Printer.Print ""'打印表的内容'首先打印第一条横线'打印最上边的第一条横线Printer.CurrentX = pageleft + Printer.ScaleLeftstartline = Printer.CurrentY + 1Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)Printer.FontSize = 12Printer.CurrentY = Printer.CurrentY + 1starty = Printer.CurrentYPrinter.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth("")) / 2Printer.Print ""Printer.FontSize = 12Printer.CurrentX = usewidth / 3 + ((usewidth / 3 - Printer.TextWidth("今年经济情况")) / 2)Printer.CurrentY = startyPrinter.Print "今年经济情况(万元)"Printer.FontSize = 12Printer.CurrentX = (usewidth / 3) * 2 + ((usewidth / 3 - Printer.TextWidth("去年经济情况")) / 2)Printer.CurrentY = startyPrinter.Print "去年经济情况(万元)"Printer.CurrentX = pageleft + Printer.ScaleLeftPrinter.CurrentY = Printer.CurrentY + 1Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)Printer.CurrentY = Printer.CurrentY + 1For i = 0 To 10'判断是否该页已打满Me.MSFlexGrid1.Row = iIf Printer.CurrentY >= useheight Then'打印横线Printer.CurrentX = Printer.ScaleLeft + pageleftPrinter.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY)Printer.CurrentY = Printer.CurrentY + 1'打印四条竖线endline = Printer.CurrentYPrinter.Line (0, startline)-(0, endline)Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline) Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline)Printer.Line (usewidth, startline)-(usewidth, endline)'打印页号Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleftPrinter.CurrentY = useheight + 3Printer.Print Printer.PagePrinter.NewPage 'NewPage告诉打印机,程序对当前输出页的发送已经结束。
VB打印技巧

ResetPrinterOrientation Me'设为默认值Printer.Orientation=VbPRORPortrait'纵向打印Printer.Orientation=VbPRORLandscape'横向打印Printer.PaperSize=vbPRPSA4'定义纸张大小为A4设置打印页边距'你可以使用打印机的Scale属性来设置打印页边距。
下面的代码设置左边距为1/2英寸。
右边距为3/4英寸。
乘以1440是将英尺转换成twips。
Printer.ScaleLeft=-0.75*1440Printer.ScaleTop=-0.5*1440Printer.CurrentX=0Printer.CurrentY=0打印多页Rich Text打印对象在处理RichTextBox时由于忽视了Rich Text代码将不会工作得很好。
为了打印RichTextBox,要使用SelPrint命令,但是SelPrint不是非常得友好,它按照自己的方式打印然后产生退纸动作。
为了打印多页Rich Text,要找到每一页的开始和结束点,然后依此设置SelStart和SelLength,最后使用SelPrint打印出每一页。
以下是工作的每一个步骤:1、使用SaveFile命令保存编辑版本的文件。
2、转换编辑版本为打印版本:遍历这个文档,修改SelIndent和SelRightIndent的数值,使之适合于打印机(注意:编辑时的缩进数值对于屏幕是合适的,但不适用于打印机)。
做些其他的修改,比如:添加页眉,消除行号。
3、使用SelPrint循环一次打印一个页面。
这里,计算行数是一个技巧,找到LFCRs 是容易的,但是,也必须要计算一下行缠绕,它也算在了行统计中,以及绝对不允许发生的页面溢出情况。
4、使用SelRTF=""删除打印版本。
5、使用LoadFile重新启动编辑版本。
VB中打印机选择

2. 程式范例: PrinterName = " 您想设定的打印机名称 "Dim S AsString,lengthAsLong, hKey As LongS = String(80, Chr(0))length = GetProfileString("devices", PrinterName,"",S,Len(S))S = Left(S, length)CallWriteProfileString("windows","device", PrinterName& "," &S)Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal(1) 假设你的MONDIAL 。
控件叫CMDiag用如下代码可以使你选择的打印机成为默认打印机 "Printer" On Error Resume NextCMDiag.PrinterDefault = True CMDiag.CancelError = True CMDiag.ShowPrinter If Err.Number <> 0 Then Exit Sub (2) VB 里面, 原本改变预设打印机的方法是: (假设安装有两种打印机 ( 驱动程式 )) Set Printer = Printers(0)Set Printer = Printers(1) 将预设打印机设定成第一种打印机 将预设打印机设定成第二种打印机 但实际上以上叙述有时候不会成功 (原因不详 ) , 为了能够成功地改变预设打印机, 以下是呼叫 Windows API 的方法: ( 此一解决方案适用於 Windows 95,98) 1. API 的宣告: ConstHWND_BROADCAST = ConstWM_WININICHANGE =&HFFFF& &H1A Private Declare Function GetProfileString Lib "kernel32" AliasByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedStringByVal nSize As Long) As Long"GetProfileStringA" (ByVal lpAppName As String, Private Declare FunctionWriteProfileStringAs String,Lib "kernel32" AliasAs String, ByVal lpszString AsString)AsLongPrivate DeclareFunctionSendMessageLib"user32"Alias"SendMessage A" _(ByValhwndAs Long,ByValwMsg AsLong,ByValwParam AsLong,lParamAs Any)As Long"WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName "windows")至於改变NT 预设打印机的方法,则是改变登录资料库(Registry)在登录资料库中纪打印机的设定,录预设打印机的Value 是: HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows subkey的Device value0&)0&)(3) VB 中获取指定打印机的各种纸张类型及大小 放入一个 MSFlexGrid ,名称为 fgd1 ,列数为 4 'Option ExplicitPrivate Const DC_MAXEXTENT= 5Private Const DC_MINEXTENT= 4Private Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As Strin g, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long Private Type POINTSx As Long y As LongEnd TypePrivate Sub Form_Load() Dim i As Long With fgd1.Clear • FormatString= "A 纸张编号|A 纸张名称|A 纸张长度|A 纸张宽度”For i = 0 To .Cols - 1•ColWidth(i) = 1700Next i•AllowUserResizing = flexResizeColumns •Left = 0 .Width = Me.ScaleWidthEnd With GetPaperInfo End Sub' 支持纸张种类数ret = DeviceCapabilities(Private Sub GetPaperInfo() Dim i As Long, ret As Dim Length As Integer, Dim PaperNo() As Integer, ' 支持最大打印纸: ret = DeviceCapabilities(称, "LPT1", DC_MAXEXTENT,ByVal Length = ret \ 65536Width = ret - Length 'lblMaxLength.Caption 'lblMaxWidth.Caption =' 支持最小打印纸: retLongWidth As IntegerPaperName() As打 0&, ByValString,印 0&)PaperSize() As POINTS机名* 65536 LengthWidth称, "LPT1",Length = retWidth = retDeviceCapabilities( DC_MINEXTENT, ByVal \ 65536 - Length * 65536 打0&, ByVal 印 机名称, "LPT1", DC_PAPERS, ByVal 0&, ByVal 0&)' 纸张编号ReDim PaperNo(1 To ret) As IntegerCall DeviceCapabilities( 打印机名称, "LPT1", DC_PAPERS, PaperNo(1), ByVal 0&)' 纸张名称Dim arrPageName() As ByteDim allNames As StringDim lStart As Long, lEnd As LongReDim PaperName(1 To ret)As StringReDim arrPageName(1 To ret*64) As ByteCall DeviceCapabilities(打印机名称, "LPT1", DC_PAPERNAMES,arrPageName(1), ByVal 0&) allNames = StrConv(arrPageName, vbUnicode)'loop i =through1the string and search for the names of the papers1 一Do 1lEnd =InStr(lStart+ 1, allNames,Chr$(0),vbBinarypare) If (lEnd> 0) And(lEnd - lStart- 1 >0) ThenPaperName(i)= Mid$(allNames,lStart +1, lEnd - lStart-1)i = i + 1End IflStart= lEndLoop Until lEnd = 0' 纸张尺寸ReDim PaperSize(1 To ret) As POINTSCall DeviceCapabilities(Form2.bo1.Text, "LPT1", DC_PAPERSIZE, PaperSize(1), ByVal 0&)' 显示在表格中For i = 1 To retfgd1.AddItem PaperNo(i) & vbTab & PaperName(i) & vbTab & PaperSize(i).y & vbTab & PaperSize(i).xNext i ' 移除第一个空行fgd1.Row = 1 fgd1.RemoveItem 1End SubPrivate Sub Form_Resize()With fgd1.Left = 0.Width = Me.ScaleWidth .Height = Me.ScaleHeight .Top = 0End WithEnd Sub(5)编写VB打印控制程序的几点心得摘要本文在总结作者实际开发经验的基础上,详细介绍了VB实现高分辨率打印方法的几点心得。
vb 打印 实例-概述说明以及解释

vb 打印实例-概述说明以及解释1.引言1.1 概述在VB中,打印是一项常见的功能需求,通过打印可以将软件中的数据输出到纸张上,使得用户能够方便地查看和保存信息。
本文将介绍VB 中的打印功能,并通过实例演示和分析来帮助读者更好地理解和应用这一功能。
在VB中,打印功能的实现主要通过使用PrintDocument组件来完成,PrintDocument组件可以方便地控制打印输出的内容和样式。
通过设置PrintDocument的PageSettings属性和PrintPage事件来指定打印页面的设置和内容。
另外,也可以使用PrintPreviewDialog组件来提供打印预览的功能,使得用户可以在打印前预览输出的效果,从而调整需要打印的内容和格式。
本文将通过实例演示和分析来介绍如何在VB中实现打印功能,希望能帮助读者更加深入地了解和掌握这一重要的功能。
文章结构部分主要包括文章的大致组织和内容安排,旨在帮助读者更好地理解整篇文章的逻辑结构。
本文的文章结构如下:1. 引言1.1 概述:介绍VB打印功能的重要性和应用背景1.2 文章结构:介绍本文的大纲和各部分内容安排1.3 目的:阐明撰写本文的意义和目的2. 正文2.1 VB打印功能介绍:详细介绍VB语言中的打印功能的基本原理和特点2.2 VB打印实例演示:通过具体的实例演示,展示VB打印功能的具体应用和使用方法2.3 VB打印实例分析:对演示的实例进行分析和总结,深入探讨其应用场景和优势特点3. 结论3.1 总结:对整篇文章进行总结,强调VB打印功能的重要性和价值3.2 应用推广:探讨VB打印功能在实际应用中的推广和发展前景3.3 展望:展望未来VB打印功能的发展方向和潜力通过以上结构,读者可以清晰地了解本文的逻辑结构和内容安排,有助于他们更好地理解和消化文章所传达的信息。
1.3 目的:本文的目的在于介绍如何在VB(Visual Basic)中使用打印功能,并通过实例演示和分析,帮助读者更好地了解如何在自己的程序中实现打印功能。
VB的几种打印方法

With objWord
st.Range.Bold = False
st.Range.Font.Size =20
VB的几种打印方法
1. 采用Visual Basic提供的简单打印函数PrintForm方法
应用程序窗体的PrintForm方法时Visual Basic把当前窗体的位图送到打印机。该方法的优点在于它几乎不需要任何编程但也有很大缺陷,如当低分辨率图形在高分辨率打印机上打印时,会产生锯齿。
Else
CommonDialog1.Flags = CommonDialog1.Flags+ cdlPDSelection
End If
CommonDialog1.CancelError = True
On Error Resume Next
CommonDialog1.ShowPrinter
Dim objWord As Object
Const CLASSOBJECT = "Word.Application"
On Error GoTo objError
Set objWord = CreateObjectCLASSOBJECT
objWord.Visible = True
Else
Resume Next
End If
End Sub
打印直线:
Printer.Line2144021440 -Step14401440 B
打印文本:
Printer.Print "HelloChina ComputerWorld" '打印字符串
NewPage告诉打印机程序对当前输出页的发送已经结束Printer对象应开始新的一页。
VB打印属性设置

VB打印属性设置Printer.Orientation = vbPRORLandscape加上这行就可以把打印的方向改变把纸高当成纸宽横向打印,我用过的,没问题. 下面另有一些资料可参考.Printer 对象常数打印机颜色模式常数值描述vbPRCMMonochrome 1 单色输出vbPRCMColor 2 彩色输出双面打印常数值描述vbPRDPSimplex 1 单面打印vbPRDPHorizontal 2 双面水平打印vbPRDPVertical 3 双面垂直打印打印方向常数值描述vbPRORPortrait 1 文档打印以纸的窄边作顶部vbPRORLandscape 2 文档打印以纸的宽边作顶部打印质量常数值描述vbPRPQDraft -1 草稿打印质量vbPRPQLow -2 低级打印质量vbPRPQMedium -3 中等打印质量vbPRPQHigh -4 高级打印质量PaperBin 属性常数值描述vbPRBNUpper 1 从上层纸盒进纸vbPRBNLower 2 从下层纸盒进纸vbPRBNMiddle 3 从中间纸盒进纸vbPRBNManual 4 等待手动插入每页纸vbPRBNEnvelope 5 从信封进纸器进纸vbPRBNEnvManual 6 从信封进纸器进纸;但要等待手动插入vbPRBNAuto 7 (缺省方式)从当前缺省纸盒进纸vbPRBNTractor 8 从拖拉进纸器供纸vbPRBNSmallFmt 9 从小型进纸器进纸vbPRBNLargeFmt 10 从大型纸盒进纸vbPRBNLargeCapacity 11 从大容量进纸器进纸vbPRBNCassette 14 从附加的卡式纸盒进纸PaperSize 属性常数值描述vbPRPSLetter 1 信笺, 8 1/2 x 11 英寸vbPRPSLetterSmall 2 +A611 小型信笺,8 1/2 x 11 英寸vbPRPSTabloid 3 小型报, 11 x 17 英寸vbPRPSLedger 4 分类帐, 17 x 11 英寸vbPRPSLegal 5 法律文件, 8 1/2 x 14 英寸vbPRPSStatement 6 声明书,5 1/2 x 8 1/2 英寸vbPRPSExecutive 7 行政文件,7 1/2 x 10 1/2 英寸vbPRPSA3 8 A3, 297 x 420 mmvbPRPSA4 9 A4, 210 x 297 mmvbPRPSA4Small 10 A4小号, 210 x 297 mmvbPRPSA5 11 A5, 148 x 210 mmvbPRPSB4 12 B4, 250 x 354 mmvbPRPSB5 13 B5, 182 x 257 mmvbPRPSFolio 14 对开本, 8 1/2 x 13 英寸vbPRPSQuarto 15 四开本, 215 x 275 mmvbPRPS1&H14 16 10 x 14 英寸vbPRPS11x17 17 11 x 17 英寸vbPRPSNote 18 便条,8 1/2 x 11 英寸vbPRPSEnv9 19 #9 信封, 3 7/8 x 8 7/8 英寸vbPRPSEnv10 20 #10 信封, 4 1/8 x 9 1/2 英寸vbPRPSEnv11 21 #11 信封, 4 1/2 x 10 3/8 英寸vbPRPSEnv12 22 #12 信封, 4 1/2 x 11 英寸vbPRPSEnv14 23 #14 信封, 5 x 11 1/2 英寸vbPRPSCSheet 24 C 尺寸工作单vbPRPSDSheet 25 D 尺寸工作单vbPRPSESheet 26 E 尺寸工作单vbPRPSEnvDL 27 DL 型信封, 110 x 220 mmvbPRPSEnvC3 29 C3 型信封, 324 x 458 mm vbPRPSEnvC4 30 C4 型信封, 229 x 324 mm vbPRPSEnvC5 28 C5 型信封, 162 x 229 mm vbPRPSEnvC6 31 C6 型信封,114 x 162 mm vbPRPSEnvC65 32 C65 型信封,114 x 229 mm vbPRPSEnvB4 33 B4 型信封, 250 x 353 mmvbPRPSEnvB5 34 B5 型信封,176 x 250 mmvbPRPSEnvB6 35 B6 型信封, 176 x 125 mm vbPRPSEnvItaly 36 信封, 110 x 230 mm vbPRPSEnvMonarch 37 信封大王, 3 7/8 x 7 1/2 英寸vbPRPSEnvPersonal 38 信封,3 5/8 x 6 1/2 英寸vbPRPSFanfoldUS 39 U.S. 标准复写簿,14 7/8 x 11 英寸vbPRPSFanfoldStdGerman 40 德国标准复写簿,8 1/2 x 12 英寸vbPRPSFanfoldLglGerman 41 德国法律复写簿,8 1/2 x 13 英寸vbPRPSUser 256 用户定义Printer.Orientation = vbPRORLandscapeme.PrintForm按钮的click事件中加入第一句后,编译会提示:实时错误‘380’,无效属性值鼠标放上去看的时候等是左边的值=1,看来是赋值不上、、、是不是printer对象不能直接控制本地打印机的属性?。
VB打印和打印预览功能

打印和打印预览功能今天,我们将制作一个能实现打印和打印预览功能的应用程序。
程序运行结果如图所示。
运行结果技术要点●打印预览功能的实现●打印功能的实现实现过程■新建项目打开Visual ,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“PrintExample”,然后选择保存路径。
单击“确认”。
■添加控件和设置属性向当前窗体上添加三个Button控件,将他们的Text属性改为和界面一致。
■添加组件类和要打印的文件通过菜单“项目|添加组件”为当前项目添加一个组件类,并添加一个需要打印的文件。
■添加代码'组件类中的代码Imports SystemImports ponentModelImports System.Windows.FormsImports System.DrawingImports System.Drawing.PrintingImports System.IONamespace Microsoft.Samples.WinForms.VB.PrintingExample5Public Class TextFilePrintDocumentInherits PrintDocumentPrivate printFont As FontPrivate streamToPrint As StreamReaderPublic Sub New(streamToPrint As StreamReader)MyBase.NewMe.streamToPrint = streamToPrintEnd SubOverrides Protected Sub OnBeginPrint(ev As PrintEventArgs)MyBase.OnBeginPrint(ev)printFont = new Font("Arial", 10)End Sub'Override the OnPrintPage to provide the printing logic for the documentOverrides Protected Sub OnPrintPage(ev As PrintPageEventArgs)MyBase.OnPrintPage(ev)Dim lpp As Single = 0Dim yPos As Single = 0Dim count As Integer = 0Dim leftMargin As Single = ev.MarginBounds.LeftDim topMargin As Single = ev.MarginBounds.TopDim line as String'Work out the number of lines per page'Use the MarginBounds on the event to do thislpp = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)'Check count first so that we don't read line that we won't printline=streamToPrint.ReadLine()While ((count < lpp) And Not(line Is Nothing))yPos = topMargin + (count * printFont.GetHeight(ev.Graphics))ev.Graphics.DrawString (line, printFont, Brushes.Black, leftMargin,yPos, new StringFormat())count = count + 1if (count < lpp) thenline=streamToPrint.ReadLine()end ifEnd WhileIf (line <> Nothing) Thenev.HasMorePages = TrueElseev.HasMorePages = FalseEnd IfEnd SubEnd ClassEnd Namespace'主窗体中的代码Imports SystemImports ponentModelImports System.Windows.FormsImports System.DrawingImports System.Drawing.PrintingImports System.IONamespace Microsoft.Samples.WinForms.VB.PrintingExample5Public Class PrintFormInherits System.Windows.Forms.FormPrivate storedPageSettings As PageSettingsPublic Sub New ()MyBase.NewPrintForm = MeInitializeComponent()AddHandler printButton.Click, AddressOf printButton_ClickAddHandler pageSetupButton.Click, AddressOf pageSetupButton_ClickAddHandler printPreviewButton.Click, AddressOfprintPreviewButton_ClickEnd Sub'页面设置Private Sub pageSetupButton_Click(sender As object, e As System.EventArgs)Dim psDlg As New PageSetupDialogIf (storedPageSettings Is Nothing) ThenstoredPageSettings = new PageSettings()End IfpsDlg.PageSettings = storedPageSettingspsDlg.ShowDialogCatch ex As ExceptionMessageBox.Show("An error occurred - " + ex.Message) End TryEnd Sub'开始打印Private Sub printButton_Click(sender As object, e As System.EventArgs) TryDim streamToPrint As StreamReader = new StreamReader("PrintMe.Txt")Try'使用缺省打印机Dim pd As TextFilePrintDocument = newTextFilePrintDocument(streamToPrint)If Not (storedPageSettings Is Nothing) Thenpd.DefaultPageSettings = storedPageSettingsEnd IfDim dlg As New PrintDialog()dlg.Document = pdDim result As DialogResult = dlg.ShowDialog()If (result = System.Windows.Forms.DialogResult.OK) Thenpd.Print()End IfFinallystreamToPrint.Close()End TryCatch ex As ExceptionMessageBox.Show("An error occurred printing the file - " +ex.Message)End TryEnd Sub'打印预览Private Sub printPreviewButton_Click(sender As object, e AsSystem.EventArgs)TryDim streamToPrint As StreamReader = new StreamReader("PrintMe.Txt")TryDim pd As TextFilePrintDocument = newTextFilePrintDocument(streamToPrint)If Not (storedPageSettings Is Nothing) Thenpd.DefaultPageSettings = storedPageSettingsEnd IfDim dlg As New PrintPreviewDialog()dlg.Document = pddlg.ShowDialog()FinallystreamToPrint.Close()End TryCatch ex As ExceptionMessageBox.Show("An error occurred - " + ex.Message) End TryPublic Overloads Overrides Sub Dispose()MyBase.Dispose()components.Dispose()End Sub<STAThread()> Shared Sub Main()System.Windows.Forms.Application.Run(New PrintForm())End SubEnd ClassEnd Namespace■运行程序单击菜单“调试|启动”或单击图标运行程序。
VB的打印与链接

VB的几种打印方法我们编程时,如果在程序中加入“打印”功能会使程序更加完善,更加专业。
下面,我提供几种编写打印程序的方法以供大家参考。
1. 采用Visual Basic提供的简单打印函数PrintForm方法应用程序窗体的PrintForm方法时Visual Basic把当前窗体的位图送到打印机。
该方法的优点在于它几乎不需要任何编程但也有很大缺陷。
最为突出的是当低分辨率图形在高分辨率打印机上打印时其结果令人无法满意会产生锯齿。
代码如下:Private Sub Command1_Click '用PrintForm打印Me.PrintForm '打印窗体的可见区域End Sub2. 用Printer对象要想产生复杂的打印输出编程较为烦琐。
Printer对象代表系统缺省的打印机Printer对象支持许多由窗体和图形框所支持的属性和方法三种对象都有画线和画方框。
应用程序可用以下代码在Printer对象上画出1平方英寸的方框。
注意打印机以twips来测量距离。
每英寸有1440个twips。
Printer.Line2144021440-Step14401440 B打印机、从窗体和图形框都有Circle、PaintPicture、Print、Pset、TextHeight、TextWidth方法。
使用这些方法应用程序可以为打印机生成高分辨率输出。
打印文本直接用Print方法,见下列代码:Printer.Print "Hello China ComputerWorld" '打印字符串Printer对象还有一些窗体和图形框都没有方法NewPage告诉打印机程序对当前输出页的发送已经结束Printer对象应开始新的一页。
EndDoc告诉VB程序创建文档结束VB应将它发送到物理打印机上打印。
KillDoc取消当前打印作业。
应用程序应该终止由EndDoc和KillDoc所设定的每个打印作业。
VB中打印机选择

假设您的COMMONDIALOG控件叫CMDiag用如下代码可以使您选择的打印机成为默认打印机"Printer"On Error Resume NextCMDiag、PrinterDefault = TrueCMDiag、CancelError = TrueCMDiag、ShowPrinterIf Err、Number <> 0 Then Exit Sub(2)VB 里面, 原本改变预设打印机的方法就是:(假设安装有两种打印机(驱动程式))Set Printer = Printers(0) ' 将预设打印机设定成第一种打印机Set Printer = Printers(1) ' 将预设打印机设定成第二种打印机但实际上以上叙述有时候不会成功(原因不详), 为了能够成功地改变预设打印机,以下就是呼叫Windows API 的方法:( 此一解决方案适用於Windows 95,98)1、API 的宣告:Const HWND_BROADCAST = &HFFFF&Const WM_WININICHANGE = &H1APrivate Declare Function GetPro Lib "kernel32" Alias _"GetPro" (ByVal lpAppName As String, ByVal lpKeyName As _String, ByVal lpDefault As String, ByVal lpReturnedString As String, _ByVal nSize As Long) As LongPrivate Declare Function WritePro Lib "kernel32" Alias _"WritePro" (ByVal lpszSection As String, ByVal lpszKeyName _As String, ByVal lpszString As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long2、程式范例:PrinterName = "您想设定的打印机名称"Dim S As String, length As Long, hKey As LongS = String(80, Chr(0))length = GetPro("devices", PrinterName, "", S, Len(S))S = Left(S, length)Call WritePro("windows", "device", PrinterName & "," & S)Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "windows")至於改变NT 预设打印机的方法, 则就是改变登录资料库(Registry)打印机的设定,在登录资料库中纪录预设打印机的Value 就是:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows subkey 的Device value(3)VB中获取指定打印机的各种纸张类型及大小放入一个MSFlexGrid,名称为fgd1,列数为4'Option ExplicitPrivate Const DC_MAXEXTENT = 5Private Const DC_MINEXTENT = 4Private Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Declare Function DeviceCapabilities Lib "winspool、drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal l pPort As String, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As LongPrivate Type POINTSx As Longy As LongEnd TypePrivate Sub Form_Load()Dim i As LongWith fgd1、Clear、FormatString = "^纸张编号|^纸张名称|^纸张长度|^纸张宽度"For i = 0 To 、Cols - 1、ColWidth(i) = 1700Next i、AllowUserResizing = flexResizeColumns、Left = 0、Width = Me、ScaleWidthEnd WithGetPaperInfoEnd SubPrivate Sub GetPaperInfo()Dim i As Long, ret As LongDim Length As Integer, Width As IntegerDim PaperNo() As Integer, PaperName() As String, PaperSize() As POINTS '支持最大打印纸:ret = DeviceCapabilities(打印机名称, "LPT1", DC_MAXEXTENT, ByVal 0&, ByVal 0&)Length = ret \ 65536Width = ret - Length * 65536'lblMaxLength、Caption = Length'lblMaxWidth、Caption = Width'支持最小打印纸:ret = DeviceCapabilities(打印机名称, "LPT1", DC_MINEXTENT, ByVal 0&, ByVal 0&)Length = ret \ 65536Width = ret - Length * 65536'支持纸张种类数ret = DeviceCapabilities(打印机名称, "LPT1", DC_PAPERS, ByVal 0&, ByVal 0&)'纸张编号ReDim PaperNo(1 To ret) As IntegerCall DeviceCapabilities(打印机名称, "LPT1", DC_PAPERS, PaperNo(1), ByVal 0&)'纸张名称Dim arrPageName() As ByteDim allNames As StringDim lStart As Long, lEnd As LongReDim PaperName(1 To ret) As StringReDim arrPageName(1 To ret * 64) As ByteCall DeviceCapabilities(打印机名称, "LPT1", DC_PAPERNAMES, arrPageName(1), ByVal 0&)allNames = StrConv(arrPageName, vbUnicode)'loop through the string and search for the names of the papersi = 1DolEnd = InStr(lStart + 1, allNames, Chr$(0), vbBinaryCompare)If (lEnd > 0) And (lEnd - lStart - 1 > 0) ThenPaperName(i) = Mid$(allNames, lStart + 1, lEnd - lStart - 1)i = i + 1End IflStart = lEndLoop Until lEnd = 0'纸张尺寸ReDim PaperSize(1 To ret) As POINTSCall DeviceCapabilities(Form2、Combo1、Text, "LPT1", DC_PAPERSIZE, PaperSize(1), ByVal 0&)'显示在表格中For i = 1 To retfgd1、AddItem PaperNo(i) & vbTab & PaperName(i) & vbTab & PaperSize(i)、y & vbTab & PaperSize(i)、xNext i'移除第一个空行fgd1、Row = 1fgd1、RemoveItem 1End SubPrivate Sub Form_Resize()With fgd1、Left = 0、Width = Me、ScaleWidth、Height = Me、ScaleHeight、Top = 0End WithEnd Sub(5)编写VB打印控制程序的几点心得摘要本文在总结作者实际开发经验的基础上,详细介绍了VB实现高分辨率打印方法的几点心得。
vbprinter打印属性大全

printe r属性大全ColorM ode 属性返回或设置一个值,决定彩色打印机是按彩色还是单色打印输出。
运行时不可用。
语法:object.ColorM ode [= value]ColorM ode 属性语法包含下面部分:部分描述Object对象表达式,其值是―应用于‖列表中的一个对象。
Value常数或整数,指定打印方式,―设置值‖中有详细描述。
value的设置值为:设置值值描述VbPRCM Monoc hrome 1 以单色打印输出(一般为黑白阴影)VbPRCM Color 2 以彩色打印输出说明:缺省值取决于打印机驱动程序和当前打印机设置。
单色打印机忽略该属性。
注意 Printe r 对象属性的效果,取决于打印机生产商提供的驱动程序。
有些属性设置可能不起作用,或有可能几个不同的属性设置具有相同的结果。
如果对不支持彩色的打印机设置ColorM ode 属性,设置值将被忽略。
但如果试图引用该ColorM ode 属性,则给出错误信息。
在可接受范围外的设置,也有可能导致错误。
有关更多的信息,请参阅有关驱动程序的生产商文档。
Copies属性返回或设置需要打印的份数。
对于 Printe r 对象,在设计时不可用。
语法:object.Copies [= number]Copies属性语法包含下面部分:部分描述Object对象表达式,其值是―应用于‖列表中的一个对象。
Number数值表达式,指定需要打印的份数。
该值必须是整型值。
说明:对于―打印‖对话框,该属性返回在―份数‖框中用户输入的份数。
如果设置Common Dialo g 控件的 cdlPDU seDev ModeC opies标志,则该属性始终返回1。
对于 Printe r 对象,对多份打印可能进行、也可能不进行核对,这取决于打印机驱动程序。
VB PRINTER打印属性大全

ColorMode 属性 返回或设置一个值,决定彩色打印机是按彩色还是单色打印输出。运行时不可用。 语法:object.ColorMode [= value] ColorMode 属性语法包含下面部分: 部分 描述 Object 对象表达式,其值是“应用于”列表中的一个对象。 Value 常数或整数,指定打印方式,“设置值”中有详细描述。 value 的设置值为: 设置值 值 描述 VbPRCMMonochrome 1 以单色打印输出(一般为黑白阴影) VbPRCMColor 2 以彩色打印输出 说明:缺省值取决于打印机驱动程序和当前打印机设置。单色打印机忽略该属性。 注意 Printer 对象属性的效果,取决于打印机生产商提供的驱动程序。有些属性 设置可能不起作用,或有可能几个不同的属性设置具有相同的结果。如果对不支 持彩色的打印机设置 ColorMode 属性,设置值将被忽略。但如果试图引用该 ColorMode 属性,则给出错误信息。在可接受范围外的设置,也有可能导致错误。 有关更多的信息,请参阅有关驱动程序的生产商文档。
如何实现VB.NET打印控件的使用

描述:open按钮打开⼀个对话框,选择⼀个⽂件,并将⽂本反映到richtextbox上。
同时激活print,再按,就执⾏打印。
[vb]view plain copy01. Imports System.IO02. Imports System.Drawing.Printing03.04. Public Class Form105. Private PrintPageSettings As New PageSettings06. Private StringToPrint As String07. Private PrintFont As New Font("Arial", 10)08.09. Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click10. Dim FilePath As String11. OpenFileDialog1.Filter = "Text files (*.txt)|*.txt"12. OpenFileDialog1.ShowDialog()13. If OpenFileDialog1.FileName <> ""Then14. FilePath = OpenFileDialog1.FileName15. Try16. Dim MyFileStream As New FileStream(FilePath, FileMode.Open)17. RichTextBox1.LoadFile(MyFileStream, RichTextBoxStreamType.PlainText)18. MyFileStream.Close()19. StringToPrint = RichTextBox1.Text '初始化打印字符串20. btnPrint.Enabled = True21. Catch ex As Exception22. MessageBox.Show(ex.Message)23. End Try24. End If25. End Sub26.27. Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click28. Try29. '指定当前页设置30. PrintDocument1.DefaultPageSettings = PrintPageSettings31. '指定“打印”对话框的⽂档并显⽰32. StringToPrint = RichTextBox1.Text33. PrintDialog1.Document = PrintDocument134. Dim result As DialogResult = PrintDialog1.ShowDialog()35. If result = DialogResult.OK Then36. PrintDocument1.Print() '打印,并⾮由“打印”对话框控制.正如OpenFileDialog表现的形式⼀样。
VB中打印机选择

(1)假设你的COMMONDIALOG 控件叫CMDiag 用如下代码可以使你选择的打印机成为默认打印机 ”Printer”On Error Resume Next CMDiag.PrinterDefault = True CMDiag.Cance lError = True CMDiag.ShowPrinterIf Err.Number <> 0 Then Exit Sub(2) VB 里面,原本改变预设打印机的方法是:(假设安装有两种打印机(驱动程式))Set Printer = Printers(O)'将预设打印机设定成第一种打印机 Set Printer=Printers(1),将预设打印机设定成第二种打印机但实际上以上叙述有时候不会成功(原因不详), 为了能够成功地改变预设打印机,以下是呼叫Windows API 的方法:(此一解决方案适用於Windows 95,98)1. API 的宣告:Const HWND_BROADCAST = &HFFFF& Const WM_WININICHANGE = &H1APrivate Declare Function GetPro Lib "kernel32" Alias"GetPro" (ByVallpAppNameAs String,ByVal lpKeyName As _String, ByVal lpDefault As String, ByVal lpReturnedString As String, _ ByVal nSize AsLong) AsLongPrivate Declare Function WritePro Lib "kernel32" Alias"WritePro" (ByVallpszSection As String, ByVal lpszKeyName _As String, ByVal lpszString As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long2. 程式范例:PrinterName ="您想设定的打印机名称” Dim S As String, length As Long, hKey As LongS = String(80, Chr(O)) length = GetPro("devices", PrinterName, "", S, Len(S))S =Left(S, length)Call WritePro("windows", "device", PrinterName &Call SendMessage(HWND_BROADCAST, WM_WININICHANGE,至於改变 NT 预设打印机的方法, 则是改变登录资料库(Registry)打印机的设定,& S)&H7FFF&, ByVal "windows")在登录资料库中纪录预设打印机的Value 是:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows subkey 的Device value (3) VB中获取指定打印机的各种纸张类型及大小放入一个MSFlexGrid,名称为fgdl,列数为4'Option Private ExplicitConst DC_MAXEXTENT= 5Private Const DC_MINEXTENT= 4Private Const DC_PAPERNAME= 16Private Const DC_PAPERS= 2Private Const DC_PAPERSIZE = 3Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "De viceCapabilitiesA” (ByVal lpDeviceName As String, ByVal lpPort As Strin g, ByVal ilndex As Long, lpOutput As Any, lpDevMode As Any) As LongPrivate Type POINTSx As Longy As LongEnd TypePrivate Sub Form_Load()Dim i As LongWith fgdl.Clear .FormatString = "A纸张编号|人纸张名称|人纸张长度|人纸张宽度”For i = 0 To .Cols - 1.ColWidth(i) = 1700Next i.AllowUserResizing = flexResizeColumns.Left = 0.Width = Me.ScaleWidthEnd WithGetPaperlnfoEnd SubPrivate Sub GetPaperInfo()Dim i As Long, ret As LongDim Length As Integer, Width As IntegerDim PaperNo() As Integer, PaperName() As String, PaperSize() As POINTS,支持最大打印纸:ret = DeviceCapabilities(打印机名称,"LPT1", DC_MAXEXTENT, ByVal0&, ByVal0&)Length = ret \ 65536Width = ret - Length * 65536'lblMaxLength.Caption = Length 'lblMaxWidth.Caption = Width '支持最小打印纸:ret = DeviceCapabilities(称,"LPT1", DC_MINEXTENT, ByVal打0&, ByVal印0&)机名Length = ret \ 65536Width = ret - Length * 65536'支持纸张种类数ret = DeviceCapabilities(打印机名称,"LPT1”, DC_PAPERS, ByVal 0&, ByVal 0&)'纸张编号ReDim PaperNo(1 To ret) As IntegerCall DeviceCapabilities( 打印机名称,"LPT1", DC_PAPERS, PaperNo(1), ByVal 0&)'纸张名称Dim arrPageName() As ByteDim allNames As StringDim lStart As Long, lEnd As LongReDim PaperName(1 To ret) As StringReDim arrPageName(1 To ret * 64) As ByteCall DeviceCapabilities( 打印机名称,"LPT1", DC_PAPERNAMESarrPageName(1), ByVal 0&)allNames = StrConv(arrPageName, vbUnicode)'loop through the string and search for the names of the papers i = 1DolEnd = InStr(lStart + 1, allNames, Chr$(0), vbBinaryCompare)If (lEnd > 0) And (lEnd - lStart - 1 > 0) ThenPaperName(i) = Mid$(allNames, lStart + 1, lEnd - lStart-1)i = i + 1End IflStart =丘ndLoop Until lEnd = 0'纸张尺寸ReDim PaperSize(1 To ret) As POINTSCall DeviceCapabilities(bo1.Text, "LPT1", DC_PAPERSIZE, PaperSize( 1), ByVal 0&) '显示在表格中For i = 1 To ret fgdl.AddItem PaperNo(i) & vbTab & PaperName(i) & vbTab & PaperSize(i).y & vbTab & PaperSize(i).xNext i'移除第一个空行fgd1.Row = 1fgd1.RemoveItem 1End SubPrivate Sub Form_Resize()With fgd1.Left = 0.Width = Me.ScaleWidth.Height = Me.ScaleHeight.Top = 0End WithEnd Sub(5)编写VB打印控制程序的几点心得摘要本文在总结作者实际开发经验的基础上,详细介绍了VB实现高分辨率打印方法的几点心得。
VBA中的打印设置与批量打印技巧

VBA中的打印设置与批量打印技巧在Excel中,我们常常需要对工作表进行打印,打印设置的灵活性和批量打印的效率对于提高工作效率非常重要。
VBA (Visual Basic for Applications) 是一种可以在Microsoft Office套件中的各个应用程序中使用的编程语言,能够帮助我们自动化处理任务,包括打印设置和批量打印。
本文将介绍VBA中常用的打印设置以及一些实用的批量打印技巧,帮助您提高工作效率。
1. 打印设置VBA中的打印设置功能丰富,可以根据需求自定义打印页面、页眉页脚、打印区域等。
1.1 打印页面设置使用VBA,您可以轻松地对打印页面进行设置。
例如,您可以设置纸张大小、方向、边距等。
```vbaSub 页面设置()With ActiveSheet.PageSetup.PaperSize = xlPaperA4 ' 设置纸张大小为A4.Orientation = xlLandscape ' 设置横向打印.LeftMargin = Application.InchesToPoints(0.5) ' 设置左边距为0.5英寸.RightMargin = Application.InchesToPoints(0.5) ' 设置右边距为0.5英寸.TopMargin = Application.InchesToPoints(0.75) ' 设置上边距为0.75英寸.BottomMargin = Application.InchesToPoints(0.75) ' 设置下边距为0.75英寸 End WithEnd Sub```1.2 设置页眉页脚通过VBA,您可以在打印时添加页眉页脚,为打印内容提供更多信息。
```vbaSub 页眉页脚设置()With ActiveSheet.PageSetup.LeftHeader = "左侧页眉" ' 设置左侧页眉.CenterHeader = "中间页眉" ' 设置中间页眉.RightHeader = "右侧页眉" ' 设置右侧页眉.LeftFooter = "左侧页脚" ' 设置左侧页脚.CenterFooter = "中间页脚" ' 设置中间页脚.RightFooter = "右侧页脚" ' 设置右侧页脚End WithEnd Sub```1.3 打印区域设置有时候,我们不需要将整个工作表都打印出来,而只希望打印某个特定的区域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.(1)假设你的COMMONDIALOG控件叫CMDiag用如下代码可以使你选择的打印机成为默认打印机"Printer"On Error Resume NextCMDiag.PrinterDefault = TrueCMDiag.CancelError = TrueCMDiag.ShowPrinterIf Err.Number <> 0 Then Exit Sub(2)VB 里面,原本改变预设打印机的方法是:(假设安装有两种打印机(驱动程式))Set Printer = Printers(0) ' 将预设打印机设定成第一种打印机Set Printer = Printers(1) ' 将预设打印机设定成第二种打印机但实际上以上叙述有时候不会成功(原因不详),为了能够成功地改变预设打印机,以下是呼叫Windows API 的方法:( 此一解决方案适用於Windows 95,98)1. API 的宣告:Const HWND_BROADCAST = &HFFFF&Const WM_WININICHANGE = &H1APrivate Declare Function GetPro Lib "kernel32" Alias _"GetPro" (ByVal lpAppName As String, ByVal lpKeyName As _String, ByVal lpDefault As String, ByVal lpReturnedString As String, _ByVal nSize As Long) As LongPrivate Declare Function WritePro Lib "kernel32" Alias _"WritePro" (ByVal lpszSection As String, ByVal lpszKeyName _As String, ByVal lpszString As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long2. 程式范例:PrinterName = "您想设定的打印机名称"Dim S As String, length As Long, hKey As LongS = String(80, Chr(0))length = GetPro("devices", PrinterName, "", S, Len(S))S = Left(S, length)Call WritePro("windows", "device", PrinterName & "," & S)Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "windows")至於改变NT 预设打印机的方法,则是改变登录资料库(Registry)打印机的设定,在登录资料库中纪录预设打印机的Value 是:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows subkey 的Device value(3)VB中获取指定打印机的各种纸张类型及大小放入一个MSFlexGrid,名称为fgd1,列数为4'Option ExplicitPrivate Const DC_MAXEXTENT = 5Private Const DC_MINEXTENT = 4Private Const DC_PAPERNAMES = 16Private Const DC_PAPERS = 2Private Const DC_PAPERSIZE = 3Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "De viceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As Strin g, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long Private Type POINTSx As Longy As LongEnd TypePrivate Sub Form_Load()Dim i As LongWith fgd1.Clear.FormatString = "^纸张编号|^纸张名称|^纸张长度|^纸张宽度"For i = 0 To .Cols - 1.ColWidth(i) = 1700Next i.AllowUserResizing = flexResizeColumns.Left = 0.Width = Me.ScaleWidthEnd WithGetPaperInfoEnd SubPrivate Sub GetPaperInfo()Dim i As Long, ret As LongDim Length As Integer, Width As IntegerDim PaperNo() As Integer, PaperName() As String, PaperSize() As POINTS '支持最大打印纸:ret = DeviceCapabilities(打印机名称, "LPT1", DC_MAXEXTENT, ByVal 0&, ByVal 0&)Length = ret \ 65536Width = ret - Length * 65536'lblMaxLength.Caption = Length'lblMaxWidth.Caption = Width'支持最小打印纸:ret = DeviceCapabilities(打印机名称, "LPT1", DC_MINEXTENT, ByVal 0&, ByVal 0&)Length = ret \ 65536Width = ret - Length * 65536'支持纸张种类数ret = DeviceCapabilities(打印机名称, "LPT1", DC_PAPERS, ByVal 0&, ByVal 0&)'纸张编号ReDim PaperNo(1 To ret) As IntegerCall DeviceCapabilities(打印机名称, "LPT1", DC_PAPERS, PaperNo(1), ByVal 0&)'纸张名称Dim arrPageName() As ByteDim allNames As StringDim lStart As Long, lEnd As LongReDim PaperName(1 To ret) As StringReDim arrPageName(1 To ret * 64) As ByteCall DeviceCapabilities(打印机名称, "LPT1", DC_PAPERNAMES, arrPageName(1), ByVal 0&)allNames = StrConv(arrPageName, vbUnicode)'loop through the string and search for the names of the papersi = 1DolEnd = InStr(lStart + 1, allNames, Chr$(0), vbBinaryCompare)If (lEnd > 0) And (lEnd - lStart - 1 > 0) ThenPaperName(i) = Mid$(allNames, lStart + 1, lEnd - lStart - 1)i = i + 1End IflStart = lEndLoop Until lEnd = 0'纸张尺寸ReDim PaperSize(1 To ret) As POINTSCall DeviceCapabilities(bo1.Text, "LPT1", DC_PAPERSIZE, PaperSize( 1), ByVal 0&)'显示在表格中For i = 1 To retfgd1.AddItem PaperNo(i) & vbTab & PaperName(i) & vbTab & Paper Size(i).y & vbTab & PaperSize(i).xNext i'移除第一个空行fgd1.Row = 1fgd1.RemoveItem 1End SubPrivate Sub Form_Resize()With fgd1.Left = 0.Width = Me.ScaleWidth.Height = Me.ScaleHeight.Top = 0End WithEnd Sub(5)编写VB打印控制程序的几点心得摘要本文在总结作者实际开发经验的基础上,详细介绍了VB实现高分辨率打印方法的几点心得。
阐述了参数化绘图程序缩短打印程序开发时间的方法以及打印机缩放属性与窗体属性匹配使用的技巧,并总结了解决坐标定位、图形与其实际打印位置出现误差等问题的经验。
关键词 PrintForm 高分辨率打印参数化绘图缩放属性Some Experiences on VB Print ControlBai Yang, Wang PengComputer Science DepartmentUniversity of Information and EngineeringZhengzhou, ChinaAbstract: On the basis of our working experiences, we have given a detail description about VB print method of high resolution. We focus on how to shorten developing period with parameterized plot program, the match between the zoom attribute and the attribute of display window etc., which based on print program of Printer Object. In addition to this, we have introduced some experiences on dealing with position error that caused by the mismatch between font and graph on screen and that on printer.Keywords:PrintForm, High Resolution Print, parameterized plot ,zoom attribute1.简介Visual Basic(VB)给用户提供了可视化编程环境,因其简单易学、功能强大而得到了广泛的应用。