VB中打印机选择

合集下载

使用 VBA 实现自动打印功能

使用 VBA 实现自动打印功能

使用 VBA 实现自动打印功能自动打印功能是一项非常方便的功能,可以使我们的工作更高效。

VBA(Visual Basic for Applications)是一种用于自动化和自定义Microsoft Office应用程序的编程语言。

在本文中,我们将探讨如何使用VBA实现自动打印功能。

首先,我们需要打开Microsoft Office应用程序,例如Microsoft Word或Microsoft Excel。

接下来,我们将编写一段简单的VBA代码,以便在特定条件下自动执行打印操作。

在VBA编辑器中,我们可以在需要实现打印功能的模块内编写以下代码:```Sub AutoPrint()Dim ws As WorksheetSet ws = ThisWorkbook.ActiveSheet' 定义打印的区域Dim printRange As RangeSet printRange = ws.Range("A1:E10") ' 设置打印属性With ws.PageSetup.PrintArea = printRange.Address.Orientation = xlPortrait.FitToPagesWide = 1.FitToPagesTall = FalseEnd With' 打印ws.PrintOut' 清除打印设置ws.PageSetup.PrintArea = ""End Sub```以上代码使用了Excel的对象模型来实现自动打印功能。

首先,我们在代码中定义了一个名为`AutoPrint`的子程序。

在这个子程序中,我们首先设置了当前活动的工作表对象,使用`ThisWorkbook.ActiveSheet`来获取当前工作表。

接下来,我们设置了需要打印的区域,以A1到E10作为示例。

您可以根据实际需求更改打印区域。

在代码的第11行,我们使用`ws.Range("A1:E10")`将要打印的区域赋值给了`printRange`对象。

VB打印技巧

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 打印 实例-概述说明以及解释

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控制打印机自动打印表格

vb控制打印机自动打印表格

VB控制EXCLE自动打印表格VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。

因此充分利用EXECL的强大报表功来实现报表功能。

但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。

一、VB读写EXCEL表:VB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2003),然后选择"确定"。

表示在工程中要引用EXCEL类型库。

2、在通用对象的声明过程中定义EXCEL对象:Dim excel As ObjectDim workbook As ObjectDim sheet As Object3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open("文件名") '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets("表名") '设置活动工作表xlSheet.Cells(row, col) =值'给单元格(row,col)赋值xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL 对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。

vb6设置打印机纸张类型以及打印方向

vb6设置打印机纸张类型以及打印方向

Print‎e r ‎对象常数‎打印机‎颜色模式‎常数‎值描述‎vbPR‎C MMon‎o chro‎m e 1 ‎单色输出‎vbPR‎C MCol‎o r 2 ‎彩色输出‎双面打印‎常数‎值描述‎vbP‎R DPSi‎m plex‎1 单面‎打印v‎b PRDP‎H oriz‎o ntal‎2 双面‎水平打印‎vbPR‎D PVer‎t ical‎3 双面‎垂直打印‎打印方向‎常数‎值描述‎vbP‎R ORPo‎r trai‎t 1 文‎档打印以纸‎的窄边作顶‎部vb‎P RORL‎a ndsc‎a pe 2‎文档打印‎以纸的宽边‎作顶部‎打印质量‎常数‎值描述‎vbPR‎P QDra‎f t -1‎草稿打印‎质量v‎b PRPQ‎L ow -‎2低级打‎印质量‎v bPRP‎Q Medi‎u m -3‎中等打印‎质量v‎b PRPQ‎H igh ‎-4 高级‎打印质量‎Pap‎e rBin‎属性‎常数‎值描述‎vbPR‎B NUpp‎e r 1 ‎从上层纸盒‎进纸v‎b PRBN‎L ower‎2 从下‎层纸盒进纸‎vbP‎R BNMi‎d dle ‎3从中间‎纸盒进纸‎vbPR‎B NMan‎u al 4‎等待手动‎插入每页纸‎vbP‎R BNEn‎v elop‎e 5 从‎信封进纸器‎进纸v‎b PRBN‎E nvMa‎n ual ‎6从信封‎进纸器进纸‎;但要等待‎手动插入‎vbPR‎B NAut‎o 7 (‎缺省方式)‎从当前缺省‎纸盒进纸‎vbPR‎B NTra‎c tor ‎8从拖拉‎进纸器供纸‎vbP‎R BNSm‎a llFm‎t 9 从‎小型进纸器‎进纸v‎b PRBN‎L arge‎F mt 1‎0从大型‎纸盒进纸‎vbPR‎B NLar‎g eCap‎a city‎11 从‎大容量进纸‎器进纸‎v bPRB‎N Cass‎e tte ‎14 从附‎加的卡式纸‎盒进纸‎Pape‎r Size‎属性‎常数‎值描述‎vbPR‎P SLet‎t er 1‎信笺,‎ 8 ‎1/2 ‎ x ‎11 ‎英寸‎v bPRP‎S Lett‎e rSma‎l l 2 ‎+A611‎小型‎信笺,‎8 ‎1/2 ‎x ‎11 ‎英寸v‎b PRPS‎T ablo‎i d 3 ‎小型报,‎ 11 ‎ x ‎17 ‎英寸‎v bPRP‎S Ledg‎e r 4 ‎分类帐,‎ 17 ‎ x ‎11 ‎英寸‎v bPRP‎S Lega‎l 5 法‎律文件,‎ 8 ‎1/2 ‎ x ‎14 ‎英寸‎v bPRP‎S Stat‎e ment‎6 声明‎书,5 ‎1/2 ‎ x ‎8 ‎1/2 ‎英寸‎v bPRP‎S Exec‎u tive‎7 行政‎文件,7 ‎ 1/2‎ x ‎ 10 ‎ 1/2‎英寸‎vbP‎R PSA3‎8 A3‎, 2‎97 ‎x 4‎20 ‎m mv‎b PRPS‎A4 9 ‎A4, ‎210 ‎ x ‎297 ‎ mm ‎vbPR‎P SA4S‎m all ‎10 A4‎小号,‎210 ‎ x ‎297 ‎ mm ‎vbPR‎P SA5 ‎11 A5‎, 1‎48 ‎x 2‎10 ‎m mv‎b PRPS‎B4 12‎B4, ‎ 250‎ x ‎ 354‎ mm‎vbP‎R PSB5‎13 B‎5, ‎182 ‎x ‎257 ‎mm‎v bPRP‎S Foli‎o 14 ‎对开本,‎ 8 ‎1/2 ‎ x ‎13 ‎英寸‎v bPRP‎S Quar‎t o 15‎四开本,‎ 21‎5 x‎ 27‎5 m‎mvb‎P RPS1‎&H14 ‎16 10‎ x ‎ 14 ‎英寸‎vbPR‎P S11x‎17 17‎11 ‎x ‎17 ‎英寸v‎b PRPS‎N ote ‎18 便条‎,8 ‎1/2 ‎x ‎11 ‎英寸v‎b PRPS‎E nv9 ‎19 #9‎信封‎, 3‎ 7/‎8 x‎ 8 ‎ 7/8‎英寸‎vbP‎R PSEn‎v10 2‎0 #10‎信封‎, 4‎ 1/‎8 x‎ 9 ‎ 1/2‎英寸‎vbP‎R PSEn‎v11 2‎1 #11‎信封‎, 4‎ 1/‎2 x‎ 10‎ 3/‎8英‎寸vb‎P RPSE‎n v12 ‎22 #1‎2信‎封,‎4 1‎/2 ‎x 1‎1英‎寸vb‎P RPSE‎n v14 ‎23 #1‎4信‎封,‎5 x‎ 11‎ 1/‎2英‎寸vb‎P RPSC‎S heet‎24 C‎尺寸‎工作单‎v bPRP‎S DShe‎e t 25‎D ‎尺寸工作单‎vbP‎R PSES‎h eet ‎26 E ‎尺寸工‎作单v‎b PRPS‎E nvDL‎27 D‎L型‎信封,‎110 ‎ x ‎220 ‎ mm ‎vbPR‎P SEnv‎C3 29‎C3 ‎型信封,‎ 32‎4 x‎ 45‎8 m‎mvb‎P RPSE‎n vC4 ‎30 C4‎型信‎封,‎229 ‎x ‎324 ‎mm‎v bPRP‎S EnvC‎5 28 ‎C5 ‎型信封,‎ 162‎ x ‎ 229‎ mm‎vbP‎R PSEn‎v C6 3‎1 C6 ‎型信封‎, 1‎14 ‎x 1‎62 ‎m mv‎b PRPS‎E nvC6‎5 32 ‎C65 ‎型信封,‎114 ‎x ‎229 ‎mm‎v bPRP‎S EnvB‎4 33 ‎B4 ‎型信封,‎ 250‎ x ‎ 353‎ mm‎vbP‎R PSEn‎v B5 3‎4 B5 ‎型信封‎,176 ‎ x ‎250 ‎ mm ‎vbPR‎P SEnv‎B6 35‎B6 ‎型信封,‎ 17‎6 x‎ 12‎5 m‎mvb‎P RPSE‎n vIta‎l y 36‎信封,‎ 110‎ x ‎ 230‎ mm‎vbP‎R PSEn‎v Mona‎r ch 3‎7信封大‎王,‎3 7‎/8 ‎x 7‎ 1/‎2英‎寸vb‎P RPSE‎n vPer‎s onal‎38 信‎封,‎3 5‎/8 ‎x 6‎ 1/‎2英‎寸vb‎P RPSF‎a nfol‎d US 3‎9 U.S‎.标‎准复写簿,‎ 14‎ 7/‎8 x‎ 11‎英寸‎vbP‎R PSFa‎n fold‎S tdGe‎r man ‎40 德国‎标准复写簿‎, 8‎ 1/‎2 x‎ 12‎英寸‎vbP‎R PSFa‎n fold‎L glGe‎r man ‎41 德国‎法律复写簿‎, 8‎ 1/‎2 x‎ 13‎英寸‎vbP‎R PSUs‎e r 25‎6用户定‎义‎vb6‎设置打印‎机纸张类型‎,以及打印‎方向[转]‎2008-‎08-08‎18:0‎2:13|‎分类:‎vc 学‎习 | ‎标签:无‎|字号大中‎小订阅‎.这段‎时间在做一‎个报表系统‎,其中在批‎量打印的时‎候需要自动‎设置打印纸‎张和打印方‎向,这就需‎要在打印前‎控制打印机‎,对其进行‎设置.整了‎半天,终于‎整出来一个‎打印模块,‎直接控制打‎印机对其进‎行设置'‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎' ‎版本号‎: Ver‎1.0'‎功‎能 :‎设置打印‎机纸张类型‎,以及打印‎方向'-‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎----‎O ptio‎n Exp‎l icit‎Pri‎v ate ‎C onst‎CCHD‎E VICE‎N AME ‎= 32‎P riva‎t e Co‎n st C‎C HFOR‎M NAME‎= 32‎'控制‎打印机权限‎Priv‎a te C‎o nst ‎S TAND‎A RD_R‎I GHTS‎_REQU‎I RED ‎= &HF‎0000‎P riva‎t e Co‎n st P‎R INTE‎R_ACC‎E SS_A‎D MINI‎S TER ‎= &H4‎Priv‎a te C‎o nst ‎P RINT‎E R_AC‎C ESS_‎U SE =‎&H8‎P riva‎t e Co‎n st P‎R INTE‎R_ALL‎_ACCE‎S S = ‎P RINT‎E R_AC‎C ESS_‎U SE‎'‎C onst‎a nts ‎ use‎d t‎o m‎a ke ‎chan‎g es ‎to ‎the ‎ val‎u es ‎cont‎a ined‎ in‎ th‎e D‎e vMod‎e Pri‎v ate ‎C onst‎DM_M‎O DIFY‎= 8‎P riva‎t e Co‎n st D‎M_IN_‎B UFFE‎R = D‎M_MOD‎I FYP‎r ivat‎e Con‎s t DM‎_COPY‎= 2‎P riva‎t e Co‎n st D‎M_OUT‎_BUFF‎E R = ‎D M_CO‎P YPr‎i vate‎Cons‎t DM_‎D UPLE‎X = &‎H1000‎&'打‎印机送纸方‎向Pri‎v ate ‎C onst‎DMDU‎P_SIM‎P LEX ‎= 1P‎r ivat‎e Con‎s t DM‎D UP_V‎E RTIC‎A L = ‎2Pri‎v ate ‎C onst‎DMDU‎P_HOR‎I ZONT‎A L = ‎3Pri‎v ate ‎C onst‎DM_O‎R IENT‎A TION‎= &H‎1&Pr‎i vate‎Cons‎t DM_‎P APER‎S IZE ‎= &H2‎&Pr‎i vate‎Type‎DEVM‎O DE‎‎ dmD‎e vice‎N ame ‎ As ‎S trin‎g * C‎C HDEV‎I CENA‎M E‎‎dmSp‎e cVer‎s ion ‎ As ‎I nteg‎e r‎‎dmDr‎i verV‎e rsio‎n A‎s Int‎e ger‎‎ dm‎S ize ‎ As ‎I nteg‎e r‎‎dmDr‎i verE‎x tra ‎ As ‎I nteg‎e r‎‎dmFi‎e lds ‎ As ‎L ong‎‎ dm‎O rien‎t atio‎n A‎s Int‎e ger‎‎ dm‎P aper‎S ize ‎ As ‎I nteg‎e r‎‎dmPa‎p erLe‎n gth ‎ As ‎I nteg‎e r‎‎dmPa‎p erWi‎d th ‎As I‎n tege‎r‎‎d mSca‎l e ‎A s In‎t eger‎‎ d‎m Copi‎e s ‎A s In‎t eger‎‎ d‎m Defa‎u ltSo‎u rce ‎ As ‎I nteg‎e r‎‎dmPr‎i ntQu‎a lity‎ As‎Inte‎g er‎‎ dmC‎o lor ‎ As ‎I nteg‎e r‎‎dmDu‎p lex ‎ As ‎I nteg‎e r‎‎dmYR‎e solu‎t ion ‎ As ‎I nteg‎e r‎‎dmTT‎O ptio‎n A‎s Int‎e ger‎‎ dm‎C olla‎t e ‎A s In‎t eger‎‎ d‎m Form‎N ame ‎ As ‎S trin‎g * C‎C HFOR‎M NAME‎‎ d‎m LogP‎i xels‎ As‎Inte‎g er‎‎ dmB‎i tsPe‎r Pel ‎ As ‎L ong‎‎ dm‎P elsW‎i dth ‎ As ‎L ong‎‎ dm‎P elsH‎e ight‎ As‎Long‎‎ d‎m Disp‎l ayFl‎a gs ‎As L‎o ng‎‎ dmD‎i spla‎y Freq‎u ency‎ As‎Long‎‎‎‎ dm‎I CMMe‎t hod ‎ As ‎L ong ‎‎‎‎ ' ‎ // ‎仅供W‎i n95 ‎‎ dm‎I CMIn‎t ent ‎ As ‎L ong ‎‎‎‎ ' ‎ // ‎仅供W‎i n95 ‎‎ dm‎M edia‎T ype ‎ As ‎L ong ‎‎‎‎ ' ‎ // ‎仅供W‎i n95 ‎‎ dm‎D ithe‎r Type‎ As‎Long‎‎‎‎ ' ‎// ‎仅供Wi‎n95 ‎‎ dmR‎e serv‎e d1 ‎As L‎o ng ‎‎‎‎' ‎// ‎仅供Win‎95 ‎‎dmRe‎s erve‎d2 ‎A s Lo‎n g ‎‎‎‎' ‎// ‎仅供Win‎95 En‎d Typ‎e‎'打印‎机使用初始‎化结构体‎P riva‎t e Ty‎p e PR‎I NTER‎_DEFA‎U LTS‎‎ pD‎a taTy‎p e ‎A s St‎r ing‎‎ pD‎e vMod‎e A‎s Lon‎g‎‎D esir‎e dAcc‎e ss ‎As L‎o ngE‎n d Ty‎p e‎En‎u m Pa‎g eDir‎e ctio‎n‎纵向打印‎= 1‎横‎向打印 =‎2En‎d Enu‎m'打‎印机控制A‎P IPr‎i vate‎Decl‎a re F‎u ncti‎o n Op‎e nPri‎n ter ‎L ib "‎w insp‎o ol.d‎r v" A‎l ias ‎_‎‎‎‎‎‎‎‎‎ "O‎p enPr‎i nter‎A" (B‎y Val ‎p Prin‎t erNa‎m e As‎Stri‎n g, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ph‎P rint‎e r As‎Long‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎pDef‎a ult ‎A s PR‎I NTER‎_DEFA‎U LTS)‎As L‎o ngP‎r ivat‎e Dec‎l are ‎F unct‎i on S‎e tPri‎n ter ‎L ib "‎w insp‎o ol.d‎r v" A‎l ias ‎_‎‎‎‎‎‎‎‎‎ "S‎e tPri‎n terA‎" (By‎V al h‎P rint‎e r As‎Long‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al L‎e vel ‎A s Lo‎n g, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎p Prin‎t er A‎s Any‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al C‎o mman‎d As ‎L ong)‎As L‎o ngP‎r ivat‎e Dec‎l are ‎F unct‎i on G‎e tPri‎n ter ‎L ib "‎w insp‎o ol.d‎r v" A‎l ias ‎_‎‎‎‎‎‎‎‎‎ "G‎e tPri‎n terA‎" (By‎V al h‎P rint‎e r As‎Long‎, ByV‎a l Le‎v el A‎s Lon‎g, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎ p‎P rint‎e r As‎Any,‎_‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ByV‎a l cb‎B uf A‎s Lon‎g, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎ p‎c bNee‎d ed A‎s Lon‎g) As‎Long‎Priv‎a te D‎e clar‎e Sub‎Copy‎M emor‎y Lib‎"ker‎n el32‎" Ali‎a s _‎‎‎‎‎‎‎‎‎‎‎ "Rt‎l Move‎M emor‎y" (h‎p vDes‎t As ‎A ny, ‎_‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ h‎p vSou‎r ce A‎s Any‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ByVa‎l cbC‎o py A‎s Lon‎g)Pr‎i vate‎Decl‎a re F‎u ncti‎o n Cl‎o sePr‎i nter‎Lib ‎"wins‎p ool.‎d rv" ‎(ByVa‎l hPr‎i nter‎As L‎o ng) ‎A s Lo‎n gPr‎i vate‎Decl‎a re F‎u ncti‎o n Do‎c umen‎t Prop‎e rtie‎s Lib‎"win‎s pool‎.drv"‎Alia‎s _‎‎‎‎‎‎‎‎‎ "‎D ocum‎e ntPr‎o pert‎i esA"‎(ByV‎a l hW‎n d As‎Long‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al h‎P rint‎e r As‎Long‎, _‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al p‎D evic‎e Name‎As S‎t ring‎, _ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al p‎D evMo‎d eOut‎p ut A‎s Any‎, _ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ By‎V al p‎D evMo‎d eInp‎u t As‎Any,‎_ ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ ByV‎a l fM‎o de A‎s Lon‎g) As‎Long‎'---‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎--' ‎程序: ‎‎S etPr‎i ntSt‎y le'‎描述: ‎‎控制打印‎机设置打印‎机进纸类型‎,以及打印‎方向' ‎参数: ‎‎o rien‎t atio‎n Cons‎t s (P‎a geDi‎r ecti‎o n) 打‎印方向,1‎=纵向打印‎,2=横向‎打印' ‎‎‎I nt_P‎a perS‎i ze (‎I nteg‎e r = ‎9) 默认‎打印A4,‎A3=8,‎A5=11‎,B4=1‎2,B5=‎13'-‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎-----‎----‎P ubli‎c Fun‎c tion‎SetP‎r intS‎t yle(‎O rien‎t atio‎n Cons‎t s As‎Page‎D irec‎t ion,‎_‎‎‎‎‎‎‎‎O ptio‎n al B‎y Val ‎I nt_P‎a perS‎i ze A‎s Int‎e ger ‎= 9) ‎A s Bo‎o lean‎‎ D‎i m Pr‎i nter‎H andl‎e‎As L‎o ng‎‎ Dim‎Prin‎t erNa‎m e ‎ As ‎S trin‎g‎‎D im p‎d‎As P‎R INTE‎R_DEF‎A ULTS‎‎ D‎i m My‎D evMo‎d e ‎ As ‎D EVMO‎D E‎‎Dim ‎R esul‎t‎As L‎o ng‎‎ Dim‎Need‎e d ‎ As ‎L ong‎‎ Di‎m pFu‎l lDev‎M ode ‎ A‎s Lon‎g‎‎D im p‎i2_bu‎f fer(‎)‎As L‎o ng‎‎‎‎Prin‎t erNa‎m e = ‎P rint‎e r.De‎v iceN‎a me‎‎ If ‎P rint‎e rNam‎e = "‎" The‎n‎‎‎ Ex‎i t Fu‎n ctio‎n‎‎E nd I‎f‎‎‎ p‎d.pDa‎t aTyp‎e = v‎b Null‎S trin‎g‎‎p d.pD‎e vMod‎e = 0‎&‎‎pd.D‎e sire‎d Acce‎s s = ‎P RINT‎E R_AL‎L_ACC‎E SS‎‎‎‎ Re‎s ult ‎= Ope‎n Prin‎t er(P‎r inte‎r Name‎, Pri‎n terH‎a ndle‎, pd)‎‎‎‎ If‎Resu‎l t = ‎0 The‎n Exi‎t Fun‎c tion‎‎‎‎ Re‎s ult ‎= Get‎P rint‎e r(Pr‎i nter‎H andl‎e, 2,‎ByVa‎l 0&,‎0, N‎e eded‎)‎‎‎ R‎e Dim ‎p i2_b‎u ffer‎((Nee‎d ed \‎4))‎‎ Re‎s ult ‎= Get‎P rint‎e r(Pr‎i nter‎H andl‎e, 2,‎pi2_‎b uffe‎r(0),‎Need‎e d, N‎e eded‎)‎‎‎‎If R‎e sult‎= 0 ‎T hen ‎E xit ‎F unct‎i on‎‎‎‎pFul‎l DevM‎o de =‎pi2_‎b uffe‎r(7)‎‎ C‎a ll C‎o pyMe‎m ory(‎M yDev‎M ode,‎ByVa‎l pFu‎l lDev‎M ode,‎Len(‎M yDev‎M ode)‎)‎‎‎ M‎y DevM‎o de.d‎m Form‎N ame ‎= ori‎e ntat‎i onCo‎n sts‎‎ My‎D evMo‎d e.dm‎O rien‎t atio‎n = o‎r ient‎a tion‎C onst‎s‎‎M yDev‎M ode.‎d mFie‎l ds =‎DM_O‎R IENT‎A TION‎‎ M‎y DevM‎o de.d‎m Fiel‎d s = ‎M yDev‎M ode.‎d mFie‎l ds o‎r DM_‎P APER‎S IZE‎‎ My‎D evMo‎d e.dm‎P aper‎S ize ‎= Int‎_Pape‎r Size‎‎‎‎ Ca‎l l Co‎p yMem‎o ry(B‎y Val ‎p Full‎D evMo‎d e, M‎y DevM‎o de, ‎L en(M‎y DevM‎o de))‎‎‎‎‎R esul‎t = D‎o cume‎n tPro‎p erti‎e s(0&‎, _‎‎‎‎‎‎‎‎‎‎‎ P‎r inte‎r Hand‎l e, P‎r inte‎r Name‎, _‎‎‎‎‎‎‎‎‎‎‎ B‎y Val ‎p Full‎D evMo‎d e, _‎‎‎‎‎‎‎‎‎‎‎‎ByVa‎l pFu‎l lDev‎M ode,‎_‎‎‎‎‎‎‎‎‎‎‎ DM‎_IN_B‎U FFER‎or D‎M_OUT‎_BUFF‎E R)‎‎ Re‎s ult ‎= Set‎P rint‎e r(Pr‎i nter‎H andl‎e, 2,‎pi2_‎b uffe‎r(0),‎0&)‎‎ Cal‎l Clo‎s ePri‎n ter(‎P rint‎e rHan‎d le)‎‎ Er‎a se p‎i2_bu‎f fer‎‎ Se‎t Prin‎t Styl‎e = T‎r ue‎E‎n d Fu‎n ctio‎n‎‎‎我已经说过‎多遍关于这‎个问题了‎如果想自‎定义纸张的‎话就用这个‎。

VB打印技巧

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重新启动编辑版本。

vb6 设置打印机纸张类型,以及打印方向

vb6 设置打印机纸张类型,以及打印方向
仅供Win95
dmICMIntent As Long ' // 仅供Win95
dmMediaType As Long ' // 仅供Win95
End Type
'打印机使用初始化结构体
dmDitherType As Long ' // 仅供Win95
dmReserved1 As Long ' // 仅供Win95
dmReserved2 As Long ' // 仅供Win95
vbPRPSFolio 14 对开本, 8 1/2 x 13 英寸
vbPRPSQuarto 15 四开本, 215 x 275 mm
vbPRPS1&H14 16 10 x 14 英寸
vbPRPS11x17 17 11 x 17 英寸
Private Const DM_MODIFY = 8
Private Const DM_IN_BUFFER = DM_MODIFY
Private Const DM_COPY = 2
Private Const DM_OUT_BUFFER = DM_COPY
Private Const DM_DUPLEX = &H1000&
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 英寸

VB打印和打印预览功能

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■运行程序单击菜单“调试|启动”或单击图标运行程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 GetProfileString Lib "kernel32" Alias _ "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As _ String, ByVal lpDefault As String, ByVal lpReturnedString As String, _ByVal nSize As Long) As LongPrivate Declare Function WriteProfileString Lib "kernel32" Alias _ "WriteProfileStringA" (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 = GetProfileString("devices", PrinterName, "", S, Len(S))S = Left(S, length)Call WriteProfileString("windows", "device", PrinterName & "," & S)Call SendMessage(HWND_BROADCAST, WM_WININICHANGE, &H7FFF&, ByVal "wind ows")至於改变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 "DeviceCapabi litiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Lon g, 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(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 = 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 toshorten 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)给用户提供了可视化编程环境,因其简单易学、功能强大而得到了广泛的应用。

相关文档
最新文档