新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
VB中的几种打印方法
成都创新互联是专业的思礼网站建设公司,思礼接单;提供成都网站制作、成都做网站、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行思礼网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
1. 采用Visual Basic 提供的简单打印函数PrintForm 方法。应用程序窗体的PrintForm 方法时,Visual Basic 把窗体的位图送到当前打印机。该方法的优点在于它几乎不需要任何编程,但也有很大缺陷。最为突出的是当低分辨率图形在高分辨率打印机上打印时,其结果令人无法满意,会产生锯齿。下面代码将在打印机上打印窗体。
Private Sub Command1_Click() ' 用PrintForm 打印
Me.PrintForm ' 打印窗体的可见区域
End Sub
2. 用Printer 对象进行高分辨率输出。但要想产生复杂的打印输出,编程较为烦琐。Printer 对象代表系统缺省的打印机,Printer 对象支持许多由窗体和图形框所支持的属性和方法,三种对象都有画线和画方框。应用程序可用以下代码在Printer 对象上画出一平方英寸的方框。它离左上角二英寸。注意:打印机以twips 来测量距离。每英寸有1440 个twips。
Printer.Line(2 *1440,2 *1440) -Step(1440,1440), ,B
打印机、从窗体和图形框都有Circle、PaintPicture、Print、Pset、TextHeight、TextWidth 方法。使用这些方法,应用程序可以为打印机生成高分辨率输出。
打印文本直接用Print 方法,见下列代码:
Printer.Print "Hello,China ComputerWorld!" ' 打印字符串
Printer 对象还有一些窗体和图形框都没有方法:
NewPage 告诉打印机,程序对当前输出页的发送已经结束,Printer 对象应开始新的一页。
EndDoc 告诉VB,程序创建文档结束,VB 应将它发送到物理打印机上打印。
KillDoc 取消当前打印作业。应用程序应该终止由EndDoc 和KillDoc 所设定的每个打印作业。
Zoom 属性用于定义打印输出的缩放因子。
Copies 属性用于定义打印的副本数目。
3. 采用直接将数据传送打印机的方法进行打印输出。有两种方法将数据送往打印机。第一种是用Print #方法,就像将数据写入一个文件一样。另一种方法写端口,但不是送文本,而是送特定的PCL 语言,PCL 表示打印控制语言,它是一种特殊语言,用转义代码来控制打印机的具体动作。因为此方法太烦琐,本文不做太多介绍。
4. 如果你在编程时用到了RichTextBox 控制,那么你可以使用该控件的SelPrint 方法来打印,使用非常简单。下面一段代码即用RichTextBox 控件的SelPrint 方法来完成打印。
Private Sub Command3_Click() 'SelPrint 方法
CommonDialog1.Flags=cdlPDReturnDC +cdlPDNoPageNums
If RTF1.SelLength = 0 Then
'RTF1 为窗体的RichTextBox 控制
CommonDialog1.Flags = CommonDialog1.Flags
+cdlPDAllPages
Else
CommonDialog1.Flags = CommonDialog1.Flags +
cdlPDSelection
End If
CommonDialog1.CancelError = True
On Error Resume Next
CommonDialog1.ShowPrinter
If Err.Number = cdlCancel Then Exit Sub
If Err.Number 0 Then
Beep
MsgBox "Error printing file."
&vbCrLf +Err.Description, vbOKOnly +vbExclamation,
“Printing Error!"
Exit Sub
End If
Printer.Print ""
RTF1.SelPrint CommonDialog1.hDC
' 打印RTF1 控件的可见区域
End Sub
上面代码先进行打进设置,再进行打印。如果不需要设置,采用下面代码更为简单:
RTF1.SelPrint Printer.hDC
' 打印RTF1 控件的可见区域
5. 可以在VB 中调用Word 97 提供的OLE 自动化服务,利用Word 97 强大的打印功能来完成VB 打印,笔者认为这是最令人满意的方法。下面代码说明VB 如何与Word 集成。
Private Sub Command4_Click() ' 调用Word 打印
Dim objWord As Object
Const CLASSOBJECT = "Word.Application"
On Error GoTo objError
Set objWord = CreateObject(CLASSOBJECT)
objWord.Visible = True
objWord.Documents.Add
With objWord
.ActiveDocument.Paragraphs.Last.Range.Bold = False
.ActiveDocument.Paragraphs.Last.Range.Font.Size =20
.ActiveDocument.Paragraphs.Last.Range.Font.Name =
"黑体"
.ActiveDocument.Paragraphs.Last.Range.Font.ColorIndex==4
.ActiveDocument.Paragraphs.Last.Range.Text =
"我是计算机世界读者!"
End With
Clipboard.Clear
Clipboard.SetText
"通过剪切板向WORD 传送数据!"
objWord.Selection.Paste
objWord.PrintPreview = True ' 预览方式
'objWord.PrintOut' 执行打印
'objWord.Quit' 退出Word
Exit Sub
objError:
If Err 429 Then
MsgBox Str $(Err) &Error $
Set objWord = Nothing
' 不能创建Word 对象则退出
Exit Sub
Else
Resume Next
End If
End Sub
6. 用VC 编制DLL 模块完成打印。在VB 中调用该模块,用混合编程方法进行打印输出。因涉及VC 编程比较烦琐,这里不再讨论。
vb点虐 与vb相比在功能方法上有所改进
vb是基于面向对象编程,实际上不能算是一门面向对象编程的语言
而vb点虐 实现了真正面向对象。面向对象编程的所有特征都给于支持
如果你对面向对象编程原理有所了解再看看vb与vb点虐 的功能介绍就知道了
另外vb点虐 支持多线程
而Vb不支持多线程编程。只能够通过API来实现。去年准备用VB写多线程程序。只是测试了几天。简直能让人崩溃。出少许差错VB软件本身就产生错误。有时候在VBIDE环境中运行正常。编译运行也可能出错。。 不过也有人能用VB写出安全多线程程序。那只能说是高手啊。。我只有佩服!
两者在语法上是一样的,不过有些函数不同
我一直用VB,前段时间也想用用VB点虐 。。所以看了看教程才了解 的
参考一下吧。。
根据个人的经历谈谈个人感想
我一开始学的是VB,但学会后,也就是楼主你的样子,后来学C,觉得C太垃圾了,这可能和VB的简单形成对比,C语言学会后就再也没用,后来直接由VB升级到VB.NET,的确,如同楼主所说,.NET是比较简单,但是有个后遗症,是现在我都烦的,就是编译的软件必须要在有.NET的电脑上运行,XP是不带.NET的,而且,版本还的相对,如果用.NET4.0编的,在4.0以下版本电脑上运行很可能就出错,并且,如果你要打包的话也可以,就是把软件打包成安装包,然后附带.NET环境,但缺点就出来了,.NET3.5完整安装包235M,因为它包括了以下所有版本,还好.NET4.0只有50M左右,因为它不包括以下版本,但总之,.NET就是简单了编程,但复杂了使用,软件得打包,不像VB,编好后直接打开EXE就可以了。所以就麻烦了,举些例子,以前用VBA编OFFICE的宏,打开OFFICE就可以编,编好后就存为XLSM就可以了,现在用.NET就成了VSTO了,编好后,不和文档在一起,是分开的DLL,如果要运行,条件为,1,.NET环境,2,OFFICE,3,VSTO相比以前只需要OFFICE复杂了N倍,而且编辑时也需要VS(动不动就几G)才行,相比以前只要有OFFICE就可以区别也很大,同样,CAD的嵌入开发也是一样的。
所以总体来说,越底层的语言越底层的API越好用,越通用,越高级的越不通用,所以现在我开发软件我都烦了,要是一个小软件几百K~M,再附带个.NET就好几百兆,用的时候还得安装才能用,又不是什么大软件有必要这么做么,还有.NET不是万能的,有些地方也得用API,而且.NET其实也挺复杂,难的地方不比API简单,其实就感觉是封装好了的API而已。
至于数据库,的确.NET连接比较简单
至于学C?那就不用了,因为.NET的支持 C#,C++,VB,J#,只要会其中一种就可以了(而且你只要会其中一门,是能看懂另一门的,比如我虽然编辑C#可能要出错,但C#代码我是几乎全部能看懂的,网上查资料也能看懂其他语言的),大部分是学C的升级用C#.NET,VB的升级成VB.NET,你没必要把它当成另一中语言来学,语法是基本一样的。只是从一开是学C的比较多,就成了C#的比较多而已了,至于语言,我不想做语言攻击,其实都是有用的,就是看自己习惯不,比如我就不习惯C。
我也不想说VB好还是VB.NET好,其实是看你用途,我只是至今没发现什么网上的软件是.NET编辑的,一些软件比如CAD,OFFICE安装时安装了.NET,其实都不是它们是基于.NET编辑的,而是为了支持.NET的嵌入式开发,你所看到的软件,比如QQ,迅雷,你看他们带.NET了吗?要是.NET好,他们干嘛不用,答案是因为不方便,因为XP系统一般是没有.NET的,连WIN7内嵌的.NET都不支持最新的.NET,也就是你用什么版本编的就得安装相应版本,那也要求对方电脑也得跟着升级,而API是不用升级着走的~
所以,你要编的软件在其他电脑上用,VB+API吧,如果你要个人电脑上用,VB.NET吧,如果你编小软件vb+api吧,如果你要大型软件就VB.NET吧,所以,你自己选吧。
希望给你的意见能对你有好处,现在深夜11点了,我也改睡了,拜拜!~
祝你学习愉快!
对了,还有点,比如CAD2007不支持.NET3.5以上的编程,而且.NET编好的EXE或者DLL是可以用专门的软件打开看你源代码的,也就是反编译,这对于加密(可以看你的加密方法)就很麻烦了(据说采用什么办法可以解决)。