用VB编写登录程序VB

2024-07-24 版权声明 我要投稿

用VB编写登录程序VB

用VB编写登录程序VB 篇1

{ 编者按:在前几期编程乐园中,我们一同学习了一些关于VB编程的基本概念和语法规则。但离开实例学习编程,无疑是枯燥无味、事倍功半的,所以我们在此推出“看实例,学编程”栏目,邀请富有经验的PFans介绍他们的典型实例,希望对PFans的编程之旅有所帮助。

我们都知道,在进入Windows操作系统时会出现一个登录对话框,要求用户输入密码后才能进入Windows。我们用VB也可以编写这样的登录窗口,其具体方法如下:

界面设计:

打开“VB6.0”,出现“新建工程”对话框,选择“标准EXE”单击“打开”即可新建一个工程。新建一个工程后,VB自动生成了一个窗体,其默认的名称是Form1,且显示的标题也是Form1,显然与我们要编写的程序不符。我们可以更改这些设置,方法是:点击Form1窗体,在右边的属性窗口中(如图1)的“名称”后输入“Denglu”(在后面讲的Denglu就是指的这个窗体),在“Caption”后输入“登录窗口”。窗体设置好后,我们便可以将控件放置到这个窗体中去了。

“登录窗口”中主要用到的是TextBox(文本框)控件,该控件主要是用于接收用户输入的文字并显示出来。在该程序中我们便可以使用TextBox控件接收用户输入的信息来判断是否是合法的用户。另外,我们还将用到Label(标签)控件及CommandButton(命令按钮)控件。Label控件用来显示“用户名”及“密码”标题;CommandButton控件用来设计“确定”及“取消”按钮。下面我们将这些控件放置到窗体中:在工具箱中选择“Label”控件(如图2),在窗体中拖动鼠标直到一定的大小,然后在属性窗口中的“Caption”属性后为输入“用户名”,然后在其下方再拖动一个Label控件,将Caption的值改为“密码:”;在工具箱中选择“TextBox”控件(如图3),在“用户名”后拖动一个TextBox控件,用同样的方法在“密码:”后拖动一个TextBox控件,然后在“属性窗口”中将Text的值改为空(即删除默认的Text1),为了不显示出用户输入的密码,我们将第二个TextBox控件的PasswordChar属性设置为*(如图5),这样在用户输入密码时显示的就是*了;在工具箱中选择“CommandButton”控件(如图4),将其拖动到窗体的下方(一共两个),分别设置其Caption属性为“确定”和“取消”。调整好这些控件的位置(如图6)后即可完成界面的设计,

程序代码:

该程序的主要目的是要判断输入的用户名是否合法,所以我们首先编写判断用户名的程序代码。双击“确定”按钮,添加如下的程序代码:(黑体部分为系统自动生成的代码,楷体为注释)

Private Sub Command1_Click

′判断是否输入了用户名

If Text1.Text=″″ Then ′如果Text1为空,即没有输入用户

MsgBox ″请输入用户名!″,vbOKOnly+vbCritical,″错误″

Exit Sub ′退出这个过程

Else ′如果输入了用户名

If Text1.Text=″软件世界″ And Text2.Text=″12345″ Then ′如果输入的用户名是″软件世界″且密码为″12345″

MsgBox ″你是合法用户,欢迎进入!″,vbOKOnly+vbInformation,″欢迎进入″

Else ′如果不是″软件世界″或密码不是″12345″

MsgBox ″用户名或密码错误!″,vbOKOnly+vbCritical,″错误″

Text1.Text=″″

Text2.Text=″″ ′清空Text1及Text2控件中的文本内容,让用户重新输入

End If

End If

End Sub

在这一段代码中,我们使用了If…Then…Else…End If。这是一个条件判断语句,If Text1.Text=″″ Then这句代码则是判断Text1是否为空,如果为空,这个条件就成立,则执行Then后的语句,如果Text1不为空,则这个条件不成立,程序将会跳到Else处,执行Else后的语句。

程序测试:

现在我们可以单击“F5”键来运行这个程序,看看其运行效果。直接单击“确定”按钮,将会弹出一个对话框(如图7);在“用户名”后输入“软件世界”,“密码:”后输入“12345”,再单击“确定”按钮,此时便会出现一个“欢迎进行”的信息框(如图8)。怎么样,一个属于自己的“登录窗口”就制作好了。

但这个程序目前还只能判断在程序中已设置好了的用户名及密码,没有灵活性,你可以发挥你的聪明才智,使其能够判断多个合法的用户及密码。如果你有什么疑问,欢迎写信与我交流,我的E-mail地址是:vber@21cn.com。

(重庆 杜伟)}

用VB编写登录程序VB 篇2

(1) 虚拟键盘的设计

金山打字通是键盘操作学习过程中常用的一款软件, 通过近一二年的课堂跟踪, 发现相当一部分学生对其中的“拯救苹果”这个小游戏很感兴趣。究其原因, 程序本身简单易操作, 对学生来讲, 是以“静” (学生已熟悉键盘布局、了解手指分工, 静待随机字符的出现) 制“动” (按键击中随机产生的字符) 。练习之初, 为了能够取得好成绩, 除了必须坚持的“技术动作” (保证8个基本键位的指法正确) 外, 还必须保持平和的心态, 身心放松。正如古人所说, “静生智, 定生慧”。练习中许多学生建议, 当学生击键不正确时, 要是在屏幕上能够给出提示告知究竟按错的是哪个键, 那就太好了。通过与学生沟通发现有必要设计一个虚拟键盘。于是, 笔者设计了这样一个程序:程序开始运行, 会从窗口上方会飘落一个随机产生的字母, 敲击键盘相应的字母键如果击中, 该字母就消失, 然后在窗口上方又随机生成一个字母下落。与之相对应的是, 学生每按下键盘的一个键, 则位于窗口上方或下方的虚拟键盘会同步显示按键状态, 保证了学生专心关注窗口内容, 不用再低头查看物理键盘, 从而为进入盲打状态提供了一个实时的、同步的、动态的反馈平台。

(2) 设计要点

1) 利用窗体的Picture属性导入一个主键盘区的截图, 可将其放置在窗体的上方或下方。因为, 有的学生喜欢虚拟键盘在上方, 有的则喜欢在下方, 在设计时, 对截图位于上方和下方这两种情形都进行了设计。实际需要设计代码相同、用户界面略有不同的两个程序, 实际运行如图1、图2。

2) 在每个按键上都要添加一个Label控件。

(1) 所有Label控件的通用属性是:BackStyle:0;BorderStyle:1。

(2) 对这些控件进行分类, 可分为数字键区、字母键区、特殊键区等。如主键盘区的第一行中的15个键上的Label控件列为数字键区控件, 命名格式为lblNum, 通过index属性设定其标识号, 这个标识号是根据相关字符的ASCII码值来决定, 如数字1的ASCII码的值是49, 数字1键上的Label控件名为lblNum (49) , 其他依此类推。

3) 添加一个模块, 内容是:

Public Declare Function GetKeyState Lib"user32" (ByVal nVirtKey As Long) As Integer

4) 声明部分:

Dim Esc, B1, minus, plus, straight, backspace, TTAB, Lett (65 To 90) , num (48 To 57) , Caps, Shft, Ctrl, Alt, LB, RB, Q, A, TD, SBL, SBR, SP, Ent

Dim ff (112 To 123)

Dim i, o, io

5) 核心代码示例:

(在窗体上创建3个时间控件, 其中的第3个时间控件用来监控虚拟键盘的按键情况, Interval属性设置为1。

Private Sub Timer3_Timer ()

……

'以下代码是针对数字键区0———9键的判断

For o=48 To 57 Step 1

num (o) =GetKeyState (o)

If num (o) <0 Then

lblNUM (o) .Visible=True

Else

lblNUM (o) .Visible=False

End If

……

End Sub

(3) 资源文件的调用

在上面的测试练习中, 测试成绩能够达到每分钟正确击键数为60个字符的学生, 将进入实战阶段, 即一段或多段英文、中文或中英文混合字符的输入测试阶段。在这一阶段, 设计如图3的测试程序:打开测试程序, 单击其中任何一个单选按钮, 则相关的测试文本装载到Text1中, Text2中将自动出现输入光标, 每输入一个字符将会与Text1的文本作比较, 若不正确则Text2中已输入的文字全部变为红色, 录入正确则文字颜色是蓝色。

对于其中的测试文本, 通常的设计方案是, 用VB文件操作中的Open命令将文件中的文本信息读取到Text1中。这种方法简单, 但有一定的局限性。书写代码时, 必须指明调用路径, 比较繁琐;在将程序封装成可执行文件时, 除了生成可执行文件外, 同时还必须附带一个文件夹, 专门用来存放测试用的文本文件。这个文件夹完全处于开放状态, 一旦移动、删除或重命名则调用出错, 其中的文本文件更有可能被学生修改得“面目全非”。为避免类似的情况出现, 可以把这些练习文件创建成一个资源文件, 使用LoadResData函数调用相应的文本文件, 简化了程序的编写并减少了发生错误的可能。

所谓资源文件, 就是指在程序运行时用到的资源集中在一起的一个文件。资源文件可以存放文字、图片、声音等资源。当使用资源文件的应用程序编译成可执行文件之后, 资源文件则完全“融入”到可执行文件之中, 成为EXE文件的一个组成部分。资源文件的使用如下:

1) 添加资源文件编辑器

启动VB6.0企业版, 单击菜单“外接程序”下的“外接程序管理器”, 在弹出的对话框的列表框中选择“VB资源编辑器”, 单击“确定”按钮后退出对话框。

2) 编辑资源文件

单击“工具”菜单栏中的“资源编辑器”图标, 打开“VB资源管理器”窗口, 单击窗口上的“添加自定义资源”图标, 根据提示将5个文本文件添加到一个资源文件中, 如图4。

3) 使用资源文件

在使用资源文件中的资源时, 要用到三个函数:

LoadResString、LoadResPicture和LoadResData, 分别用来加载文本资源、图形资源和自定义资源。这里只用到LoadResData函数。核心代码如下:

Private Sub Option1_Click ()

……

b=LoadResData (101, "CUSTOM")

Text1.Text=StrConv (b, vbUnicode)

……

End sub

(3) 只读文本框的设计

完成上面的设计后, 装载到Text1中的文本又处于可编辑、可修改状态。为保证其中的文本装载之初就进入到不可编辑状态, 我们还需要做进一步的设计, 将这个文本框控件设计成只读属性。

1) Text1文本框属性设置窗口

MultiLine属性设置为True, ScrollBars属性设置为2-Horizontal, 以保证Text1文本框中的文本自动换行, 同时出现垂直滚动条。

2) Form1的通用声明部分

Private Declare Function SendMessage Lib"user32"Alias"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function GetWindowLong Lib"user32"Alias"GetWindowLongA" (ByVal hwnd As Long, ByVal n Index As Long) As Long

Private Const GWL_STYLE= (-16)

Private Const EM_SETREADONLY=&HCF

3) 核心代码示例

Private Sub Option1_Click ()

……

c=SendMessage (Text1.hwnd, EM_SETREADONLY, True, vbNull)

Text1.BackColor=vbInactiveBorder

……

End sub

用VB编写登录程序VB 篇3

关键词:VB;TTS;英语阅读教学

中图分类号:TP319文献标识码:B 文章编号:1673-8454(2009)14-0061-02

长期以来,农村中学英语的阅读教学,由于受教师发音不够标准的限制一直效果不佳。为破解这一难题,本人在VB编程中使用TTS技术,轻而易举实现了英语的流利朗读,并能自由调节朗读的速度与效率,极大的提高了英语阅读教学的效率。

那么TTS是什么呢?其实,TTS是微软出品的一套文字朗读引擎(Text-To-SpeechEngine),在VB编程中调用TTS实现英语的朗读。

下面以VB6.0为例详解具体的实现过程。

一、TTS引擎安装

TTS引擎所需的Microsoft Text-To-SpeechEngine与Microsoft Speech API软件既可以到微软的站点下载,也可以在“金山词霸.net”的安装光盘上找到(文件名为MSTTS.EXE与SPCHAPI.EXE)。安装了TTS引擎后,在WINDOWS所在文件夹下会生成一个SPEECH子文件夹,其中有一个Vtxtauto.tlb文件,在编程时要调用它。

二、在VB中引入Vtxtauto.tlb文件

进入VB6.0,执行菜单命令“文件/新建工程/标准EXE”并确定,然后执行菜单“工程”中的“引用”,单击“浏览”按钮到WINDOWS文件夹下的SPEECH子文件夹,打开Vtxtauto.tlb文件,则“VoiceText1.0 Type Library”被添加到引用列表中,选中它并单击确定。将库Vtxtauto引入VB后,可以通过菜单“视图”中的“对象浏览器”来了解它所封装的类,以及了解各类的成员函数与属性的意义与使用格式等信息。一些主要的方法与属性将在下面的源程序中给予注释,故在此不详细列出。

三、在窗体FORM1上放置所需控件并设置主要属性

在FORM1上添加三种Label控件,一个TextBox控件,一个HscrollBar控件,六个CommandButton控件。窗体及各控件的主要属性如下:

FORM1:Caption=“英文朗读”

LABEL1:Caption=“请输入英文文档”

LABEL2:Caption=“朗读速度”

LABEL3:Caption=“”

(LABEL3标签用来显示朗读速度值)

TEXT1:Text=“PleaseinputEnglishtext”,ToolTipText=“请输入或粘贴英文文档”,MultiLine=True,ScrollBars=3 – Both.

HSCROLL1:名称=SpeedChange ,Min=90 ,Max=300

(Min与Max属性值分别用来限定可调节的语速的最小值与最大值)

COMMAND1:名称=read,Caption=“朗读”

COMMAND2:名称=pause,Caption=“暂停”

COMMAND3:名称=stop,Caption=“停止”

COMMAND4:名称=prev,Caption=“上一句”

COMMAND5:名称=next,Caption=“下一句”

COMMAND6:名称=quit,Caption=“退出”

四、代码编写

在窗体装载时调用Register方法注册,括号内的两个参数是字符串,可以随便填。

Private Sub Form_Load( )

Call VTxtAuto. VTxtAuto. Register(Space(8),Space(8),)

因为语速的默认值为170,故水平滚动条的初值也设为170

SpeedChange. Value=170

End Sub

设置朗读速度调节代码,当水平滚动条的值Value发生变化时将其赋给控制语速的Speed属性Private Sub SpeedChange_Change( )

VTxtAuto. VTxtAuto. Speed= SpeedChange. Value Label3.Caption= SpeedChange. Value

End Sub

设置“朗读”按钮代码

Private Sub read_Click( )

如果朗读出错,则转到出错处理标记模块ErrorHandler

On Error GoTo ErrorHandler

调用方法Speak进行朗读,第一个参数是要朗读的文本,第二个参数是设置朗读风格

CallVTxtAuto. VTxtAuto.speak(Trim(Text1.Text),

vtxtsp_VERYHIGH+vtxtst_READING)

Exit Sub

ErrorHandler:

MsgBox”只能朗读英文文档,不能朗读汉字符号!”,,”出错信息”

End Sub

设置“暂停”按钮代码

Private Sub pause_Click( )

If VTxtAuto. VTxtAuto.IsSpeaking Then

如果属性IsSpeaking为真,则表示正在朗读,调用AudioPause方法暂停朗读

Call VTxtAuto. VTxtAuto. AudioPause

Pause. Caption=“恢复”

Else

如果已经处于暂停状态则调用AudioResume方法恢复朗读

Call VTxtAuto. VTxtAuto. AudioResume

Pause. Caption=“暂停”

End If

End Sub

设置“停止”按钮代码,调用Stop Speaking方法停止当前朗读

Private Sub stop_Click( )

Call VTxtAuto. VTxtAuto. Stop Speaking

End Sub

设置“上一句”按钮代码,调用AudioRewind方法往后跳过一句

Private Sub prev_Click( )

Call VTxtAuto. VTxtAuto. AudioRewind

End Sub

设置“下一句”按钮代码,调用AudioFastForward方法向前跳过一句

Private Sub next_Click( )

Call VTxtAuto. VTxtAuto. AudioFastForward

End Sub

设置“退出”按钮代码

Private Sub quit_Click( )

Unload Me

End Sub

说明:本程序在中文WINDOWS操作平台,VB6.0环境下运行通过。运行时在文本编辑框中输入或粘贴英文文档,然后单击“朗读”按钮就可播放读音。这样,不管在课上还是在课下,不管有无教师,学生只要打开电脑运行程序即可进行朗读练习,从而避免了因教师发音障碍带来的不便,极大地提高了英语阅读教学的效率!

五、程序改进思想

对于精于VB编程的电脑爱好者来说可对本程序作一些改进,例如增加从文本文件或数据库中读取文档的功能,增加让用户选择朗读的优先级、发声语气类型、发声音量调节功能。当然,这些功能实现起来稍为复杂一些,有兴趣的爱好者可以自行探索一下。

编写VB打印控制程序的几点心得 篇4

编写VB打印控制程序的几点心得

郑州解放军信息工程大学信息安全学院计算机系(450002)

白 燕 王 鹏

摘 要本文在总结作者实际开发经验的基础上,详细介绍了VB实现高分辨率打印方法的几点心得。阐述了参数化绘图程序缩短打印程序开发时间的方法以及打印机缩放属性与窗体属性匹配使用的技巧,并总结了解决坐标定位、图形与其实际打印位置出现误差等问题的经验。

关键词PrintForm 高分辨率打印 参数化绘图 缩放属性

Some Experiences on VB Print Control

Bai Yang, Wang Peng

Computer Science Department

Universityof

Informationand Engineering

Zhengzhou, China

Abstract: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 attribute

1.简介

Visual Basic(VB)给用户提供了可视化编程环境,因其简单易学、功能强大而得到了广泛的应用。VB提供了两种实现打印的方法。一般在对打印质量要求不高的场合,或者是编程项目的早期开发过程中,可以直接使用VB窗体的Printform方法实现打印。用这种方法实现打印具有编程简单、易用并且功能强大的优点,它只需要通过一行代码,几乎能打印所有内容。实现的方法就是:首先将要打印的内容在屏幕上显示出来,然后开发人员只要为窗体对象激活 PrintForm ,窗体则自动将要打印的内容发送到Printer对象上,其语法格式如下:[窗体.]PrintForm 。如果窗体中包括图形,那么打印前应先置窗体的AutoRedraw属性为真。这种方法虽然简单,但是它却存在着内存消耗大、打印粗糙、速度慢等缺陷,尤其对于带有滚动条的图像,这种方法只能打印当前可视的区域。在实际应用中经常会遇到对打印质量要求很高的场合,例如打印音乐五线谱,对打印的美观、清晰度以及音符符头的位置都有很严格的要求,这种应用场合若采用VB提供的另一种基于Printer对象的打印方法则可以获得高分辨率的打印,得到很高的打印质量。在实际应用中,也可以根据实际应用情况将上述两种方法结合起来使用,即:前期工作使用PrintForm 简单的打印方法将窗体的布局定下来,后期再使用基于Printer对象的打印方法实现最终的打印工作。

2.高分辨率打印程序开发心得

⑴ Printer对象

VB的打印可以使用Printer对象。Printer对象是一个独立于打印机设备的封装,它可以代表不同的打印机,初始时,Printer对象为系统缺省的打印机,也可以使用下列语句:Set Printer=Printers(2) (其中2代表Printers集中的第二个打印机)对打印机进行指定。

Printer对象具备例如:ColorMode、Copies、Duplex、Printquality等控制打印机特征的属性,提供了Newpage、EndDoc、KillDoc等控制打印过程的方法,以及大多数由窗体和图片框控件提供的图形属性和方法如:Currentx、Currenty、Textwidth、Textheight、Print、Pset、Line、PaintPicture和Circle等方法,它还拥有Font的所有属性。实现高分辨率的打印就是通过控制Printer对象的上述属性和方法完成的。

⑵ 直接利用Windows公用标准对话框CommonDialog控件【打印】

VB为用户提供了Windows公用标准对话框CommonDialog控件:【打开】、【文件另存为】、【颜色】、【字体】、【打印】。CommonDialog控件在Visual Basic 和Microsoft Windows动态连接库Commdlg.dll例程之间提供了接口。利用公用标准对话框【打印】开发VB的打印程序,将大大缩短程序的开发周期。应用程序中要使用公用对话框,必须首先在工具箱中添加公用对话框控件。该动作通过激活【部件】对话框,选中Microsoft Common Dialog Control6.0, 单击【确定】即可。然后再将公用控件添加到窗体上并设置相应属性,该控件具有的属性有Color、Font、Print、Help等。

VB提供mnuFilePrint_Click过程供用户添加开发的打印程序代码。

⑶ Printer对象控制打印的基本过程

利用Printer对象开发的打印程序主要靠其提供的――NewPage (打印新的一页,CurrentX、CurrentY置为新页的左上角,可完成多页功能。)、EndDoc (将打印任务加入打印机队列)、KillDoc (取消打印任务)控制打印过程的。一般情况下,打印程序完成多页打印时会多次执行NewPage,结束时执行一次EndDoc将打印任务加入打印机队列。如果你在NewPage后,立即使用EndDoc,VB则不会打印额外的空白页。如果希望显示空白页,则可在新的一页上只使用Printer.Print “ “打印空字符即可。

为了通过Printer

对象实现文本和图形的打印,获得最好的打印质量,还需要对VB控制打印机的多种属性有更深入的理解,例如打印机的坐标体系向屏幕坐标体系的转换、打印机字体尺寸的确定等。下面给出了打印程序的主框架:

Private Sub mnuFilePrint_Click

On Error Resume Next

If ActiveForm Is Nothing Then Exit Sub

With dlgCommonDialog ‘打印机公用对话框

.DialogTitle = “打印”

.CancelError = True

.Flags = 1

Printer.FontSize = dlgCommonDialog.FontSize

‘将打印机公用对话框设置的字体大小传递给打印机

.ShowPrinter ‘ 在屏幕上显示【打印】公用对话框

If Err MSComDlg.cdlCancel Then

Printer.FontTransparent = False ‘初始化打印的字体为不透明

SetPrinterScale Myform ‘匹配打印机的缩放属性与窗体的属性

PrintAnywhere Printer ‘可放置用户编写的打印对象参数化例程

‘实现字符和图形的显示

Printer.NewPage ‘打印机坐标初始化

PrintAnywhere Printer ‘打印另一页的内容

Printer.NewPage ‘打印机坐标初始化

Printer.EndDoc ‘将该任务加入打印机任务队列

‘ 不打印空白页

Printer.KillDoc ‘取消当前的打印任务

End If

End With

End Sub

⑷ 参数化绘图程序

用VB开发应用程序时,如果使用参数化绘图例程进行屏幕显示程序的开发,则在开发打印程序时,就不需再另行开发代码,从而避免了大量的重复劳动,有效地缩短了程序的开发周期。

参数化绘图例程就是:在开发例程时,为每一个例行程序提供一个OBJECT类型的参数,调用程序通过向例程的OBJECT类型参数分别传递窗体、Printer对象,就可分别完成屏幕显示与打印机输出。 见如下示例:

Sub PrintAnywhere(Dest As Object)

Dest.Print “HELLO!”

Dest Is Printer Then

Printer.EndDoc

End If

End Sub

要完成屏幕上的输出,调用 PrintAnywhere Myform 即可,而调用 PrintAnywhere Printer则完成在打印机上输出。

⑸ 属性匹配与窗体缩放

因为控制打印机实际绘图区域大小的.属性Height和Width,由目前正在使用的纸张决定,而且可打印的区域与纸张边缘有一定距离。因而为了获得正确的打印输出结果,不能简单地将Printer对象直接传递给绘图例行程序,还必须要解决打印机的缩放属性与显示窗体属性相匹配的问题。即:保证使窗体中的打印内容以正确的大小显示,并居于可打印区域的中间。实际上实现的是打印机的坐标体系向屏幕坐标体系的转换。具体过程是:使用打印机的ScaleX和ScaleY方法,获取以twip为单位的打印机尺寸,再利用窗体的ScaleX和ScaleY方法将这些尺寸转换为窗体中的坐标系统,从而实现以窗体的坐标系统提供打印机可打印区域大小的目的。然后,用这些尺寸作为打印机中新的ScaleWidth和ScaleHeight,即可实现属性匹配。

但是,我们在打印时,经常会遇到这样的场合――在不改变窗体形状的情况下,需要扩大或缩小窗体的大小。要完成这样的工作,不仅需要完成属性匹配,还要确定对象被缩放的系数。程序如下:

Private Sub SetPrinterScale(obj As Object)

Dim pwid As Single, phgt As Single, xmid As Single, ymid As Single

Dim owid As Single, ohgt As Single

owid = obj.ScaleX(obj.ScaleWidth, obj.ScaleMode, vbTwips)

ohgt = obj.ScaleY(obj.ScaleHeight, obj.ScaleMode, vbTwips)

‘获取窗体以Twips表示的尺寸

pwid = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)

phgt = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)

‘获取打印机以Twips表示的尺寸

If (ohgt / owid >phgt / pwid) Then

s = phgt / ohgt

Else

s = pwid / owid

End If ‘计算缩放因子

pwid = obj.ScaleX(pwid, vbTwips, obj.ScaleMode) / s

phgt = obj.ScaleY(phgt, vbTwips, obj.ScaleMode) / s

‘将打印机的尺寸转换成obj的坐标系统 / 缩放因子

x_mid = obj.ScaleLeft + obj.ScaleWidth / 2

y_mid = obj.ScaleTop + obj.ScaleHeight / 2‘设置打印区域的中心点坐标

Printer.Scale (x_mid - pwid / 2, y_mid - phgt / 2)-(x_mid + pwid / 2, y_mid + phgt / 2)

‘ 设置打印机中新的ScaleWidth和ScaleHeight

End Sub

vb程序设计方法 篇5

教学目标:

1、知道创建一个VB程序的基本步骤

2、了解窗口、事件和消息的含义

3、培养学生的自主探究精神

教学重点和难点:

1、窗口,事件和消息的关系

2、属性的设置

3、代码的输入

学生分析:

高一学生,已经学习了程序的三种基本结构,能辨别三种结构,但不会自己书写程序。对VB基本上一无所知。

教学方法:

采用主动式任务驱动的教学方法,通过创设情境,激发学生对VB的兴趣,使学生产生动手做一个VB程序的欲望.在布置任务的时候,不是教师指定完成什么任务,而是由学生自己提出想完成一个样的任务,即想做一个什么样的VB程序,因为任务是学生自己提出来的,所以学生肯定感兴趣的,这就避免了教师布置的任务不能照顾到全体学生装的弊端.而教师作为引导者和技术帮助者,帮助学生一步步地完成任务,引导学生分解任务,分解为界面的创建,属性的设置,代码的输入等几部分。在实践过程中,使学生掌握用VB进行程序设计的步骤和方法。

教学过程:

一、激趣引入

师:上节课中我们演示了一个抛硬币的VB小程序,大家还有印象吗?(教师演示这个程序)师:下面我再来演示几个其他VB小程序(教师演示若干个趣味小程序,如,和刘德华对话,井字棋,心情好吗,挖地雷,单选复选框与字体,测验记忆力,弹球游戏,剪刀包袱,在演示过程中,让学生注意鼠标单击按钮,或者鼠标移动,窗口上会有什么反应)

师:窗口——舞台,事件——导演的命令,反应——演员的表演,控件——演员(以对比方式说明它们之间的关系,让学生明白,需要哪个演员(控件)作出什么表演,要对这个演员(控件)发号施令,导演不能瞎指挥,不然表演要乱套的。)

师:有了舞台,演员,导演在哪儿呢?导演就是你!今天就是请大家当一回导演(出示课题:今天你来做导演!)意图:

1、在演示过程中,提醒学生注意窗口,事件(点击按钮或移动按钮),消息(事件的反应)。

2、激发学生的兴趣,产生自己动手做一个VB程序的欲望。

二、形成任务 大屏幕展示:

一、确定导演的工作目标,即你想要完成一个什么样的VB程序?

老师引导,启发学生,使每个学生能确定自己的目标,即要完成一个什么样的VB程序,即名称是什么?功能是什么?……。(对于不能确定的学生,建议参考老师演示的例子,从中选择一个自己感兴趣的)

意图:这是很重要的一个过程,要很好地引导学生,使学生清楚地知道自己的任务,即自己要做什么?

三、分解任务

(以演示中的一个小例子,来说明如何完成一个VB程序)大屏幕展示:

二、导演如何完成任务?

师:导演正式上任了,大家都胸有成竹了,明确了要做一个什么样的VB程序,首先做什么呢?

1、界面的设计(舞台的布置)师:一个程序,你最先看到是什么?

师:舞台如何布局?演员如何选取?窗口如何布局?上面要放哪些东西?这些东西怎么放比较好看?……

意图:引导学生从界面设计入手,学会用控件来输入文字,图片,通过对文字的修饰,图片的插入,引入属性的设置,突破这个难点。

2、如何让对象动起来?

师:窗口布置好了,舞台拱建好了,演员也到位了,那么让演员如何表演呢?每个演员做什么动作呢?导演发布命令的时候(输入代码)的时候,一定要看清对象,不要乱发命令啊!意图:

引入代码的输入。为节省时间,提供演示程序的代码,避免自己书写代码。

四、动手实践

师:各位跃跃欲试的导演们,按照自己刚才确定的任务,动手来完成自己的第一个VB小程序吧!可能问题:

有些学生在输入代码的时候,为分不清代码需要给哪个控件加上,这时一定要让学生明白,导演的指令必须是针对某个演员发的,不能乱发。对于学生碰到的问题,老师做好技术指导工作。

五、评价交流(展示学生作品,交流评价)

师:不同风格的导演设计的效果是不同的,让我们来欣赏一下各位导演的作品吧 意图:

通过电子教室软件,转发一些小组完成的作品,能过交流了解其他同学的制作成果,吸取他人经验

提醒学生在程序中加入制作人信息,即导演的信息,有初步的版权意识

有些学生可能设计的任务比较大,在课内无法完成,则鼓励在课后继续完成,作为拓展作业。

五、总结

师:各位导演感觉如何?做一个导演不容易吧,做一个好的导演更不容易。创建一个VB程序的基本步骤:界面设计,属性设置,代码输入。

导演有大有小,但是基本工作是一样的,就是上面这些步骤,今天我们是小导演,明天我们可能是大导演,期待欣赏到同学们的大作!意图:回顾过程,总结提高。

附:学案

今天我来做导演

——VB程序设计方法

一、明确目标

身为导演,最重要的一件事,就是明确自己的目标,请确定你的目标,即你想做个什么样的VB程序?

提示:如果一时之间想不出来,可以参考老师演示的例子

二、设计舞台(界面的布局)

1、如果你想在窗口上输入文字,方法如下:

(1)用鼠标选择左边工具栏中的“LABEL”标签

(2)在窗口上拖出一个大小合适的矩形(矩形的大小可以用矩形边上的八个小方块进行调整)

2、如果你想插入一张图片,方法如下:

(1)用鼠标选择左边工具栏中的“IMAGES”标签

(2)在窗口上拖出一个大小合适的矩形

3、如果你想在窗口上增加一个按钮,方法如下:

(1)用鼠标选择左边工具栏中的“BUTTON”标签

(2)在窗口上拖出一个大小合适的矩形

4、如果你想在窗口上增加一个文本框,方法如下:

(1)用鼠标选择左边工具栏中的“TEXT”标签

(2)在窗口上拖出一个大小合适的矩形

:),增加其他控件的方法类似,相信自己,试一试!

三、对演员进行分工(属性的设置)

1、如何在窗口上显示文字?

方法如下:

(1)用鼠标选中Label控件

(2)在右边的属性窗口中找到“Caption”属性,在右边输入要显示的文字 思考:如何修改文字的字体?颜色?大小? 提示:修改相应的属性

2、如何插入图片?

方法如下:

(1)用鼠标选中Image控件

(2)在右边的属性窗口中找到“Picture”属性,点击旁边的省略号按钮,选择要插入的图片

3、如何修改Text显示的文字? 方法如下:

(1)用鼠标选中Text控件

(2)在右边鼠性中选中Text属性,输入要显示的文字

4、如何修改按钮上显示的文字? 方法如下:

选中按钮,修改“Caption”属性

四、让演员动起来(输入代码)选择演员,输入想要演员实现的代码

五、检查一下导演工作进展如何? 方法: 运行、播放

六、你是个合格的导演?还是个优秀的导演?

1、你知道如何做一个VB程序了吗?(知道/不知道)

用VB操作注册表(三)VB 篇6

用VB操作注册表(三)

梦里水乡

登录数据库Registry的Value的存取--读取某个Key指定名称的值

我们在这篇文章中将讲述利用RegQueryValueEx函数来读取某个Key的指定名称的值(value)

RegQueryValueEx的Vb函数声明和参数解释:

Declare Function RegQueryValueEx Lib “advapi32.dll” Alias “RegQueryValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

hkey:Key Handle

lpValueName:Value Name

lpReserved:保留参数,调用时设置为0即可

lpType:返回读取的数据类型

lpData:返回读取的数据

lpcbData:传入lpData数据的长度,若成功读取数据,则返回所读取的数据的长度,

返回值: =0,表示成功;≠0,表示失败。

说明:

1、 这一函数除了可读取指定名称的值之外,也可以读取default value。如果要读取default value,只需要将

参数lpValueName设置为“”[空字符串]即可。

2、lpType 的可能取值,我们在第二篇文章中曾经提到过它的。

Enum ValueType

REG_NONE = 0

REG_SZ = 1 -->字符串

REG_EXPAND_SZ = 2 -->可展开式字符串

REG_BINARY = 3 -->Binary数据

REG_DWORD = 4 -->长整数

REG_DWORD_BIG_ENDIAN = 5 -->BIG_ENDIAN长整数

REG_MULTI_SZ = 7 -->多重字符串

End Enum

先利用RegQueryValueEx函数获得某个value的数据类型和数据的长度,只需要将参数lpData设置为vbNullString[表示暂时不读取数据],然后由参数lpType获得数据类型,lpcbData获得数据长度。调用例子如下:

Dim hKey As Long, ret As Long, lenData As Long, typeData As Long

Dim Name As String

`读取HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun的internat.exe的value.

Name=“internat.exe”

ret=RegOpenKey(HKEY_LOCAL_MACHINE,“SoftwareMicrosoftWindowsCurrentVersionRun”, hKey)

if ret=0 then

ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)`注意ByVal千万别忘了

end if

在得到某个value的数据类型和数据长度后,我们将根据不同的数据类型进行不同的处理。下面分别叙述之。

a-->数据类型为REG_SZ

这种方式最简单,只需要在上面的语句结束之后使用以下语句就可以得到正确的字符串。eg:

ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)

S=String(lenData,Chr(0))

RegQueryValueEx hKey, Name, 0, typeData, ByVal S, lenData `注意ByVal千万别忘了

S=Left(S,InStr(S,Chr(0))-1)

b-->数据类型为REG_EXPAND_SZ

所谓REG_EXPAND_SZ类型的字符串是指字符串中可能含有%WinDir%之类的字符串[%WinDir%表示Windows所在目录我们可以在Ms-Dos方式下使用set命令来看看这类字符串,我们也许还会看到诸如TMP,PATH,WINBOOTDIR这些和WinDir类似的具有特殊意义的字符串。],遇到这类字符串,我们还必须调用另一个API函数ExpandEnvironmentStrings来将它展开[比如%WinDir%就展开为C:WINDOWS],

以下是ExpandEnvironmentStrings的描述和用法:

Declare Function ExpandEnvironmentStrings Lib “kernel32” Alias “ExpandEnvironmentStringsA” (ByVal lpSrc As String, ByVal lpDst As String, ByVal nSize As Long) As Long

参数 类型及说明

lpSrc String,欲扩充的字串

lpDst String,扩充过后的字串

nSize Long,lpDst的长度。

注意预先对lpDst进行初始化,使其与这个长度相符

函数调用例:

Dim S2 As String

`先利用RegQueryValueEx函数获得某个value的数据类型和数据的长度

ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)

S = String(lenData, Chr(0))

RegQueryValueEx hKey, Name, 0, typeData, ByVal S, lenData

S = Left(S, InStr(S, Chr(0)) - 1) `S为读取出来的字符串

S2 = String(Len(S) + 256, Chr(0))`S2为扩展之后的字符串

ExpandEnvironmentStrings S, S2, Len(S2)

S2= Left(S2, InStr(S2, Chr(0)) - 1)

c-->数据类型为REG_MULTI_SZ

REG_MULTI_SZ为多重字符串,其结构如下:

字符串1chr(0) 字符串2chr(0) ... 字符串Nchr(0) chr(0)

下面的自定义子程序的功能是取得多重字符串中每一个字符串。

Sub MultiStringToStringArray(S As String, S2 As String)

`S为我们读取出来的多重字符串

`S2为转换后的字符串数组

Dim count As Integer, pos As Integer, pos2 As Integer, idx As Integer

pos = InStr(S, Chr(0))

While pos > 0 count = count + 1

pos = InStr(pos + 1, S, Chr(0))

Wend

`取得多重字符串中的字符串个数

count = count - 1

ReDim S2(0 To count - 1)

pos = 1

For idx = 0 To count - 1

pos2 = InStr(pos, S, Chr(0))

S2(idx) = Mid(S, pos, pos2 - pos)

pos = pos2 + 1

Next

End Sub

在调用MultiStringToStringArray之前,要先定义一个不含任何元素的字符串数组。子程序调用例子如下:

S= “WGL”+chr(0)+“LOVE”+chr(0)+“MEISHAN”+chr(0)+chr(0)

Dim S2() As String

MultiStringToStringArray S,S2

那么执行之后,S2(0)=“WGL”,S2(1)=“LOVE”,S2(2)=“MEISHAN”

d-->数据类型为REG_DWORD,REG_DWORD_BIG_ENDIAN

`先利用RegQueryValueEx函数获得某个value的数据类型和数据的长度

Dim L As Long

ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)

RegQueryValueEx hKey, Name, 0, typeData, L, lenData

e-->数据类型为REG_BINARY

`先利用RegQueryValueEx函数获得某个value的数据类型和数据的长度

ret = RegQueryValueEx(hKey, Name, 0, typeData, ByVal vbNullString, lenData)

ReDim bArr(0 To lenData - 1) As Byte

RegQueryValueEx hKey, Name, 0, typeData, bArr(0), lenData

一个完整的例子请下载后自行研究。

用VB编写登录程序VB 篇7

下面就笔者在工作中用VB软件编写带字幕功能的视频播放器作一介绍。

1 系统的功能组成

整个系统由“视频播放”、“实时字幕”两个功能组成。

1.1“视频播放”模块

该模块主要完成对大多数音视频文件实现按需播放, 包括:WMV、RMVB、AVI、MPG、VOB等。

1.2“实时字幕”模块

该模块可在进行视频播放的同时, 实时地在屏幕下方滚动播出字幕, 通过校园电视系统传播到教室、寝室供同学们适时观看。

2 主要的设计与实现

首先, 打开Visual Basic, 在"文件"菜单中, 单击"新建工程"。在"新建工程"对话框中, 单击"标准EXE"。单击"确定"如图1。

在“工程”菜单中, 单击“部件”, 给我们的工程添加两个部件“Windows Media Player”、“Microsoft Common Dialog Control 6.0 (SP6) ”, 给我们添加控件做好准备。如图2。

选择Form1窗体, 在Form1窗体中添加2个Label控件, 1个CommandButton控件, 1个TextBox控件, 1个Timer控件, 1个CommonDialog控件和1个WindowsMediaPlayer控件,

安放位置如图3, 属性设置分别见表1。

第二步, 我们要输入代码来实现各种功能。

因为播放器的功能需要, 我们把FORM1窗体的BorderStyle设为None, WindowState设置为Maximize, 这时窗体就没有关闭、最大化和最小化按钮了, 所以需要给播放器增加退出功能, 双击“command1”控件, 加入代码

因为视频画面的需要, 我们将“command1”控件的Visible属性设为“False”即“command1”控件不可见, 所以要关闭播放器时, 必须让“command1”控件显示出来, 笔者的思路是通过双击滚动字幕来实现, 代码如下:

我们要让字幕动起来, 就需要给Timer1加入以下代码

字幕肯定不能一成不变, 如何输入新的内容呢?笔者的思路是通过敲击“Enter”, 将在“Text1”中输入的新内容传送到Lable1, 实现的代码如下:

到此, 请按”F5”运行, 带字幕功能的视频播放器就可以使用了, 见图4。

3 结束语

vb程序设计课程设计题目 篇8

一.题目:

1.记事本的设计与实现 2.学生成绩管理系统 3.弹球游戏

4.图书馆管理系统 5.打字练习程序 6.超市销售管理 7.小型测试系统 8.仓库管理系统 9.猜数字游戏 10.工资管理系统 二.要求和说明:

1.自己独立完成,最终提交课程设计报告和实验成果

2.对各个系统实现功能进行分析并设计好系统界面,要求界面设计美观方便

3.课程设计报告格式:封面、题目、时间地点、要求、内容、详细步骤和过程、总结 1)功能描述

对系统要实现的功能进行确切的描述。

2)概要设计

根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系

3)详细设计

详细说明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。

4)效果及存在问题

说明系统的运行效果(附上界面图形)、存在哪些不足以及预期的解决办法。

5)心得 :谈谈在课程设计过程中的心得体会。4.指定时间必须在实验机房上机

5.最终成绩包括平时成绩(30%)和最终考核成绩(70%)

6.实验设计内容必须以老师指定的题目为准,老师指定的题目为最终检查的依据 三.内容:

1. 仿照windows记事本应用程序,要求实现新建,打开,保存文件,对文本进行字体颜色编辑,对文本实现查找,能够复制粘贴功能。

2. 学生成绩管理系统要求实现用户登陆管理,浏览、添加、删除和修改学生的成绩信息,提供多种成绩的查询方式。1)登陆模块

每个用户只有三次登陆机会,三次均未能输入正确的用户名和密码,系统将强行推出。参考界面如下所示

2)主控模块

进入系统主界面后,自动打开学生成绩数据库,“学号”,“姓名”,“班级”,“英语”,“VB”,“数据库”6个字段分别绑定相应文本框,“总分”和“平均分”的内容根据“英

语”,“VB”,“数据库”文本框内容的改变而改变。

单击“首记录”,“尾记录”,“上一条”,“下一条”按钮可以浏览数据库,但不能修改记录。通过选择相关菜单命令可以执行相应的操作。其中执行“输入”和“修改”命令后,“首记录”和“尾记录”按钮隐藏,“上一条”,“下一条”按钮变为“确定”和“取消”按钮,参考界面如下:

3)查询模块

可以通过选择不同的菜单命令进入查询模块后,根据用户输入不同的查询条件在查询窗体中显示查询菜单,参考图如下所示:

根据不同的查询所得查询界面参考下图:

3.弹球游戏要求理解游戏玩法,正确设计游戏规则,合理设计实现算法,参照演示程序实现功能。

4.图书馆管理系统要求实现功能有:用户登陆,图书的借阅和归回,图书信息的添加,修改,查询和删除操作。

5.打字练习程序要求自行设计程序界面,能够实现打字测试和打字练习功能,对打字正确率和速度进行测试,并给出测试结果。

6. 超市销售管理系统要求实现登陆管理,超市销售商品管理(销售商品的添加、删除和修改)查看超市的全部销售记录,可按销售记录号、销售商品名称查询相关销售记录、销售统计等功能。

7.小型测试系统的设计与实现要求能够随机生成20道数学计算题(要求有加,减,乘,除运算,规定操作数的个数),对用户结果进行判断,并能最终计算总成绩,要求用户在规定的时间内做完试题,超时自动终止并给出成绩。

8.仓库管理系统要求实现注册登陆功能,对仓库信息的添加、删除和修改,入库和出库的登记和查询操作等。

9.猜数字游戏要求:游戏开始电脑随机产生一个数字不重复的四位数;将猜的数填在框内按回车或者确定按钮提交;电脑会将提交的数与它自动产生的数进行比较,结果显示成“*A*B”。A代表位置正确数字也正确,B代表数字正确但位置不正确,比如:“2A2B”表示有2个数字的位置正确且数值也正确,除此以外,还猜对了2个数字,但位置不对;共有10次机会,在10次内,如果结果为“4A0B”,游戏成功。如果10次里都没有猜对游戏失败。

用VB编写登录程序VB 篇9

用VB 设计条形码轻印刷系统

---- 条 形 码 技 术 简 介

---- 条 形 码 作 为 一 种 识 别 输 入 技 术, 由 于 其 显 而 易 见 的 快 速、 准 确、 低 廉 等 优 点, 被 广 泛 应 用 于 商 品 流 通、 图 书 馆 管 理 等 众 多 的 自 动 化 管 理 系 统 中。

---- 条 形 码 是 利 用 条( 着 色 部 份)、 空( 非 着 色 部 份) 及 其 宽、 窄 的 交 替 变 换 来 表 达 信 息。 每 一 种 编 码, 都 制 定 有 字 符 与 条 空、 宽 窄 表 达 的 对 应 关 系, 只 要 遵 循 这 一 标 准 打 印 出 来 的 条、 空 交 替 排 列 的“ 图 形 符 号”, 这 一“ 图 形 符 号” 中 就 包 含 了 字 符 信 息; 当 识 读 器 划 过 这 一“ 图 形 符 号” 时, 这 一 条、 空 交 替 排 列 的 信 息 通 过 光 线 反 射, 在 识 读 器 内, 这 种 光 信 号 被 转 换 成 数 字 信 号, 再 经 过 相 应 的 解 码 软 件, 就 能 将“ 图 形 符 号” 还 原 成 字 符 信 息。

---- 三 九 码 是 一 种 应 用 比 较 普 遍 的 条 形 码, 它 长 度 可 变、 可 校 验, 容 纳 的 字 符 多 达43 个( 包 括 数 字0~9、 字 母A~Z 及 其 它 七 个 特 殊 字 符)。 由 于 在 表 示 每 一 字 符 时, 使 用9 个 元 素, 其 中3 个 宽 元 素、6 个 窄 元 素, 故 名39 码, 这3 个 宽 元 素 中 必 须 有 两 个 是 条( 有 四 个 特 殊 用 途 的 字 符 除 外)。 如 字 母“J” 的 编 码 规 则 为:“N N N N W W W N N”, 其 中N 表 示 窄 元 素,W 表 示 宽 元 素, 奇 数 位 为 条 元 素, 偶 数 位 为 空 元 素, 宽 窄 元 素 的 宽 度 尺 寸 比 为2~3, 且 在 同 一 个 条 码 中 必 须 是 固 定 的。 在 打 印 制 作 条 形 码 时, 条 是 需 要 打 印( 着 色) 的, 而 空 元 素 内 不 必 打 印 的, 不 过 要 将 其 宽 度 计 算 在 内。 对 于 某 一 要 打 印 的 字 符 串, 按 其 先 后 顺 序 打 印, 串 前 串 后 各 加 一 个“*” 符 号 做 为 起 始 符 与 终 止 符, 相 邻 的 字 符 间 在 打 印 时 由“ 位 空” 分 隔,“ 位 空” 类 似 空 元 素, 即 不 着 色 部 分, 其 宽 度 应 小 于1.35mm, 为 编 程 方 便, 通 常 取 为 一 个 窄 元 素 的 宽 度。

---- 条 形 码 的 制 作 有 制 版 印 刷、 轻 印 刷 两 种 方 式, 轻 印 刷 是 指 使 用 普 通 打 印 机, 在 计 算 机 控 制 下 制 作 条 形 码。 这 种 制 作 方 法 灵 活, 成 本 较 低, 即 适 宜 于 同 一 号 码 的 单 条 制 作, 也 可 用 于 同 一 号 码 的 大 量 制 作, 这 一 特 点 是 制 版 印 刷 无 可 替 代 的。 使 用 计 算 机 软 件 打 印 条 形 码, 其 原 理 是 将 条 形 码 作 为 图 形 来 看 待, 用 编 程 语 言 中 的 绘 图 语 句- 画 矩 形 框, 在 相 应 的 坐 标 上 画 出 各 种 宽 度 不 同 的 条 元 素, 这 样 即 可 实 现 条 形 码 的 计 算 机 软 件 打 印。

---- VB 中 几 种 打 印 功 能 在 条 码 打 印 时 的 比 较

---- Visual Basic 是近年 来 比 较 流 行 的 编 程 语 言, 功 能 强 大, 易 学 易 用。Visual Basic 对 打 印 功 能 提 供 了 两 种 输 出 方 式: 一 是 首 先 将 条 码 输 出 到 某 一 对 象, 再 使 用 该 对 象 中Print 方 法, 将 其 输 出 到 打 印 机; 二 是 使 用 打 印 机 对 像Printer 绘 图。 下 面 对 这 种 方 法 做 个 比 较:

---- 一、 将 条 形 码 图 在 窗 体 上 绘 出, 再 使 用PrintForm. 方 法 打 印 窗 体。

窄 条 打 印:Line (x,y)-step(i,h),,bf

宽 条 打 印:Line (x,y)-step(3*i,h),,bf 或

Line (x,y)-step(2*i,h),,bf

---- 再 使 用formname.PrintForm. 将 条 形 码 输 出 到 打 印 机。

---- 在 这 种 方 式 下, 窗 体 的 量 度 单 位 可 以 有:twip, point, picel 三 种 其 中 以twip 为 单 位 为 最 小。

---- 以twip 为 单 位, 对 条 形 码 来 说, 打 印 精 度 可 达30, 即 当 窄 元 素 宽 度 必 须 等 于 或 大 于30 时, 打 印 出 来 的 条 形 码 可 以 阅 读, 若 窄 元 素 的 宽 度 小 于30, 条 形 码 中 相 邻 的 条 会 粘 连 在 一 起, 无 法 识 读。 当 窄 元 素 宽 度 为30 时,“J10059” 六 位 字 符 条 码 尺 寸 为:67mm。

---- 以Picel 为 单 位, 打 印 精 度 可 达2, 当 窄 元 素 宽 度 为2 时,“J10059” 六 位 字 符 条 形 码 尺 寸 为80 mm 以 上。

---- 以Point 为 单 位, 打 印 精 度 可 达2, 当 窄 元 素 宽 度 为2 时,J10059 六 位 字 符 条 形 码 尺 寸 为110MM。

---- 二、 直 接 使 用Printer.Line , 在 打 印 机 上 绘 画- 画 矩 形 框

窄 条 打 印:Printer.Line (x,y)-Step(i,h),,bf

宽 条 打 印:Printer.Line (x,y)-Step(3*i,h),,bf 或

Printer.Line (x,y)-Step(2*i,h),,bf

---- 用Printer.Line 打 印, 量 度 单 位 为 点, 最 小 精 度 为 达10, 当 窄 元 素 宽 为10 时,J10059 六 位 字 符 之 条 码 尺 寸 为:21MM。

---- 根 据 以 上 的 比 较, 使 用 第 二 种 方 法 打 印 输 入 的 条 形 码 精 度 最 高( 同 样 的 字 符 数, 尺 寸 最 短)。 很 显 然, 不 同 的 打 印 方 式, 分 别 有 不 同 的 适 用 范 围, 对 尺 寸 宽 度 要 求 不 高 的 情 况 下, 可 以 使 用 第 一 种 打 印 方 式, 若 对 条 形 码 尺 寸 要 求 较 严 格, 则 使 用 第 二 种 打 印 方 式 更 合 适。

---- 软 件 设 计

---- 一、 菜 单 设 计: 由 于 条 形 码 轻 印 刷 软 件 相 对 说 来 是 一 个 很 小 的 系 统, 需 要 选 择 的 项 目 不 多, 可 以 不 设 置 菜 单, 而 将 全 部 的 操 作 由 窗 体 控 件 来 完 成,

如 果 使 用 上 述 的 第 一 种 打 印 方 式, 则 必 须 建 立 另 一 窗 体, 用 于 第 一 步 的 输 出 条 形 码 图 形。

---- 二、 设 计 窗 体 控 件: 窗 体 中 的 控 件 包 括 两 大 类, 即: 参 数 设 置 框、 打 印 操 作 按 钮。 本 列 设 计 的 窗 体 见 图 示。 本 列 给 出 的 是 一 个 对 参 数 没 有 设 置 功 能 的 窗 体, 有 兴 趣 的 读 者 可 以 在 此 基 础 上 自 行 补 充 它。

---- 对 于 打 印 参 数, 对 条 形 码 的 打 印 来 说, 需 要 指 定 的 参 数 大 致 有: 条 码 宽 窄 比: 3:1~2:1; 条 码 高; 窄 元 素 宽 度; 打 印 机 类 型 及 端 口; 打 印 份 数; 打 印 纸 尺 寸 规 格; 每 行 条 形 码 数; 每 个 条 码 的 字 符 数; 是 否 自 动 增 值 打 印; 增 值 步 长; 每 一 页 行 计 数 起 止 数; 终 止 码 等。

---- 本 列 设 计 了 八 个 按 钮, 其 作 用 分 别 是:

---- Begin- 单 号 条 形 码 打 印 开 始

---- Auto- 自 动 增 值 打 印 开 始

---- Page- 将 打 印 机 内 存 中 的 条 码( 不 足 一 页) 打 印 出 来

---- Cancel- 中 止 自 动 增 值 打 印

---- Delete- 清 除 打 印 机 内 存 中 的 未 打 印 条 码

---- Help- 帮 助 信 息

---- About- 版 本 及 设 计 信 息

---- Exit- 关 闭 系 统

---- 三、 程 序 流 程:

---- 在 本 例 中, 条 形 码 的 打 印 分 为 单 号 打 印; 自 动 增 值 打 印 两 种。 单 号 打 印, 是 用 户 输 入 一 个 或 几 个 需 要 打 印 的 号 码 的 打 印 方 式; 而 自 动 增 值 打 印 是 用 户 指 定 起 始 号、 终 止 号 及 增 加 步 长, 由 机 器 自 动 生 成 被 打 印 号 码 来 打 印。 其 实 这 两 种 方 式 在 打 印 时 的 操 作 是 完 全 一 样 的, 不 同 之 处 在 于 被 打 号 码 的 获 取, 需 要 注 意 的 是 由 于39 码 字 符 集 中 包 括 字 符, 在 自 动 增 值 时 要 与 纯 数 字 码 区 别。

---- 下 面 以 单 号 打 印 为 例, 介 绍 条 形 码 打 印 的 程 序 流 程。

---- 1 . 检 查 各 项 参 数 设 置 是 否 完 全 正 确, 若 正 确, 则 继 续, 否 则 退 出;

---- 2 . 获 取 各 项 参 数 设 置;

---- 3 . 为X 坐 标 取 初 值( 纸 的 左 边 打 印 边 界);

---- 4 .( 循 环A) 是 否 打 印 完 一 行(I 条 条 码) ? 是 则 转14;

---- 5 . 本 条 条 码 是 否 为 空 ? 是 则 将 横 坐 标 加 上 一 条 条 码 之 宽 度;

---- 6 . 打 印 起 始 符;

---- 7 .( 循 环B) 是 否 打 印 完 本 条 条 码(J 个 字 符) ? 是 则 转10;

---- 8 . 打 印 一 个 字 符 的 条 码;

---- 9 .( 循 环B) 下 一 个 字 符;

---- 10 . 打 印 终 止 符;

---- 11 . 修 改X 坐 标;

---- 12 .( 循 环A) 下 一 条 条 码

---- 13 . 修 改Y 坐 标;

---- 14 . 打 印 本 行 每 一 条 码 的 人 工 识 别 字 符;

---- 15 . 本 页 是 否 已 打 满 ? 是 则 打 印, 并 对 新 页 坐 标 初 始 化;

---- 16. 退 出

---- 四、 程 序 代 码:

---- 用 于 检 查 参 数 设 置 正 确 性 的 程 序 主 要 从 各 项 参 数 间 的 关 系 去 检 查。 如 根 据 使 用 的 宽 度、 高 度、 每 行 条 码 数, 判 断 是 否 超 出 了 纸 的 打 印 范 围; 输 入 的 号 码 是 否 合 法 等。

---- 可 以 为 每 字 符 设 计 一 段 各 自 的 打 印 程 序, 这 种 方 式 编 程 简 单。 也 可 以 将 打 印 程 序 与 条 形 码 的 编 码 规 则 分 离, 通 过 参 数 传 递 某 一 字 符 的 编 码 规 则, 不 同 的 字 符 共 享 同 一 打 印 程 序。 本 列 采 用 前 一 种 方 式。 如 字 母“J” 的 编 码 规 则 为:“N N N N W W W N N”, 打 印 程 序 代 码 如 下:

Private Sub prn_J

Printer.Line (x, y)-Step(widt, high), , BF 注释:打印窄条

x = x + widt 注释:改变X坐标

x = x + widt 注释:打印窄空

Printer.Line (x, y)-Step(widt, high), , BF

x = x + widt

x = x + widt

Printer.Line (x, y)-Step(w_n * widt, high), , BF 注释:打印宽条

x = x + w_n * widt 注释:改变X坐标

x = x + w_n * widt 注释:打印宽空

Printer.Line (x, y)-Step(w_n * widt, high), , BF

x = x + w_n * widt

x = x + widt

Printer.Line (x, y)-Step(widt, high), , BF

x = x + widt

x = x + widt 注释:打印位空

End Sub

---- 其 中x,y 分 别 为 坐 标 值,w_n 为 宽 窄 元 素 宽 度 比, widt 为 窄 元 素 的 宽 度 值( 点), high 为 条 形 码 高 度, 每 打 印 一 个 条 元 素, 应 立 即 改 变X 坐 标, 以 便 打 印 下 一 个 元 素; 打 印 空 元 素 时, 由 于 是 不 着 色, 只 需 改 变X 坐 标 即 可; 每 一 个 字 符 打 印 结 束 时, 应 打 印 一 个 位 空( 本 列 中 位 空 宽 度 等 于 窄 空)。 其 它 的42 个 字 符 的 编 码 规 则, 读 者 可 以 在 有 关 条 形 码 技 术 的 文 献 中 查 到。

上一篇:《学前儿童卫生保健》教案下一篇:圣诞节的礼物350字作文300字