用VB实现多文档打印VB

时间:2023-02-13 07:28:54 其他范文 收藏本文 下载本文

用VB实现多文档打印VB(推荐6篇)由网友“闪光少女张益德”投稿提供,以下是小编为大家准备的用VB实现多文档打印VB,希望对大家有帮助。

用VB实现多文档打印VB

篇1:用VB实现多文档打印VB

用 VB 实现多文档打印 作者: 盛放 通常,一般情况下,我们打印文档都是直接从应用程序中打印,例如WORD,这个方法对于单个文件打印比较方便,但是对于文秘等经常需要打印大批量文件的工作人员,如果仍然用WORD一个一个进行打印就比较麻烦了, 应我公司文管

用VB实现多文档打印

作者: 盛放

通常,一般情况下,我们打印文档都是直接从应用程序中打印,例如WORD,这个方法对于单个文件打印比较方便,但是对于文秘等经常需要打印大批量文件的工作人员,如果仍然用WORD一个一个进行打印就比较麻烦了。

应我公司文管中心的要求,我制作了一个多文档打印程序,方便了文秘人员,现介绍如下:

运行VB,新建一个应用程序工程,在Form中添加一个DriveListBox 控件、DirListBox 控件和FileListBox 控件,分别取名为:Drive1、Dir1和File1。设置File1的Pattern 属性为*.doc,设置FileListBox 控件中显示的文件名为DOC文档。

在Form_Load事件中添加一行代码:Drive1.Drive = “c:”,用来设置运行时所选择的驱动器。

在Drive1_Change()事件中添加一行代码:Dir1.Path = Drive1.Drive,这样当驱动器改变时,使目录路径随之改变。

同样在Dir1_Change()事件中添加一行代码:File1.Path = Dir1.Path,当目录改变时,使文件列表同时改变。

因为一般来说,文档都会保存在统一的目录下,所以没有使用CommonDialog 控件进行文件名选择,使操作更为简单方便。

在Form中添加一个CommandButton 控件取名为Print,用来进行打印操作。

在Command1_Click()中添加如下代码:

Dim i As Integer

Dim strfile As String

Dim word As Object

Set word = CreateObject(“word.Basic”)

word.appshow

For i = 0 To File1.ListCount - 1

If Right(Dir1.Path, 1) “” Then

strfile = Dir1.Path + “” + File1.List(i)

Else

strfile = Dir1.Path + File1.List(i)

End If

word.fileopen strfile

word.fileprint

word.fileclose

Next

word.appclose

Set word = Nothing

代码说明:

定义一个对象变量word

使用CreateObject创建一个WORD对象并赋值给word

以FileListBox 控件的列表部分项目的个数作为最大数进行循环打印

判断目录名的最后一个字母是否为“”,如果不是,则添加“”进行修正

通过目录名和文件名获得完整的文件名

使用word对象的fileopen方法打开文件

使用word对象的fileprint方法进行文件打印

使用word对象的fileclose方法关闭文件

最后调用word对象的appclose方法关闭word程序,以及释放对象资源Set word = Nothing,

这样,我们就很简单的实现了多文档的打印,希望对文秘人员有所帮助。

原文转自:www.ltesting.net

篇2:用VB实现彩蝶飞舞VB

用 VB 实现彩蝶飞舞 -------------------------------------------------------------------------------- VB已从1.0版本发展到了6.0版本,其功能越来越完备、强大,不仅提供了轻松有趣的编程环境,而且控件技术的使用更是锦上添花,因此,在全世界

用VB实现彩蝶飞舞

--------------------------------------------------------------------------------

VB已从1.0版本发展到了6.0版本,其功能越来越完备、强大,不仅提供了轻松有趣的编程环境,而且控件技术的使用更是锦上添花。因此,在全世界范围内特别是在我国VB应用非常广泛。本文通过两幅蝴蝶图片的动画设计,来说明在VB5.0中通过使用控件和添加少量代码就能实现复杂的功能。

?界面的设计

?在窗体Form1上,放置三个图像框控件(Image1、Image2、Image3)、两个定时器控件(Ti mer1、Ti mer2)和一个命令按钮(Command1)。其中图像框Image1及Image2用来存储两幅图片,图像框Image3用来交替显示两幅图片;定时器Ti mer1用来控制两幅图片显示间隔时间,定时器Ti mer2用来控制图片框Im―age3向右移动间隔时间;命令按钮Com―mand1用来控制动画的开始。各控件属性设置如表一。?两幅蝴蝶图片文件Bfly1.bmp 和Bfly2.bmp可在VB\Samples\Pguide\VCR 子目录下找到,可将其复制到VB目录下。窗体界面布置如图一。

?为各控件添加代码?

1、双击Ti mer1后,在Pri―

vate Sub Ti mer1_Ti mer和End

Sub 两行间添加如下代码,以实现两幅图片交替显示:?

Static flag?

Ifflag =0Then?

Image3.Picture =Image1.Picture?

flag =1?

Else?Image3.Picture =Image2.Picture?

flag =0?

End If? 2、双击Ti mer2后,在Private Sub

Ti mer2_Ti mer()和End Sub 两行间添加如下代码,

实现图片由左向右移动:?

If Image3.Left >Me .Scale Width Then Im―

age3.Left =Me .Left -1500?

Image3.Move Image3.Left +100?

3、双击Command1控件后,在Private Sub

Command1_Click()和End Sub 两行间添加如下代

码,先将原图片隐藏,然后启动定时器:?

Image1.Visible =False?

Image2.Visible =False?

Ti mer1.Enabled =True?

Ti mer2.Enabled =True?

(华北矿业高等专科学校席振元101601)

原文转自:www.ltesting.net

篇3:VB实现抽象类

VB是可以用OO的方式来开发应用程序的,因为VB支持Com并且提供类模块实现了封装。同时也提供了接口的支持。通过Implements就可以实现接口。因此也就实现了继承。如果通过组合就可以达到继承的效果。当然者应该算做Adapter模式了。当然可以通过VB实现大多数面向对象的设计模式。并且也可以通过UML进行建模。因为VB支持引用传递消息。同时大多数OO特性也可以模拟实现。www.dnzg.cn

这里我介绍一种抽象类的实现其实只是一个引例。方法很简单。就是通过接口定制契约。通过Com不可创建对象实现抽象类的不可创建性。通过Adapter模式模拟继承实现。

例子如下:

'接口部分

Public Function AbstructFun() As String

End Function

'不可创建对象(用来实现抽象方法)把Instancing设置为 publicNoCreatable

Implements ImyInterFace

Public Function ImyInterFace_AbstructFun() As String

ImyInterFace_AbstructFun = “我起床”

End Function

'实现部分

Implements ImyInterFace

Public Function ImyInterFace_AbstructFun() As String

Dim ac As New AbstructClass

ImyInterFace_AbstructFun = ac.ImyInterFace_AbstructFun & “我吃早饭”

End Function

篇4:用printer对象打印表格VB

用printer对象打印表格 用 msf lexgrid控件显示的表格,要将它打印出来,最简单的方法是用printform方法,然而这只适合于数据正好能被屏幕显示的,即数据量少的,而且这种打印效果很差,而用printer对象进行打印编程,虽然麻烦点,但效果却是相当不错的,你

用printer对象打印表格

用msflexgrid控件显示的表格,要将它打印出来,最简单的方法是用printform方法,然而这只适合于数据正好能被屏幕显示的,即数据量少的,而且这种打印效果很差。而用printer对象进行打印编程,虽然麻烦点,但效果却是相当不错的,你可以自定义打印格式,打印页数,表格的粗细,字体大小等。实际上用printer对象进行打印编程是比较简单的。

下面我就用一实例来说明:

打印的内容是一张数据表,这里就只有两列数据,包括标题,副标题。(用A4纸打印)

假设数据处在C_DataArray,和R_DataArray()中C_Name与R_Name分别为两数据项的字段名

Public Sub Printtable()

注释:初始化

Dim printer1 as Printer

Dim pageheader

Dim pagefooter

Dim pageleft

Dim pageright

Dim usewidth

Dim useheight

Dim i, j, k As Integer

Dim word As String

Dim startx

Dim starty

Dim startyline             ‘ 用来纪录打印竖线的起点

Dim endyline              ’ 用来纪录打印竖线的末点

设置页面参数

pageheader = 25

pagefooter = 25

pageleft = 20

pageright = 20

With printer1

.PaperSize = 9

.ScaleMode = 6

.FontBold = True

.ScaleLeft = -20

.ScaleTop = -25

.ScaleWidth = 210                                        注释:设置为A4纸

.ScaleHeight = 297

usewidth = .ScaleWidth - 40

useheight = .ScaleHeight - 50

.CurrentX = 0

.CurrentY = 0

.DrawWidth = 5

End With

注释:打印标题

With printer1

.FontSize = 20

.CurrentX = (usewidth - .TextWidth(DataTitle)) / 2

.CurrentY = pageheader + .ScaleTop

End With

printer1.Print DataTitle

注释:打印副标题

printer1.FontSize = 15

word = DataTitle2

printer1.CurrentX = usewidth - printer1.TextWidth(word)

printer1.Print word

注释:打印第一条线  Line方法不能用在with ....end with里

printer1.CurrentX = pageleft + printer1.ScaleLeft

startyline = printer1.CurrentY

注释:线宽

printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)

printer1.FontSize = 10

注释:printer1.PrintvbLf

printer1.CurrentY = printer1.CurrentY + 1

注释:打印第一个字段名

starty = printer1.CurrentY

printer1.CurrentX = ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(C_Name)) / 2

printer1.Print C_Name

注释:打印第二个字段名

printer1.CurrentX = usewidth / 2 + ((usewidth / 2 - printer1.TextWidth(R_Name)) / 2)

printer1.CurrentY = starty

printer1.Print R_Name

printer1.CurrentY = printer1.CurrentY + 1

注释:打印数据和横线,rownum为数据行数

For i = 1 To rownum

注释:判断是否该页已打满

If printer1.CurrentY >= useheight Then

注释:打印横线

printer1.CurrentX = printer1.ScaleLeft + pageleft

printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)

printer1.CurrentY = printer1.CurrentY + 1

注释:打印三条竖线

endyline = printer1.CurrentY

printer1.Line (0, startyline)-(0, endyline)

printer1.Line (usewidth / 2, startyline)-(usewidth / 2, endyline)

printer1.Line (usewidth, startyline)-(usewidth, endyline)

注释:打印页号

With printer1

.CurrentX = (.ScaleWidth - .TextWidth(.Page)) / 2 - pageleft

.CurrentY = useheight + 3

End With

printer1.Print printer1.Page

printer1.NewPage

With printer1

.CurrentX = pageleft + .ScaleLeft

.CurrentY = pageheader + .ScaleTop

startyline = .CurrentY

End With

End If

注释:打印一行数据

printer1.CurrentX = ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(C_DataArray(i))) / 2

starty = printer1.CurrentY

printer1.Print C_DataArray(i)

printer1.CurrentX = (printer1.ScaleWidth - 40) / 2 + ((printer1.ScaleWidth - 40) / 2 - printer1.TextWidth(R_DataArray(i) )) / 2

printer1.CurrentY = starty

printer1.Print R_DataArray(i)

printer1.CurrentY = printer1.CurrentY + 1

Next i

注释:打印最后一条横线

printer1.CurrentX = printer1.ScaleLeft + pageleft

printer1.Line -((printer1.ScaleLeft + printer1.ScaleWidth - pageleft), printer1.CurrentY)

endyline = printer1.CurrentY

注释:打印三条竖线

printer1.Line (0, startyline)-(0, endyline)

printer1.Line (usewidth / 2, startyline)-(usewidth / 2, endyline)

printer1.Line (usewidth, startyline)-(usewidth, endyline)

注释:打印页号

With printer1

.CurrentX = (.ScaleWidth - .TextWidth(.Page)) / 2 - pageleft

.CurrentY = useheight + 3

End With

printer1.Print printer1.Page

printer1.EndDoc

end sub

原文转自:www.ltesting.net

篇5:用Visual Basic 实现无线通讯VB

用Visual Basic 实现无线通讯 中科院空间中心 姜棣昭 www2.ccw.com.cn/tips/9908/080303-11.zip ---- 一、概述 ---- Visual Basic 是Mcrosoft公司推出的强有力的系列 开发 软件之一,而且以其实用、方便、快捷、开发周期短、广泛而强大的功能越来越

用Visual Basic 实现无线通讯

中科院空间中心

姜棣昭

www2.ccw.com.cn/tips/9908/080303-11.zip

---- 一、概述

---- Visual Basic 是Mcrosoft公司推出的强有力的系列开发软件之一,而且以其实用、方便、快捷、开发周期短、广泛而强大的功能越来越被广大编程人员所亲赖,广为流传,似乎有些专业的编程人员放弃了Visaul C++ 而改用了Visaul Basic之类的RAD编程工具,尽管Visaul C++在灵活性、代码紧凑、运行速度快及底层开发等方面Visaul Basic无法比拟的,但编写C++应用程序过长的调试和开发周期确实有点不适应当今的应用程序开发环境,

---- ... ...

---- 二、VB串行通讯

---- 利用VB开发通信程序主要的方法有两种,一是利用VB本身提供的控件(CONTRALS),另一种方法是利用WINDOWSAPI应用程序接口,WINDOWS API 主要提供了三个动态连接库KERNEL.EXE、USER.EXE、GDI.EXE供开发人员调用,其中KERNEL.EXE 主要包括一些底层操作函数,完成一些资源管理、任务、内存等操作,USER.EXE包含了一些与WINDOWS管理有关的函数,如通讯、菜单、消息、光标、插入符、计时器以及绝大多数非显示函数,GDI.EXE图形设备接口库,主要内容为与设备输出有关的函数。和串口通讯有关系的函数BuilidCommDCB、ClearCommBreak、SetCommBreak、FlushComm、GetCommError、GetCommState、WriteComm、ReadComm、SetCommState、CloseComm等均在Windowssystem 子目录下的USER.EXE动态连接库中,在VB调用之前应该先在全局变量定义处声明API通讯函数、定义常量。

---- 在我们的实践中,用VB 控件实现通讯的方法比调用SDK的API动态连接库的方法更加方便、快捷,而且用较少的代码可以实现相同的功能,这就是用VB 控件实现通讯的优点所在,下面主要介绍一下利用VB 控件实现无线通讯的问题。

---- 在VB的控件工具箱中,提供了一个使用非常方便的串行通讯控件MSComm,它全面的提供了使用RS-232串行通讯上层开发的所有细则,它既可以使用查询方式又可以使用事件驱动方式来完成串行通讯。

---- ... ...

---- 三、无线传输接口和协议

---- 在我们的项目中用Intel 586/120的PC机为上位机,通讯程序使用VB开发的,用8031单片机做CPU、AD574作数据采集的下位机,上位机作数据接收和数据处理中心站,下位机实时采集数据之后,进行简单的数据平均计算,当收到上位机发来的发送指令之后,开始向上位机发送数据。

---- 上位机无线通讯接口使用的是一块插在ISA扩展槽中的无线MODEM ZX-02,无线MODEM与KENWOOD公司的TK-378无线对讲机相连,数字信号通过无线MODEM调制成为音频信号之后,送到TK-378无线对讲机上的MIC口,

---- 下位机有一台外置无线MODEM ZX-01,单片机的数字信号经过串口送入无线MODEM,MODEM对信号进行调制后送入KENWOOD TK-378无线对讲机上,接收数据的方式与上述相同,由TK-378收到信号后,经无线MODEM将音频信号解调为数字信号进入计算机或单片机处理。

---- 由于在我们的通讯网络中,并非点对点的通讯,而是一点对多点的广播式的通讯方式,因此,我们在通讯协议中曾加站点识别码,每个站有自己特定的识别码,给下位机编码可以保证网络通讯的有序性。

---- 由于无线通讯可能会有空间的燥声干扰,因此,我们采取了多项抗干扰措施,首先是包头识别码,在发送了传输命令之后,下位机开始以打包的形式传输数据,每一包都有一个包头和包尾识别码,假如识别码有误,这一次的传输为不正常数据处理。打包发送另外一个原因是TK-270对讲机连续发送数据的时间不能超过一分钟,超过一分钟就会自动中断发送,因此,当数据较多时不打包连续发送的时间就会超过一分钟,发送数据中断。

---- 在下位机中有32KB的NVRAM,可以保存32KB的数据该数据可以由上位机发送清除命令的方法清楚掉,当32KB满了以后,最早放入的数据就会丢掉,由于我们的采样速率不高,在慢采的情况下,两天的时间才能存满,这样不论上位机或下位机出现断电、死机等问题,数据不会丢失掉。

---- 在发送过程中,由于干扰的原因数据传输出现错误,上位机不给下位机发送清楚命令,数据保存在NVRAM中,下次上位机发送传输命令之后,这些数据还会重新发送到上位机来,这样可以避免了线路带来的数据损失,从下位机向上位机传送的代码有ASCII码和BCD码,测量数据部分用的是BCD码主要是为了节省资源,由上位机向下位机发送的命令均为ASCII码。

---- 我们还对字段长度和包的长度作了规定,一个字段有多少个字节,一包有多少个字段组成,如果数据最后不够一整包,也按照整字段的格式作为半包发送过来。

---- 考虑到下位机的分散性,可能固定在偏远、不宜接近的地带,用上位机对下位机发送校时命令并校时的方法来统一网络时间。

---- 由于我们使用的无线MODEM 所限,传输速率只能达到2400BPS,而在我们的使用中1200BPS、N PARITY、8 DATA、1 STOP为较稳定状态。

---- 上位机向下位机发送的命令有校时命令并校时、请内存命令、发送数据命令、快采命令和慢采命令等。发送命令有两种发送方式,即手动方式和自动方式,自动方式是由定时器来完成的。

---- 在无线通讯过程中,除了规定合理的协议之外,为了保证通讯的正确性,在数据发送时适当的增加延时是必要的,当速度较慢的计算机向速度较快的计算机发送数据时应适当的增加延时。

---- 四、应用实例

---- 由于该项目的软件源代码较长,我们只拿出和串口通讯有关的程序片段来供大家参考。在我们的工作中实践了三种通讯方式,即查询方式、事件驱动方式、事件驱动转查询方式,这三种方式各有利敝,查询方式有方便可靠的特点,可利用协议或设定时钟进入和退出查询状态,但不是资源的有效利用方式,事件触发方式对于定长通讯非常有效,但定长通讯在有些场合不实用,事件驱动转查询方式既有事件驱动的特点又有转查询方式特点,可以说是集二者之长,有效利用资源。下面着重介绍事件驱动转查询方式。

.

.

.

---- 五、结论

---- 根据我们实践工作的经验,在本项目中无线通讯和有线通讯的主要区别在于用MSCOMM控件的RTSEnable属性对无线Modem的PTT操作以及适当的延时,延时的长短和使用的计算机有关。在开发的过程中,把握好上述两条,设定一个合理的通信协议,选择合适的硬件是至关重要的。

原文转自:www.ltesting.net

篇6:用VB实现鼠标的隐藏VB

用 VB 实现鼠标的隐藏 在 Windows 的大多数场合下,鼠标都是始终可见的,但在有些场合需隐藏鼠标,使之不可见,以免影响屏幕画面的整体效果,如屏幕保护程序运行时,鼠标就是不可见的。在VB中可通过调用Windows API函数ShowCursor()来非常轻松地实现鼠标的隐

用VB实现鼠标的隐藏

在Windows的大多数场合下,鼠标都是始终可见的。但在有些场合需隐藏鼠标,使之不可见,以免影响屏幕画面的整体效果,如屏幕保护程序运行时,鼠标就是不可见的。在VB中可通过调用Windows API函数ShowCursor()来非常轻松地实现鼠标的隐藏。方法如下:

方法一:

首先在全局模块中声明函数如下:

Declare Function ShowCursor Lib “User”(ByVal bShow As Interger) As Interger

当bShow为True时,系统内部计数器加1;当bShow为False时,计数器减1。只有当计数器值大于或等于零时,鼠标才显示出来。通常情况下鼠标是显示的,并且计数器值为0,因此只需简单地调用ShowCursor()函数即能实现鼠标的隐藏与显示:

Sub Form―Load

Dim rc%

rc%=ShowCursor(False) 注释:隐藏鼠标

……

rc%=ShowCursor(True) 注释:显示鼠标

End sub

此种方法下ShowCursor(False)与ShowCursor(True)必须成对使用,否则有可能造成鼠标“丢失”的现象,即调用若干次ShowCursor(True)也有可能显示不出鼠标来(视内部计数器值而定),

当鼠标“丢失”时,可通过重新启动Windows来找回鼠标。

方法二:

采用如下程序,可以不成对调用ShowCursor()函数:

注释:隐藏鼠标

While ShowCursor(False)>=0 注释:将计数器值

注释:减至-1

Wend

注释:显示鼠标

While ShowCursor(True)<0 注释:将计数器值加至0

Wend

原文转自:www.ltesting.net

vb教学设计

vb实训总结

VB实训个人总结

实现桌面地理信息系统ArcView和VB5应用程序之间的通讯

用VB在桌面建立快捷方式

《菜鸟学数据分析》对数学技能要求高吗?

vb试题

离线编程技术在机器人点焊中的应用

vb程序设计实验心得

儒家思想在现代企业管理中的应用

用VB实现多文档打印VB
《用VB实现多文档打印VB.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【用VB实现多文档打印VB(推荐6篇)】相关文章:

dbmsxplan之display函数的使用2024-02-06

vb试题及答案2023-04-26

计算机二级考试考点PowerPoint篇2024-05-12

计算机二级VB上机考试答题攻略2023-01-29

.net面试项目介绍范文2022-11-16

如何学好Access数据库编程2023-04-30

vb课程设计心得体会2023-03-22

visual basic程序设计课程教学总结2022-05-12

计算机二级vb试题2022-04-29

Authorware入门教程之开发多媒体课件的经验2023-09-25

点击下载本文文档