最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Visual Basic程序设计基础

来源:动视网 责编:小OO 时间:2025-09-29 21:32:53
文档

Visual Basic程序设计基础

第3章VisualBasic程序设计基础VisualBasic是一种可视化的、面向对象的和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、高效而且功能强大。在VisualBasic环境下,Windows的编程复杂性被巧妙地封装起来,利用事件驱动的编程机制和可视化的设计工具,使用Windows的应用程序接口(API)函数、动态链接库(DLL)、动态数据交换(DDE)、对象链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术,程序员可以方便地
推荐度:
导读第3章VisualBasic程序设计基础VisualBasic是一种可视化的、面向对象的和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、高效而且功能强大。在VisualBasic环境下,Windows的编程复杂性被巧妙地封装起来,利用事件驱动的编程机制和可视化的设计工具,使用Windows的应用程序接口(API)函数、动态链接库(DLL)、动态数据交换(DDE)、对象链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术,程序员可以方便地
第3章  Visual Basic 程序设计基础

    Visual Basic是一种可视化的、面向对象的和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、高效而且功能强大。在Visual Basic环境下,Windows的编程复杂性被巧妙地封装起来,利用事件驱动的编程机制和可视化的设计工具,使用Windows的应用程序接口(API)函数、动态链接库(DLL)、动态数据交换(DDE)、对象链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术,程序员可以方便地建立图形对象,高效、快速地开发出功能强大、图形界面丰富的应用程序系统。

       本章知识结构:

3.1  Visual Basic基本常识

3.1.1  Visual Basic集成开发环境

    1、Visual Basic的特点

    总结Visual Basic的特点,有如下几条:

    (1)可视化编程;

    (2)面向对象的程序设计;

    (3)结构化程序设计语言;

    (4)事件驱动编程机制;

    (5)数据库访问能力;

    (6)其它功能:动态链接库(DLL)、动态数据交换(DDE)、对象链接与嵌入(OLE),Internet组件下载等。

    关于Visual Basic的特点的记忆,学习者可以通过学习后面的知识加以体会,不必急欲强行理解。

    2、Visual Basic的集成开发环境

    要想掌握一门语言并灵活地使用该语言工作,则必须了解和掌握该语言提供的工作环境。启动Visual Basic,打开如图3-1所示的集成开发环境。

图3-1  Visual Basic集成开发环境

    (1)窗体设计器窗口

    窗体设计器窗口简称窗体(Form),是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。各种图形、图像、和数据等都是通过窗体或窗体中的控件显示出来的。Visual Basic应用程序的绝大部分工作都是在窗体上完成的,所以说,窗体是Visual Basic的主要工作界面。

    (2)工程资源管理器窗口

    该窗口含有建立应用程序所需要的所有文件的清单。文件的类型有:窗体文件(.frm)、程序模块文件(.bas)、类模块文件(.cls)、工程文件(.vbp)、工程组文件(.vbg)、资源文件(.res)。

    (3)属性窗口

    属性窗口主要用于在设计阶段对窗体及其控件进行属性设置。窗口中,属性可以按字母顺序进行排列,也可以按分类进行排序。在实际应用中,没有必要对某个对象的所有的属性进行设置,很多属性可以取默认值。

    (4)工具箱窗口

    工具箱窗口由工具图标组成,这些工具图标被称为图形对象或控件,主要用于应用程序的界面设计。

    3、Visual Basic的其它窗口

    在图3-1中,显示了Visual Basic集成环境中的主要窗口,除此之外,还有一些窗口需要关注的。例如,调色板窗口、立即窗口、代码编辑窗口、本地窗口以及监视窗口等

    (1)代码编辑窗口

    代码编辑窗口如图3-2所示。

图3-2  代码编辑窗口

    代码编辑窗口用于编写、显示和修改Visual Basic的程序代码,用户可同时打开多个代码编辑窗口。代码编辑窗口中含有对象框、过程/事件框、代码编辑区、过程查看图标和全模块查看图标。 

    (2)调试窗口

    调试窗口包括立即窗口、本地窗口和监视窗口,这些窗口只有在运行应用程序时才有效。

    使用立即窗口可以在中断状态下查询对象的值,也可以在设计时查询表达式的值或命令的结果。

    在本地窗口内可自动显示所有在当前过程中的变量声明及变量值。

    监视窗口是用来监视各种变量和表达式的。将变量和表达式加到监视表达式列表中,可选出想要VB监视的表达式。 

3.1.2  Visual Basic对象及其操作

    1、对象的概念

    对象是程序可以控制的运行实体,是能够把数据(属性)和代码(行为方式)看为一个整体的集合。程序依靠对象的特定动作来完成特定的任务。Visual Basic的对象具有封装性和继承性。

     对象由三大要素构成,即属性、方法和事件。

    (1)属性

    属性是指描述对象的一组特征。不同的对象具有不同的属性。改变对象的属性即改变对象的特征。

    对象常用属性:名称(Name)、标题(Caption)、字体(Font)、颜色(Color)、有效性(Enabled)、可见性(Visible)。

    对象的属性可以在属性窗口中设置,也可以在程序中用代码来设置。在程序中的设置方法:

    【格式】对象名.属性名=属性值

    【功能】给对象的属性赋值。

    (2)方法

    方法指对象要执行的某些特定动作。可以把方法理解成对象的内置函数,用户可以直接调用。

    常用的方法有打印(Print)、显示(Show)、移动(Move)、清空(Cls)等。

    方法的操作和过程、函数的操作相同,其调用格式是:

    【格式】 对象名.方法名 [参数列表]

    【功能】 调用对象的方法。

    (3)事件

    事件是由Visual Basic预先设置好的,能被对象识别的动作以及由动作引发的结果。引发的结果需要编写代码来设定,这段代码称为事件过程。

    常见的事件主要有:单击(Click)、双击(DblClick)、装入(Load)、键按下(KeyPress)、鼠标移动(MouseMove)等。不同的对象能识别不同的事件。

    事件过程的一般格式如下:

        Private Sub 对象名_事件名([参数列表])

          ……

          事件响应程序代码

          ……

        End Sub

    2、窗体

    窗体是创建应用程序的基础。窗体对象是Visual Basic应用程序的基本构造模块,是运行应用程序时与用户交互操作的实际窗口。

    窗体有自己的属性、方法和事件,控制窗体的外观和行为。可以通过使用属性定义窗体的外观;用方法定义窗体的行为;用事件定义窗体与用户的交互。

    (1)属性

        窗体常见的属性见表3-1。窗体属性供分为7大类: 

    ● DDE类:控制对象间的对话。    ● 缩放类:用于调整控件位置或使用图形方式时的缩放控制。

    ● 外观类:控制窗体的外部形态。 ● 位置类:控制窗体在屏幕上的位置。

    ● 行为类:控制窗体的行为动作。 ● 杂项类:没有规律的一些属性。

    ● 字体类:设置窗体标题等文字的显示方式。

    (2)方法:

    窗体常用的方法不多,见表3-2。

    表3-2  窗体常用的方法

方 法

描     述

方  法

描     述

Add添加一个成员到Collection对象

PrintForm用以将Form对象的图象逐位发送给打印机。

Cls清除运行时Form或PictureBox所生成的图形和文本。

SetFocus将焦点移至指定的控件或窗体。
Hide用以隐藏MDIForm或Form对象,但不能使其卸载。

Show用以显示MDIForm或Form对象。

    表3-1  窗体的关键属性

属  性

描     述

属  性

描     述

AutoReDraw控制屏幕图像的重画MaxButton显示窗体右上角的最大化按钮
BackColor设置窗体的背景颜色MinButton显示窗体右上角的最小化按钮
BorderStyle确定边框的类型Name定义窗体的名称
Caption定义窗体的标题Picture在窗体中显示图形文件
ControlBox设置控制框的状态Top、Left

设置窗体上边和左边的坐标值
Enabled定义窗体可用或不可用Height、Width

设置窗体的高度和宽度
ForeColor定义文本和图形的前景颜色Visible设置窗体的可见性
Icon设置窗体最小化时的图标WindowState设置窗体初始显示、操作状态
    (3)事件

    常用的窗体事件有以下几种:

    ● 单击(Click)事件:在对象上按一次鼠标左键时发生。

    ● 双击(DblClick)事件:在对象上连续按两次鼠标左键时发生。

    ● 键盘事件——KeyDown:按下某键时发生。KeyUp:放开某键时发生。

                   KeyPress:按某些特定的键(字母、数字、符号键)时发生。

    ● Load(装入事件)——在装入窗体时发生,可用于在启动程序时进行初始化。

    ● UnLoad(卸载事件)——在内存中清除一个窗体或对象时发生。

    ● Activate(活动事件)——当窗体变成活动窗体时发生。

    ● Deactivate(非活动事件)——当另一个窗体变成活动窗体时发生。

    ● Paint(绘画事件)——当窗体被移动、被放大,或在移动时覆盖了一个窗体时发生。

    ● Initialize(初始化事件)——在创建窗体对象的一个实例时发生。

    3、控件

   (1)控件的分类

    Visual Basic控件分为三类:

    ● 标准控件:由Visual Basic的可执行文件提供,启动后出现在工具箱里,但不能添加和删除。

    ● ActiveX控件:是扩展名为.ocx的文件,又称为OLE控件或定制控件。

    ● 可插入控件:指可添加到工具箱中的对象,当伪控件使用。

    (2)控件的命名和控件值

    为了提高程序的可读性,最好用一个有意义的名字为控件的Name属性赋值,通过该值,可以看出对象的类型和用途。表3-3列出了窗体和内部控件建议的使用的前缀。

    同时,为了方便使用,Visual Basic为每一个控件规定了一个默认值,在设置这样的属性时,不必给出属性名,通常把该属性称为控件的值。例如:文本框的控件值为“Text”,则:

               Text1.text=“欢迎使用Visual Basic6.0”

等同于:       Text1=“欢迎使用Visual Basic6.0”

    表3-3列出了部分控件的控件值。

    表3-3  Visual Basic对象命名约定和控件值。

对  象

前  缀

控件值(属性)对  象

前  缀

控件值(属性)
FormFrmTimerTmr
PictureBoxPicPictureDriveListBoxDrvDrive
LabelLblCaptionDirListBoxDirpath
FramefraCaptionFileListBoxFilFilename
CommandButtonCmd或btn

ValueShapeShpShape
CheckBoxchkValueLinelinVisible 
OptionButtonOptValueImageImgPicture
ComboBoxCboTextDataDatcaption
listBoxLstOLEole
HScrollBarHsbValue DBComboText
VScrollBarVsbValueDBGridText
CommonDialogCdlAction DBListText
GridgrdTexttxttext
3.1.3  例题解析

    1、选择题:

    (1)与传统的程序设计语言相比,Visual Basic最突出的特点是

        A)结构化程序设计             B)程序开发环境

        C)事件驱动编程机制           D)程序调试技术

    解析:本题测试的是Visual Basic的特点。Visual Basic与传统的程序设计语言相比较,既有相同的特点,也有不同的地方。最大的不同是传统的程序设计语言是面向过程的,数据和操作是分离的,程序的执行是按事先规定的次序进行的;而Visual Basic是面向对象的,数据和操作是封装的,是通过事件驱动程序调用过程来执行指定的操作,不必建立具有明显的开始和结束的程序。

    答案:C

    (2)下列不能打开“属性窗口”的操作是

        A)执行“视图”菜单中的“属性窗口”命令          B)按F4键

        C)单击工具栏上的“属性窗口”按钮               D)按“Ctrl+T”组合键

    解析:本题测试的是属性窗口的启动方法。在Visual Basic中,如果属性窗口未被打开,则有四种方法可以将其打开。分别是执行“视图”菜单中的“属性窗口”命令;按F4键;单击工具栏上的“属性窗口”按钮;在窗体设计器中,右击某一对象,在出现的快捷菜单中单击“属性窗口”菜单项。

    答案:D

    (3)在Visual Basic的集成环境中,下列“保存工程”菜单命令的热键是

        A)A1t + E               B)Ctrl + S 

        C)A1t + O               D)Ctrl + O 

    解析:本题测试的是工程文件保存的热键方法。Visual Basic的集成环境中,有很多菜单命令都有相应热键以方便编程人员的快速操作,对于一些常用命令的热键,程序员应该会熟练的操作。如:

    “打开工程”命令: Ctrl + O    ;    “新建工程”命令: Ctrl + N

    “保存工程”命令: Ctrl + S    ;    “运行程序”命令: F5

    “单步调试”命令: F8

    答案:B

    (4)以下可以产生工程组文件(.vbg)的情况为

        A)当一个程序包含两个以上工程时            B)当一个程序包含两个以上窗体时

        C)当一个程序包含两个以上类模块时          D)当一个程序包含两个以上程序模块时

    解析:本题测试的是工程文件组的概念。当一个程序包含两个以上的工程时,此时工程构成一个工程组,工程组文件的扩展名是.vbg。其中g表示group(组)的含义。

    答案:A

    (5)以下不属于Visual Basic系统的文件类型是

        A).frm        B).bat        C).vbg        D).vbp

    解析:本题测试的是Visual Basic文件的类型。.frm 是窗体文件的扩展名;.vbg 是工程组文件的扩展名;.vbp 是工程文件的扩展名;.bat 是批处理文件的扩展名。将一些命令放在一个扩展名为.bat批处理文件中,执行该文件时,计算机逐条执行文件中的每一个命令,可以减少交互的时间。

    答案:B

    (6)在刚刚建立的一个新的标准EXE工程后,不在工具箱中出现的控件是

        A)单选钮        B)图片框        C)通用对话框          D)文本框

    解析:Visual Basic的常用控件包括单选按钮(OptionButton)、图片框(PictureBox)、文本框(TextBox)等在内一共有20种。通用对话框(commondialog)控件必须在工具箱上单击鼠标右键选择“部件”,当选中“Microsoft Common Dialog Control”后才能出现在工具箱上。

    答案:C

    (7)确定一个控件在窗体上的位置的属性是

        A)Width 和 Height            B)Width 或 Height

        C)Top 或 Left                 D)Top 和 Left

    解析:本题测试的是控件在窗体上的位置性质。Width 是宽度参数,Height是高度参数。Top是上端位置参数,Left是左端位置参数。所以,Top 和 Left 确定了控件在窗体上的位置,而Width 和 Height确定了控件在窗体上的大小。

    答案:D

    (8)以下叙述中正确的是

        A)窗体的Name属性指定窗体的名称,用来标识一个窗体

        B)窗体的Name属性的值是显示在窗体标题栏中的文本

        C)可以在运行期间改变对象的Name属性的值

        D)对象的Name属性值可以为空

    解析:本题测试的是窗体或控件的Name属性。Visual Basic中的对象都有一个Name属性,能够惟一标识该对象。Name属性不能为空,不能在程序运行时修改,只能在程序设计期间设置。窗体的Caption属性是显示在窗体标题栏中的文本。

    答案:A

    (9)以下关于窗体的描述中,错误的是

        A)执行Unload Form1语句后,窗体Form1消失,但仍在内存中

        B)窗体的Load事件在加载窗体时发生

        C)当窗体的Enabled属性为False时,通过鼠标和键盘对窗体的操作都被禁止

        D)窗体的Height、width属性用于设置窗体的高和宽

    解析:本题测试的是窗体的Load属性。

    窗体的Hide方法和Unload方法是有区别的,Hide方法是将装入内存的窗体隐藏,并没有从内存中卸载,而Unload方法是将窗体从内存中彻底清除。

    窗体的Load事件用来在启动程序时对对象属性和变量进行初始化。程序运行时,将自动触发窗体的Load事件。

    窗体的Enabled属性为False时,该窗体上所有控件,甚至包括窗体本身的操作都被禁止了。

    窗体的Height、Width属性分别用于设置窗体的高度和宽度。

    答案:A

    (10)以下叙述中错误的是

        A)双击鼠标可以触发DblClick事件        B)窗体或控件的事件的名称可以由编程人员确定

        C)移动鼠标时,会触发MouseMove事件     D)控件的名称可以由编程人员设定

    解析:本题测试的是属性Name的命名与修改问题。控件的名称Name属性可以由程序员设定,但也只能在程序设计时设置,不能在程序运行中修改控件的Name属性。窗体或控件的事件名称是由Visual Basic系统指定的,程序员不能修改。

    答案:B

     (11)程序运行后,在窗体上单击鼠标,此时窗体不会接收到的事件是

        A)MouseDown        B)MouseUp        C)Load        D)Click

    解析:本题测试的是与窗体Click事件相关联的事件。在窗体上单击鼠标,分别触发窗体的MouseDown、MouseUp、Click事件过程,不会触发Load事件过程。

    答案:C

    (12)以下属于在程序运行阶段设置属性值的方法为

        A)直接输入新属性的值                B)选择输入,即通过下拉列表选择所需要的属性值

        C)使用代码直接改变某个属性的值      D)利用对话框设置属性值

    解析:本题测试的是属性的设置方法。在设计阶段改变属性的方式有3种,其一,直接输入新同性的值;其二,选择输入,即通过下拉列表选择所需要的属性值;其三,利用对话框设置属性值。使用代码直接改变某个属性的值不能在设计阶段起作用,而是在程序运行阶段起作用。

    答案:C

    (13)要使Form1窗体的标题栏上显示"Hello!",以下语句正确的是

        A)Form1.Caption='Hello'’       B)Form1.Caption="Hello!"

        C)Form1.Caption=Hello!           D)Form1_Caption="Hello!"

    解析:本题测试的是在程序运行中设置属性的方法。如果要在程序运行中更改对象的属性,可以使用Visual Basic的赋值语句的格式是:  对象名.属性=新值   。

    如果属性的值是字符串类型时,要用双引号引起该内容。

    答案:B

    (14)在某窗体中,有—按钮控件,其“Caption”属性的内容为“NEW”,其“Name”属性内容为“Create”,则单击(C1ick)该按钮产生的事件过程应是

        A)Private Sub MnuNEW_C1ick( )           B)Private Sub Create_C1ick( )

        C)Private Sub NEW_Click( )              D)Sub Mnu_Create_C1ick( )

    解析:本题测试的是“Caption”属性和“Name”属性的区别。“Caption”是对象的标题,“Name”是对象的名称。而事件过程的一般格式如下:Private Sub 对象名_事件名([参数列表])。

    答案:B

    (15)有下列程序代码:  Label1.Caption="等级考试"  。其中的Label1、Caption和"等级考试"分别代表

        A)对象、值、属性          B)对象、方法、属性

        C)对象、属性、值          D)属性、对象、值

    解析:本题测试的是在程序代码中,属性的赋值方法。在程序代码中设置对象属性的语句的一般语法格式是:[对象名.]属性名=属性值。

    答案:C

    (16)如果希望一个窗体在显示的时候没有边框,应该设置的属性是

        A)将窗体的标题(Caption)设成空字符        B)将窗体的Enabled属性设置成False

        C)将窗体的BorderStyle设置成0               D)将窗体的ControlBox设置成False

    解析:BorderStyle属性返回或设置对象的边框样式。它对Form(窗体)对象和Text(文本框)控件在运行时是只读的。ControlBox属性返回或设置一个值,指示在运行时控制菜单框是否在窗体中显示。在运行时为只读。窗体对象的BorderStyle的属性值:

    0--None,没有边框或与边框相关的元素;   1-- Fixed Single,固定单边框;

    2--Sizable,(默认值)可调整的边框;     3-- Fixed Dialog,固定对话柜;

    4--Fixed ToolWindow,固定工具窗口;     5--Sizable ToolWindow,可变尺寸工具窗口。

    答案:C

    2、填空题:

    (1)Visual Basic工具栏的右侧有两个栏,分别用来显示窗体的当前位置和大小,其单位为  【1】 ,1英寸等于   【2】   。

    解析:本题测试的是Visual Basic集成开发环境主窗体的组成元素。打开Visual Basic集成开发环境,在主窗体上查看右侧两个栏的变化情况。

    答案:【1】twip  ;【2】1440 twip

    (2)Visual Basic工程文件的扩展名是   【3】   ,窗体文件的扩展名是   【4】   。

    解析:本题测试的是Visual Basic文件类型。Visual Basic文件的类型很多,主要有:窗体文件(.frm)、程序模块文件(.bas)、类模块文件(.cls)、工程文件(.vbp)、工程组文件(.vbg)、资源文件(.res)等。

    答案:【3】.vbp  ;【4】.frm

    (3)通过  【5】  可以在设计时直观地调整窗体在屏幕上的位置

    解析:本题测试的是Visual Basic各种工作窗体的功能。窗体在屏幕上的位置,可以直接通过鼠标拖动进行设置;可以通过窗体的各种位置属性进行设设置;更直接的方法是在“窗体布局窗口”中直接拖动,观看位置效果。

    答案:【5】窗体布局窗口

    (4)为了选择多个控件,可以按住  【6】  键,然后单击每个控件。

    解析:本题测试的是控件的选择方法。在窗体上选择控件有两种方法:其一是,按住“Shift”键,然后单击每个要选的控件;其二是,将光标到窗体中适当的位置(没有控件),然后拖动鼠标画一个虚线矩形,在该矩形内的控件即被选中。

    答案:【6】Shift

    (5)面向对象系统的三要素分别是属性、方法和   【7】   。

    解析:本题测试的是对象的组成要素。面向对象系统的三要素分别是属性、方法和事件。属性、方法是对象的本身性质和行为。而事件是对象响应外部作用的能力。

    答案:【7】事件

    (6)在Visual Basic中,要将一个窗体隐藏到内存中,应使用的语句   【8】   。

    解析:本题测试的是窗体的加载与卸载问题。与窗体加载和退出有关的语句为:Load、Unload、Show、Hide。Load是将窗体加载到内存做预处理而不显示;Show是将内存中的窗体进行显示;Hide是将正在显示的窗体隐藏到内存中;Unload是将窗体彻底从内存中卸载掉。

    答案:【8】Show

    (7)属性窗口主要是针对窗体体和控件设置的。在Visual Basic中,窗体和控件被称为  【9】  。

    解析:本题测试的是面向对象的概念。Visual Basic是面向对象的语言,其对象包括窗体和控件,对象具有自己的属性、事件和方法。属性大都通过属性窗口来设置。

    答案:【9】对象

     (8)创建第一个按钮控件对象时,系统自动为其Name属性分配一个名字,该名字为  【10】  。

    解析:本题测试的是在窗体上创建对象时的默认名称。在Visual Basic中,每个控件对象建立的时候,系统会自动分配一个名字,也就是给该对象的Name属性赋一个值,如第一个窗体对象Name属性值为Form1,第四个文本框对象Name属性值为Text4,第七个命令按钮对象Name属性值为Command7。

    答案:【10】Command1

3.2  Visual Basic程序设计基础

3.2.1  Visual Basic简单程序设计

    1、Visual Basic中几个简单语句

    (1)赋值语句

    Visual Basic赋值语句一般格式:   [Let] 目标操作符=源操作符  。

    源操作符:变量、表达式、常量及带有属性的对象。

    目标操作符:变量及带有属性的对象。

    “=”是赋值号。

    (2)注释语句

    注释语句可以提高程序的可读性。Visual Basic中的注释用“Rem”或一个撇号“’”表示。

    注释语句的一般格式:    Rem  注释内容       或        ’    注释内容

    (3)结束语句(End)

    End语句通常用来结束一个程序的执行,其在不同的环境下有不同的用途。

                End  Sub           结束一个Sub过程

                End  Function      结束一个Function过程

                End  If            结束一个If语句块

                End  Type          结束一个记录类型的定义  

                End  Select        结束一个情况语句

    注意:当Visual Basic多个语句写在同一行中时,语句之间用冒号“:”隔开;一条语句在一行中写不下时,用空格+续行符“_”符号换行。

    2、Visual Basic应用程序开发步骤

    在用Visual Basic开发应用程序时,其步骤如下:

    (1)建立可视化用户界面;

    (2)设置可视界面特性;

    (3)编写事件驱动代码。

    3、Visual Basic程序运行方式

    运行程序的目的有两个,其一是输出结果;其二是发现错误。

    在Visual Basic集成开发环境下,程序的运行可以用解释方式执行,也可以生成可执行文件(EXE)执行。

3.2.2  Visual Basic程序设计基础

    1、Visual Basic数据类型

    (1)Visual Basic提供的数据类型如下所示:

    (2)用户自定义数据类型

    用户可以利用Type语句定义自己的数据类型。

    【格式】   [Private|Public] Type 数据类型名

                  数据类型元素名1 AS 类型名

                  数据类型元素名2 AS 类型名

                  ……

                End Type

    注意:

    ■ 元素的类型名可以是任何数据类型,包括用户定义类型。

    ■ 记录类型中的字符串必须是定长字符串。

    ■ 在记录类型中不能含有数组。

    ■ 记录类型的定义必须放在模块的声明部分,先定义再使用。在标准模块中定义,其变量可以出现在工程的任何地方,且关键字Type前可以有Public或Private。如果在窗体模块中定义,则必须加关键字Private。

    (3)枚举数据类型

   “枚举”就是把变量的值一一列举出来,变量的值只限于列举出来的值的范围。当一个变量的值只限定为几个可能的取值时,就可以定义为枚举类型。

    【格式】   [Private|Public] Enum 数据类型名

                  成员名1 [=常数表达式]

                  成员名2 [=常数表达式]

                  ……

                End Enum

    注意:

    ■ 成员名用于指定该枚举类型的组成元素名称。

    ■ 元素的值可以为长整型,可以是别的枚举类型。

    ■ 如果没有指定常数表达式,则第一个成员值是0,其后的成员比其直接前驱的值大l。在指定常数表达式后,该成员的值发生改变,而其后的成员值也会随之改变。

    2、常量和变量

    (1)常量

    在程序的运行过程中,其值不能被改变的数据称为常量。常量可分为直接常量、符号常量和系统常量。

    ■ 直接常量:使用数值并通过其值直接反映其数据类型。

    ■ 符号常量:

    用户声明符号常量的语法如下:

    【格式】  [Private|Public] Const 常量名=表达式[,常量名=表达式]……

    ■系统常量:Visual Basic提供了应用程序和控件定义的常量,这些常量位于对象库中。

    (2)变量

    在程序运行过程中,其值可以被改变的数据称为变量。变量由变量名和变量值两部分组成,使用前先要被声明。关于变量,需要注意以下几个问题:

    ■ 问题1:变量命名规则:

    其一,名字必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度不能超过255个字符。

    其二,不能使用Visual Basic的关键字作为变量名。

    其三,不区分字母的大小写。

    ■ 问题2:变量申明:

    在使用变量前,一般需要先声明变量名和其类型。变量的声明分为:显式声明和隐式声明。

    显式声明:指在程序的一开始就用专门语句对变量进行声明。用Dim语句显式声明变量的语句格式如下:

Dim 变量名 [AS 类型][,变量名 [AS 类型]……]

    隐式声明:在Visual Basic中,可以对使用的变量不声明而直接使用。这些变量都被系统定义为变体类型(variant)。

    ■ 问题3:变量作用范围:

    变量的作用范围也可以称为变量的有效范围,是指应用程序中可以使用(赋值、引用、修改)这一变量的范围,即变量能发挥作用的有效区域。一般可以将变量分为局部变量、模块变量和全局变量。

    局部变量(过程级变量):是指在过程(函数或子程序)内部用Dim语句声明的变量,它只能在该过程内使用,而其他的过程不能访问这个变量。这个变量的变化不会影响其他过程中的同名变量。

    模块变量(窗体级变量):是指在一个窗体或模块的顶部声明段声明的变量,该变量可以在该窗体或模块的所有过程中使用,但不能被其他的窗体或模块使用。一般可以用Dim或Private来声明。

    全局变量:是指所有模块均可以使用的公共变量,该变量可用于应用程序的所有过程,一般在一个窗体(或模块)顶部的声明段中用关键字Public声明。

    ■ 问题4:变量存活期:

    全局变量(Public):其存活期为整个应用程序的运行期间。

    局部变量(Dim或Private): 存活期为声明它的窗体、模块、函数或子程序的运行期间。

    静态变量(Static):过程内部如果用Static声明一个变量,则该变量的存活期可以扩展到该过程所在窗体或模块的运行期间,在整个代码运行期间都能保留该变量的值。

    3、常用内部函数

    Visual Basic提供了大量的内部函数供编程者使用。内部函数大体上分为数学函数、随机函数、转换函数、时间日期函数和字符处理函数。

    (1)数学函数

    作用:用于表达式中,参与各种数学计算。

    常用数学函数有:

    ■ 三角函数(Sin、Cos、Tan、Atn):Sin(x)、Cos(x)、Tan(x)、Atn(x)分别返回自变量x的正弦值、余弦、正切值和反正切值。

    ■ 平方根函数(Sqr):Sqr(x)返回自变量x的平方根。

    ■ 绝对值函数(Abs):Abs(x)返回自变量x的绝对值。

    ■ 符号函数(Sgn):Sgn(x)返回自变量x的符号。

    ■ 指数函数(Exp):Exp(x)返回以e为底,以自变量x为指数的值,即求:ex。

    ■ 对数函数(Log):Log(x)返回自变量x的自然对数(以e为底)。

    (2)随机函数

    作用:随机函数Rnd(x),它产生一个大于等于0,小于1的随机数。

    注意:当一个应用程序反复重复使用随机数时,同一个序列的随机数会反复出现,所以称数Rnd(x)产生的随机数为伪随机数。为此,可以使用Randomize(x)语句来消除这种情况。

    使用格式如下:      Randomize(x)

    这里,x是一个正整数,是随机发生器的“种子数”,可以忽略。

    (3)转换函数

    作用:转换函数用于数据类型和数据形式的转换。如整数、浮点数、字符串型数据之间的转换。

    常用转换函数有:

    ■ 取整函数:Int(x)和Fix(x)。

    ■ 数制转换函数:Hex$(x)和Oct(x)。

    ■ 类型转换函数:Asc(x$)、Chr$(x)、Val(x)、Str$(x)、Cint(x)、Ccur(x)、CDbl(x)、CLng(x)、CSng(x)、Cvar(x)。

    ■ 格式输出函数:Format$()

    (4)日期时间函数

   作用:用于处理系统内与时间日期有关的操作。

    常用的日期时间函数有:

    ■ Day(Now):返回当前日期。

    ■ Weekday(Now):返回当前是星期几。

    ■ Month(Now):返回当前的月份。

    ■ Year(Now):返回当前的年份。

    ■ Hour(Now):返回小时(0~23)。

    ■ Minute(Now):返回分钟(0~59)。

    ■ Second(Now):返回秒(0~59)。

    (5)字符处理函数

    作用:用于处理与字符操作有关的内容。

    常用的字符处理函数:

    ■ 删除空格字符函数:

       LTrim$(字符串):去掉字符串左边的空白字符;

       RTrim$(字符串):去掉字符串右边的空白字符;

       Trim$(字符串):去掉字符串两边的空白字符;

    ■ 字符串截取函数

      左部截取函数Left$(字符串,n):返回字符串的左边的n个字符。

      右部截取函数Right$(字符串,n):返回字符串的右边的n个字符。

      中部截取函数Mid$(字符串,p,n):从第p个字符开始,向右截取n个字符。

    ■ 字符串长度测试函数

       【格式】 Len(字符串)   或    Len(变量名)

    ■ String$函数

       【格式】 String$(n,ASCII)     或      String$(n,字符串)

       【作用】 返回由n个指定字符组成的字符串。

    ■ 空格函数Space$(n)

       【作用】 插入n个字符的空格。

    ■ 字符串匹配函数

       【格式】 Instr([首字符串位置,字符串1,字符串2[,n]])

       【作用】 通过该函数来判定在文本框中是否输入了某个字符串。

    ■ 字母大小写转换函数

       【格式】 Ucase$(字符串)              【格式】 Lcase$(字符串)      

       【作用】 小写字母转化为大写字母。      【作用】 大写字母转化为小写字母。

    ■ 插入字符串函数

       【格式】 Mid$(字符串,位置[,L])=子字符串

       【作用】 从“字符串”的“位置”开始的字符用“子字符串”代替。

    4、运算符和表达式

    (1)算术运算符及其表达式

    Visual Basic的算术运算符参见表3-4所示。

           表3-4  Visual Basic的算术运算符

运  算

运 算 符

表达式举例
^A^3
取负--A
乘法*A*B*C
浮点除法/
整数除法\A\\B
求余数ModA Mod B 
加法A+B+C
减法A-B-C

字符串连接&String1 & String2
    注意几个问题:

    ■ 算术表达式的格式:

       【格式】<数值1><算术运算符1><数值2><算术运算符2><数值3>

    ■ 算术运算符的优先级:

       算术运算符的优先级依次递减为:幂、取负、乘法、浮点除法、整数除法、求余数、加法、减法、字符串连接。

    ■ 字符串连接:

    “&”是专门用于字符串连接操作的符号,算术运算符“+”也可以用于字符串操作。一般情况下,使用“&”符号比“+”符号进行字符串操作更安全。

    (2)关系运算符、逻辑运算符及其表达式

    Visual Basic的关系运算符和逻辑运算符参见表3-5、表3-6

    关系运算符也叫比较运算符,是用来对两个表达式的值进行比较的,比较的结果是一个逻辑值,即真(True)或假(False)。

    逻辑运算也称布尔运算。用逻辑运算符连接两个或多个关系式,组成一个布尔表达式。

          表3-5  Visual Basic的关系运算符

运  算

关系运算符举例
关系表达式结果
相等2+10=11False
大于>12>10True
大于等于>=

50>=30

True
小于<50<30False
小于等于<=

50<=30

False
不等于<>或><

100<>100.0True
比较样式Like
比较对象变量Is
          表3-6  Visual Basic的逻辑运算符

运   算

逻辑运算符
And
Or
Not
异或Xor
等价Eqv
蕴含Imp
    (3)表达式执行的顺序

    表达式内含有多个运算符,计算机按一定的顺序对表达式求值,一般顺序参见表3-6。

          表3-6  运算符号执行的顺序

算术运算符比较运算符逻辑运算符优先级
幂(^)

负数(-)

乘和浮点除(*,/)

整数除(\)

求余数(Mod)

加、减法(+,-)

字符串连接(&)

相等(=)

不等于()

小于()

大于()

小于或等于

大于或等于

Like

Is

Not

And

Or

Xor

Eqr

Imp

    注意:所有的同级运算按从左向右的顺序进行。

3.2.3  例题解析

    1、选择题:

    (1)为了装入一个Visual Basic应用程序,下列说法正确的是

        A)只装入窗体文件(.frm)          B)分别装入工程文件和标准模块文件(.bas)

        C)只装入工程文件(.vbp)          D)分别装入工程文件、窗体文件和标准模块文件

    解析:本题测试的是在工程文件的装入方法。Visual Basic应用程序包括四类文件,即窗体文件、标准模块文件、类模块文件和工程文件。四类文件都有自己的文件名,但只要装入工程文件,就可以自动把与该文件有关的其它3类文件装入内存。不需要分别装入。

    答案:C

    (2)为了保存一个Visual Basic应用程序,下列说法正确的是

        A)只保存窗体文件(.frm)          B)分别保存工程文件和标准模块文件(.bas)

        C)只保存工程文件(.vbp)          D)分别保存工程文件、窗体文件和标准模块文件

    解析:本题测试的是在工程文件的保存方法。Visual Basic应用程序包括四类文件,即窗体文件、标准模块文件、类模块文件和工程文件。四类文件都有自己的文件名,在保存工程文件时,必须分别保存上述3类文件。

    答案:D

    (3)在代码编辑器中,如果一条语句太长,无法在一行内写下(不包括注释),要拆行书写,可以在行末使用续行字符,表示下—行是当前行的继续。续行字符是

    A)—个空格加—个下划字符(_)        B)—个下划字符(_)

    C)直接回车                           D)—个空格加一个连字符(-)

    解析:在Visual Basic中使用的续行符是“_”(即一个空格加一个下划字符)。如果一个语句行的末尾是下划线,则下一行与该行属于同一个语句行。注意,续行符与它前面的字符之间至少要有一个空格。

    答案:A

    (4)下列可以作为Visual Basic的变量名的是

        A)4*Delta              B)Alpha

        C)4ABC                 D)ABπ

    解析:本题测试的是Visual Basic变量名的命名规则。变量名遵循的规则有四条:一是,名字只能由字母、数字和下划线组成;二是,名字的第一个字符必须是英文字符,最后一个字符可以是类型说明符;三是,名字的有效字符数为255个;四是,不能用Visual Basic的保留字做变量名。A)和C)违反了第二条规则;D)违反了第一条规则,π为不合法字符。

    答案:B

    (5)设a=2,b=3,c=4,d=5,下列表达式的值是

a>b And c<=d Or 2*a>c

        A)True             B)False

        C)-1               D)1

    解析:本题测试的是Visual Basic表达式的执行顺序和执行结果。Visual Basic表达式的执行顺序是算术运行优于关系运算,关系运算优于比较运算。算术运算结果为数组,关系运算和比较运算的结果为逻辑量。所以,2*a的结果为“4”,然后,a>b结果为“False”,c<=d结果是“True”,2*a>c结果为“False”。则上式转换成逻辑运算式为:False And True Or False。根据逻辑运算规则,先做And运算结果为False,再做Or运算,结果为False,所以最后结果为False。

    答案:B

    (6)假设有如下的记录类型:

             Type  Student

               Number As String

               Name AS String

               Age As Integer

             End Type

则正确引用该记录类型变量的代码是

        A)Student.Name=""                 B)Dim s as Student

           s.Name="张红"                     s.Name="张红"

        C)Dim s as Type Student           D)Dim s as Type

           s.Name="张红"                     s.Name="张红"

    解析:本题测试的是记录类型变量的引用方法。记录类型变量的定义与基本数据类型变量的定义没有什么区别,但在引用时有所不同。正确的引用方法是:用Type…EndType定义了一个用户定义的数据类型Student,再用Integer定义Student类型的变量s,然后就可以用“变量.元素”的格式引用记录中的各个成员。例如:s.Number、s.Name、s.Age。

    答案:B

    (7)只能在标准模块中声明,不能在过程或窗体模块中声明的变量是 

        A)私有变量        B) 全局变量        C)局部变量        D)窗体变量

    解析:本题测试的是变量的类型及其作用域。标准模块也称全局模块或总模块,可以由全局变量声明、模块级声明和通用过程、函数等几部分组成。其中全局声明放在标准模块的首部,过程和函数则可以随便排列。显然,为了使变量可以在整个运用程序内均起作用,必须将其定义在标准模块中,而不能放在过程和窗体模块中。

    答案:B

    (8)下列叙述中正确的是

        A)在窗体的Form_Load事件过程中定义的变量是全局变量

        B)局部变量的作用域可以超出所定义的过程。

        C)在某个Sub过程中定义的局部变量可以与其他事件过程中定义的局部变量同名,但其作用域只限于该过程

        D)在调用过程时,所有局部变量被系统初始化为0或空字符串

    解析:本题测试的是变量作用域问题。选项A:Form_Load事件过程和Sub过程是一样的,其变量的作用域仅限于该过程。选项B:局部变量的作用域只限于它所在的过程中;选项D:如果使用“Static”定义的过程,则过程中的局部变量就是“Static”型的,即在每次调用过程时,局部变量的初值保持上一次调用过程中的结果,而不一定是0或空字符串。

    答案:C

    (9)在窗体上画一个名称为Command1的命令按钮和3个名称分别为Label1、Label2、Label3的标签,然后编写如下代码:

        Private x As Integer

        Private Sub Command1_Click()

          Static y As Integer

          Dim z As Integer

          n = 10   : z = n+z

          y = y + z :  x = x+z

          Label1.Caption=x

          Label2.Caption=y

          Label3.Caption=z

        End Sub

    运行程序,连续运行程序,连续三次单击命令按钮后,则3个标签中显示的内容分别是

        A)10  10  10             B)30  30  30 

        C)30  30  10             D)10  30  30

    解析:本题测试的是变量作用域问题。变量x是在Sub过程外部声明的变量,是模块级变量,模块加载之后,它就己存在,而且在模块的所有过程中都可见,只要不退出该模块,则该值一直存在。模块的代码开始运行后,使用Static语句声明的变量 y 一直保持其值,直至该模块重新启动。z是用Dim定义的过程局部变量,每次运行该过程其都以初始值为基础,进行变化。所以连续3次单击命令按钮后,变量x、y、z的值分别为:30、30、10。

    答案:C

    (10)有如下事件过程:

          Private Sub Form_Click( )

            A$="123"  :  B$="456"

            X = Val(A$) + Val(B$)

            Print x\\100

          End Sub

程序运行后,单击窗体,则窗体上显示的内容是

        A)123        B)3        C)5        D)579

    解析:本题测试的是转换函数Val()的作用和整数除“\”的意义。类型转换函数Val()是将字符串A$和B$转换成数值“123”和“456”。所以变量x的计算值为123+456=579,而“\”表示两个整数相除,且结果取整,所以,579\100=5。

    答案:C

    (11)在窗体上画一个命令按钮,名称为Command1。然后编写如下程序:

          Private Sub Command1_Click( )

            For I=1 To 4

              For J=0 To I

                Print Chr$(65+I);

              Next J

              Print

            Next I

          End Sub

程序运行后,单击命令按钮,则在窗体上显示的内容是

        A) BB          B) A           C) B            D) AA

            CCC             BB              CC               BBB

            DDDD            CCC             DDD              CCCC

            EEEEE           DDDD            EEEE             DDODD

    解析:本题测试的是转换函数Chr$( )的用法。函数Chr$(x)的功能是:把x的值转换为相应的ASCII字符,“65”值的ASCII字符为“A”, “66”值的ASCII字符为“B”,……“90”值的ASCII字符为“Z”。循环变量I是控制输出字符,循环变量J是控制输出字符个数。注意:J的初值为0。

    答案:A

    (12)执行以下程序段后,变量c$的值为

          a$="Visual Basic Programing"

          b$="Quick"

          c$ =b$ & UCase(Mid$(a$,7,6)) & Right$(a$,11)

        A)Visual BASIC Programing            B)Quick Basic Programing 

        C)QUICK Basic Programing             D)Quick BASIC Programing 

    解析:本题测试的是字符串截取函数Mid$( )和Right$( )以及大小写转换函数Ucase( )的用法。函数Mid$字符串,p,n)的功能是:从位置p开始取字符串的n个字符;函数Right$(字符串,n)的功能是:返回“字符串”的最后n个字符;函数Ucase$(字符串)的功能是:把“字符串”中的小写字母转换为大写字母。

    答案:D

    (13)选拔身高T超过1.7米且体重W小于62.5公斤的人,表示该条件的布尔表达式为

        A)T>=1.7 And W<=62.5            B)T<=1.7 Or W>=62.5 

        C)T>1.7 And W<62.5              D)T>=1.7 Or W<62.5 

    解析:本题测试的是关系表达式和逻辑表达式的正确表示方法。根据题意,应该使用“And”逻辑运算符建立其判断条件。类似的,如果在题目的叙述过程中,用到“而且”、“且”、“同时”、“还”等字样的,都应该采用“And”。“超过”表示大于,用符号“>”,“小于”用符号“<”。

   答案:C

    (14)假设有如下声明:Dim x As Integer  , 如果sgn(x)的值为-1,则x的值是

        A)整数                B)大于0的整数 

        C)等于0的整数         D)小于0的数 

    解析:本题测试的是符号函数sgn(x)返回值的意义。Sgn(x)返回自变量x的符号,即:当x为负数时,函数返回-1;当x为0时函数返回0;当x为正数时,函数返回1。

    答案:D

    2、填空题:

    (1)有四种类型的文件:.bas、.res 、.frm 和.Ocx 。其中  【1】  文件类型不能在“工程资源管理器”窗口中列出。

    解析:本题测试的是在工程资源管理器中文件的列表情况。

    分析;与该工程vbp或工程组vbg有关的所有标准模块文件(.bas)、资源文件(.res)、类模块文件(.cls)和窗体文件(.frm)等都在“工程资源管理器”窗口中显示出来。OLE控件或定制控件的扩展名为Ocx。

    答案:【1】.ocx

    (2)与下列数学表达式对应的Visual Basic表达式是    【2】    。

    解析:本题测试的是Visual Basic算术表达式的书写格式。Visual Basic算术表达式的部分运算符表示的形式与实际数学表达式是有区别的,主要考虑的是通过键盘输入符号的快捷与方便。如“×”符号表示为“*”符号,“÷”符号表示为“/”,乘方的符号表示为“^”等等。

    答案:【2】

    (3)执行以下语句后,输出的结果是    【3】    。

            s$="ABCDEFGHIJK" < CR >

Print Left$(s$,4) < CR >

Print Right$(s$,4) < CR >

    解析:本题测试的是字符串截取函数使用方法。Left$(s$,4)是从s$的左边第一个字符开始,顺序截取4个字符,结果为“ABCD”;Right$(s$,4)从s$的右边倒数第4个字符开始,顺序截取后面的字符,结果为“HIJK”。< CR >代表写程序时换行;Print表示在立即窗口或在窗体上将结果打印出来。

    答案:【3】ABCD

               HIJK

    (4)以下程序的功能是:生成20个100到300之间的随机整数,输出其中能被5整除的数并求出它们的和。请填空。

        Private Sub Command1_Click( )

          For i=1 To 20

            x=Int(  【4】   *200+100)

            If   【5】   = 0  Then

              Print x

              s =s +   【6】   

            End If

          Next i

          Print "Sum=";s

        End Sub

    解析:本题测试的是随机函数的使用方法。Rnd函数产生随机数的范围为(0,1)。为了生成某个范围内的随机整数,可使用以下公式:Int((上限值—下限值+1)*Rnd+下限值)。判断数值是否能被另一个数值整除,用运算符Mod求余数的方法比较方便。

    答案:【4】Rnd 或 Rnd(n),其中n为任意整数

          【5】X Mod 5

          【6】X

    (5)在窗体上面画一个名称为Command1的命令按钮,编写如下事件过程:

        Private Sub Command1_Click( )

          Dim a As String

            a =   【7】   

            For i=1 To 5

              Print Space(6-i); Mid$(a,6-i,2*i-1)

            Next i

        End Sub

程序运行后,单击命令按钮,要求窗体上显示的输出结果为:

                    5

                   456

                  34567

                 2345678

                1234567

请填空。

    解析:本题测试的是空格函数Space( )和字符串截取函数Mid$( )的用法。空格函数Space$(n)的功能是返回n个空格,函数Mid$(字符串,p,n)的功能是从位置p开始取字符串的n个字符。该程序是字符输出控制程序。

    答案:【7】“1234567”

    (6)在立即窗口中执行以下语句:Print Day(# 8/31/2006#),则输出结果是   【8】   。

    解析:本题测试的是日期函数Day( )的功能。Day(Now)返回当前的日期,“#8/31/2006#”为日期常量,表示2006年8月31日,所以结果返回31。

    答案:【8】31

    (7)表达式Fix(-32.68)十Int(-23.02)的值为   【9】   。

    解析:本题测试的是取整函数Int(x)和Fix(x)的功能。Fix(x)功能是去掉一个浮点数的小数部分,保留其整数部分;Int(x)的功能求不大于自变量x的最大整数。所以,Fix(-32.68)=-32,Int(-23.02)=-24,则Fix(-32.68)十Int(-23.02)=-56。

    答案:【9】56

3.3  Visual Basic数据输入和输出

    一般而言,Visual Basic程序可以包含三个部分:输入、处理和输出。计算机通过输入操作实现数据的接受,通过输出将处理完的数据提供给用户。Visual Basic提供了多种输出输入手段。

3.3.1  数据输出(Print方法)和数据输入(InputBox函数)

    1、数据输出(Print方法)

    (1)Print方法

    Print方法的功能是在窗体上显示文本字符串和表达式的值,并在其他图形对象或打印机上输出结果。其使用格式如下:  

[对象名称.]Print[表达式][,|;]

    注意:

    ■ 对象名:可以是窗体、图片框、打印机和立即窗口,缺省为在当前窗体上显示。

    ■ 表达式:可以包含一个或多个表达式,各表达式要用逗号、空格或分号相隔。表达式类型为数值型或字符串,缺省时,则输出一个空行。

    ■ Print方法执行一次,默认会自动换行;但相邻的两个Print输出的内容想要在同一行输出,则在前面的Print的末尾加上逗号或分号。

    (2)与Print方法有关的函数

    ■ Tab函数

    【格式】Tab(n)

    【功能】用于把光标往后移动n个字符的位置,与输出的内容用分号隔开。

    注意:如果n大于行宽,显示位置为“n Mod 行宽”;如果n小于0,从第一列输出;如果当前光标的位置超过了n,光标则下移一行。

    ■ Spc函数

    【格式】Spc(n)

    【功能】在Print输出中,用该函数可以跳过n个空格。

    注意:与Tab函数不同的是,Tab函数从第一列开始计数,n是绝对偏移量;spc函数从前面的输出项后面开始计数,n是相对偏移量。

    ■ Space 函数

    【格式】Space$(n)

    【功能】Space$函数返回n个空格。

    (3)格式输出函数Format$

    【格式】Format$(数值表达式,格式字符串)

    【功能】可以使数值或日期按指定的格式输出。

    注意:如果省略格式字符串,则把数值表达式的值转换成字符串。

    格式字符串及其作用如表3-7所示。

      表3-7  格式字符串及其作用

字  符

作     用

#数字:不在前面或后面补0

0数字:在前面或后面补0

.小数点
,千位分隔符
百分比符号
$美元符号
-、+

负、正号
E-、E+

指数符号
    (4)与Print方法有关的其它方法

    ■ Cls方法

    【格式】[对象.]Cls

    【功能】Cls方法用于清除由Print方法显示的文本或在图片框中显示的图形,并把光标移到对象的左上角((0,0))。

    注意:若省略对象名则清除在当前窗体内显示的内容。

    ■ Move方法

    【格式】[对象.]Cls(左边距离,[上边距离],[宽度],[高度])

    【功能】用于移动窗体和控件,并可改变其大小。

    ■ TextHeight和TextWidth方法

    【格式】[对象.]TextHeight(字符串)

            [对象.]TextWidth(字符串)

    【功能】用于辅助设计坐标,分别返回一个文本字符串的高度值和宽度值。

  2、数据输入(InputBox函数)

    【格式】InputBox(prompt[,title][,default][,xpos,ypos][,helpfile,context])

    【功能】InputBox函数可以产生一个对话框,作为输入数据的界面,供用户输入数据,并返回所输入的内容。函数中各参数的作用如图3-3所示。

图3-3  InputBox函数对话框

    注意:

    ■ Prompt:一个字符串,对话框内的显示信息,用来提示用户输入。

    ■ Title:一个字符串,对话框标题。

    ■ Default:一个字符串,用来显示输入缓冲区的默认。

    ■ xpos,ypos:确定对话框位置,分别表示对话框到屏幕左边界和右边界的距离。

    ■ helpfile:字符串表达式,用于指明帮助文件的名字。

    ■ context:数值表达式,表示相关的帮助主题或目录号。

3.3.2  MsgBox函数和MsgBox语句

    1、MsgBox函数

    【格式】MsgBox(prompt[,buttons][,title][,helpfile,context])

    【功能】在对话框中显示消息,等待用户单击按钮,并返回一个Integer告诉用户单击哪一个按钮。函数中各参数的作用如图3-4所示。

图3-4  MsgBox函数对话框

    注意:

    ■ Prompt:必需的。字符串表达式,作为显示在对话框中的消息。如果prompt的内容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合 (Chr(13) & Chr(10))将各行分隔开来。

    ■ Buttons:可选的。数值表达式是值的总和,指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。如果省略,则buttons的缺省值为 0。

    关于buttons 参数参见表3-8的设置值。

    ■ TiTle:可选的。在对话框标题栏中显示的字符串表达式。如果省略 title,则将应用程序名放在标题栏中。

    ■ helpfile和context:可选的。与帮助有关的参数。

    MsgBox函数的返回值是一个整数。返回的整数见表3-9所示。

    2、MsgBox语句

    【格式】MsgBox Msg$[,type%][,title$][,helpfile,context]

    【功能】是MsgBox函数的语句形式。各参数的含义及作用与MsgBox函数相同。

    表3-8  buttons 参数设置值:(共四类)

类别常  数

描    述

Ⅰ类:

  对话框内命令按钮的类型和数量。

vbOKOnly0只显示 OK 按钮。

VbOKCancel1显示 OK 及 Cancel 按钮。

VbAbortRetryIgnore2显示 Abort、Retry 及 Ignore 按钮。

VbYesNoCancel3显示 Yes、No 及 Cancel 按钮。

VbYesNo4显示 Yes 及 No 按钮。

VbRetryCancel5显示 Retry 及 Cancel 按钮。

Ⅱ类:

  指定对话框所显示的图标。

VbCritical16显示 Critical Message 图标。

VbQuestion32显示 Warning Query 图标。

VbExclamation48显示 Warning Message 图标。

VbInformation显示 Information Message 图标。

Ⅲ类:

  指定默认活动按钮。

vbDefaultButton10第一个按钮是缺省值。
vbDefaultButton2256第二个按钮是缺省值。
vbDefaultButton3512第三个按钮是缺省值。
vbDefaultButton4768第四个按钮是缺省值。
Ⅳ类:

  分别用于应用程序和系统强制返回。

vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。
vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
vbMsgBoxHelpButton16384将Help按钮添加到消息框

VbMsgBoxSetForeground65536指定消息框窗口作为前景窗口
vbMsgBoxRight524288文本为右对齐
vbMsgBoxRtlReading1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示
      表3-9  MsgBox函数返回值

常  数

描  述

操  作

vbOK1OK选“确定”按钮
vbCancel2Cancel选“取消”按钮
vbAbort3Abort选“中止”按钮
vbRetry4Retry选“重试”按钮
vbIgnore5Ignore选“忽略”按钮
vbYes6Yes选“是”按钮
vbNo7No选“否”按钮
3.3.3  其它

    1、输出内容的字形问题

    Visual Basic可以输出各种不同的字体、字号、粗细和其他显示效果。

    (1)字体类型:

    通过FontName属性设置。

    【格式】[窗体.][控件.]|Printer.FontName[="字体类型名"]

    (2)字体大小:

    通过FontSize属性设置。

    【格式】[窗体.][控件.]|Printer.FontSize [=点数]

    (3)粗体字:

    通过FontBold属性设置。

    【格式】FontBold[=True/False]

    (4)斜体字:

    通过FontItalic属性设置。

    【格式】FontItalic[=True/False]

    (5)加下划线:

    通过FontUnderline属性设置

    【格式】 FontUnderline[=True/False]

    (6)加删除线:

    通过FontStrikethru属性设置

    【格式】FontStrikethru[=True/False]

    2、打印机输出

    (1)直接输出

    【格式】Printer.Print[表达式表]

    【功能】是指把信息直接送到打印机输出,仍然使用Print方法,但其对象为Printer。

    注意:通过打印机输出,有一些特别的方法和属性:

    ■ Page属性——用于设置页号。

    ■ NewPage方法——用于进行换页操作,强制换页。

    ■ EnoPage方法——用于结束文件的打印。

    (2)窗体输出

     【格式】[窗体.]PrintForm

    【功能】是指通过窗体来打印信息,先把输出信息显示在窗体上,再把窗体上的信息打印出来,包括文本信息和任何其他窗体上的可见信息。

    注意:如果要进行窗体输出,先要将把输出窗体的AutoRedraw属性设置为True,以便保存窗体上的信息。

3.3.4  例题解析

    1、选择题:

    (1)假定Picture1和Text1分别为图片框和文本框的名称,下列不正确的语句是

        A)Print 25                    B)Picture1.Print 25 

        C)Text1.Print 25              D)Debug.Print 25

    解析:本题测试的是数据输出Print方法的使用形式。Print方法使用的格式为:[对象名称.]Print[表达式][,|;],其中,对象名可以是窗体(Form)、图片框(Picture)、打印机(Printer)和立即窗口(Debug),缺省为在当前窗体上显示。

    答案:C

    (2)以下语句的输出结果是(在立即窗口中)

        a="Beijing"          ( 为回车键 )

        b="Nanjing"          

Print a;b

        A)Beijing△Nanjing            B)△Beijing△Nanjing 

        C)BeijingNanjing              D)△Beijing△Nanjing△

    其中:△表示空格。

    解析:本题测试的是Print方法的输出格式。Print方法输出多个表达式或字符串时,各表达式用逗号分隔时,则按标准输出格式(分区输出格式:以14个字符为一个分区单位)显示数据;如果用分号或空格做分隔符,则按紧凑格式输出数据。

    答案:C

    (3)执行以下语句:

        a=InputBox("Today","Tomorrow","Yesterday",,,"Day before Yesterday",5)

        A)Today                 B)Tomorrow 

        C)Yesterday             D)Day before Yesterday

    解析:本题测试的是InputBox函数的输出格式。InputBox函数的输出格式为:

InputBox(prompt[,title][,default][,xpos,ypos][,helpfile,context])

在对话框的输入区中显示的应当是第三个参数:输入区的默认值(default),即字符串“Yesterday”。

    答案:C

    (4)下列语句输出的结果为

          Print Format$(351.75,"0######.#")

          Print Format$(9.2,"0######.#")

          Print Format$(251.91,"0######.#")

        A)0000351.8          B)0###351.75          C)351.75          D)351.7

           0000009.2             0#####9.2              9.2                9.2

           00251.9             0251.91              251.91           251.9

    解析:本题测试的是格式输出函数Format$及其控制字符的使用方法。Format$函数中的“格式字符串”内包含有符号“#”和“0”时,按“0”数字占位符的格式输出,即显示的多余的位以0补齐。

    答案:A

    (5)在窗体上添加一个名称为Command1的命令按钮,然后编写如下事件过程

           Private Sub Command1_Click()

             x = InputBox("input")

             Select Case x

             Case 1, 3

               Print "分支1"

Case Is > 4

               Print "分支2"

             Case Else

               Print "else 分支"

             End Select

           End Sub

    程序运行后,如果在输入对话框中输入2,则窗体上显示是

        A)分支1          B)分支2          C)Else 分支          D)程序出错

    解析:本题测试的是InputBox函数返回值的类型问题。X默认为变体型变量,可以根据需要参与任何一种类型数据的赋值与表达式的运算。根据题意,InputBox函数返回字符串“2”,赋值x后,转换为变体型变量。根据多项选择的要求,以Integer类型数据参与判断和选择。“2”属于Case Else情况。

    答案:C

    (6)在窗件上画一个名称为Command1的命令按钮,然后编写如下事件过程:

          Private Sub Command_Click()

            Move 500,500

          End Sub

    程序运行后,单击命令按钮,执行的操作为

        A)命令按钮移动到距窗体左边界、上边界各500的位置

        B)窗体移动到距屏幕左边界、上边界各500的位置

        C)命令按钮向左、上方向各移动500

        D)窗体向左、上方向各移动500

    解析:本题测试的是Move方法的用途及默认对象。Move方法的使用格式是:

[对象.]Cls(左边距离,[上边距离],[宽度],[高度])

其功能是用于移动窗体和控件,并可改变其大小。若无对象,则默认为窗体对象。如果是窗体对象,则“左边距离”和“上边距离”均以屏幕左边界和上边界为准。

    答案:B

    (7)执行下面的语句后,所产生的信息框的标题是

            a=MsgBox("你是学生吗?","提问","",5)

        A)提问          B)空          C)你是学生吗?          D)出错,不产生信息框

    解析:本题测试的是MsgBox函数的语句形式和内容。MsgBox函数的语句形式是:

MsgBox(prompt[,buttons][,title][,helpfile,context])

在[ ]中内容可以省略而取默认值,但位置必须表明,即参数分隔符“,”不能省。信息框的标题是MsgBox函数的第三个参数。

    答案:A

    (8)想实现当用户选择关闭某应用程序时提示用户是否保存文件,或取消选择(默认保存),正确的语句是

        A)MsgBox("是否在退出前,保存已经打开的文件?",vbYesNo)

        B)MsgBox("是否在退出前,保存已经打开的文件?",VbYesNoCancel+vbDefaultButton1)

        C)MsgBox("是否在退出前,保存已经打开的文件?",vbYesNoCancel+vbDefaultButton2)

        D)MsgBox("是否在退出前,保存已经打开的文件?",vbOkOnly)

    解析:本题测试的是MsgBox函数的第二个参数的表达形式。根据题意:“是否保存文件,或取消选择”用“VbYesNoCancel”常数实现,显示“是”、“否”及“取消”3个按钮;“默认保存”用“vbDefaultButton1”来实现,因为“保存”是第一个按钮。“vbDefaultButton2”默认的是第二个按钮。

    答案:B

    (9)在MsgBox函数中,如果省略第三个Title参数,则对话框的标题为

        A)一个随机的字符串          B)一个空字符串

        C)工程的名字                D)与第一个参数相同

    解析:本题测试的是MsgBox函数的第三个参数的缺省值问题。MsgBox函数的语句形式为:

MsgBox(prompt[,buttons][,title][,helpfile,context])

Title是MsgBox的一个可选参数,它是在对话框标题栏中显示的字符串表达式。如果省略<Title>,Visual Basic将应用程序名字放在标题栏中。

    答案:C

    (10)在用FontSize、FontBold、FontItalic、FontUnderline、FontStrikethru属性来设置文本的大小和样式属性之前,需要先改变的属性是

        A)Enabled          B)FontName        C)Checked        D)Visible

    解析:本题测试的是与文本字形有关的属性。一般而言,FontSize、FontBold、FontItalic、FontUnderline、FontStrikethru等属性的设置与集体的字体有关,即首先要选择字体,然后再设置字体的这些属性。而选择字体,实际上就是为字形的FontName属性赋值。

    答案:B

    (11)为了能够把信息直接送往打印机,应该把Print方法的对象改为

        A)Picture        B)Form        C)Image        D) Printer

    解析:本题测试的是具有Print方法的对象的直接输出的问题。直接输出就是把信息直接送往打印机,所使用的仍是Print方法,只是把Print方法的对象改为Printer,其格式为:

Printer.Print  [表达式表]

    Print属性返回一个Printer对象,该对象允许一个系统打印机进行通信。Picture、Image是与图形、图像有关的对象,而Form是窗体对象,三者的Print方法均是在对象内部打印输出结果。

    答案:D

    (12)在Visual Basic中,用来设置窗体进行打印输出的语句是

        A)Form1.Show             B)Form1.Print

        C)Form1.Print1n          D)Form1.PrintForm

    解析:本题测试的是窗体的PrintForm方法。Form1.Show是显示窗体;Form1.Print是将信息打印在窗体上;Print1n方法的对象是立即窗口(Debug);而Form1.PrintForm则是先把输出的信息送到窗体上然后再用PrintForm方法把窗体上的内容打印出来。

    2、填空题:

    (1)在窗体上面一个命令按钮,然后编写如下事件过程:

          Private Sub Command1_Click()

            a=InputBox("请输入一个整数")

            b=InputBox("请输入一个整数")

            Print a+b

          End Sub

    程序运行后,单击命令按钮,在输入对话框中分别输入321和456,输出结果为   【1】   。

    解析:本题测试的是InputBox函数的使用方法和返回值。InputBox函数作用时可以产生一个对话框,并显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的字符串。变量a和b都是变体型变量。通过InputBox函数返回的是字符串,则a+b相当于两个字符串连接操作(“321”+“456”=“321456”)。

    答案:【1】321456

    (2)在Visual Basic中,语句:Print 3>9的输出结果为   【2】   。

    解析:本题测试的是Print方法与输出内容的关系:“3>9”是一个关系表达式,关系表达式的结果为一个逻辑量,所以,“3>9”的结果为“False”。Print方法打印的是表达式的结果,而不是表达式本身。

    答案:【2】False

    (3)语句:Print "50×6=";50*6的输出结果是   【3】   。

    解析:本题测试的是Print方法与输出内容的关系。"50×6="是一个字符串,Print原样输出;50*6是一个算术表达式,Print输出其运算结果;“;”表示两个多项式紧凑输出。

    答案:【3】50×6=300

    (4)语句MsgBox("a wrong operation"!,vbOkOnly)的作用为   【4】   。

    解析:本题测试的是MsgBox函数的第二个参数的表达形式和含义。MsgBox函数的语句形式为:

MsgBox(prompt[,buttons][,title][,helpfile,context])

当参数Buttons的设置值为vbOkOnly,只显示“确定”按钮。

    答案:【4】显示一个对话框,输出信息,显示一个“确定”按钮。

    (5)在窗体中有两个命令按钮:“显示”(控件名为CmdDisplay)和“测试”(控件名为cmdTest)。单击“测试”技钮时,执行如下事件过程。此事件过程的功能是:当在窗体中出现消息框并选中其中的“确定”按钮时,隐藏“显示”按钮。否则退出。根据题意,请完善下列程序。

        Private Sub CmdTest_Cllck()

          Answer=   【5】   ("隐藏按钮")

          IF Answer=vbOK  then

            CmdDisplay.Visible=   【6】   

          Else

            End

          End If

        End Sub

    解析:本题测试的是MsgBox函数的返回值类型问题。MsgBox函数所显示的对话框有7种命令按钮,返回值与这7种按钮相对应,分别为1~7的整数,这个整数与所选择的命令按钮有关,当单击消息框的“确定”按钮时,MsgBox函数返回值为1(vbOK)。根据题意,MsgBox函数返回值为1(vbOK)时,要隐藏CmdDisplay按钮,则使其Visible属性为Flase。

    答案:【5】MsgBox        【6】Flase

    (6)设计一个程序,界面如图3-5所示。用户界面由一个标签(Label1)、一个文本框(Text1)、三个复选框(Check1、Check2、Check3)组成。程序运行后,用户在文本框输入一段文字,然后按需要单击各复选框,以改变文字的字体、字型即大小。

    要求:当不选择“宋体”时,文本应该是“黑体”;当不选择16号字时,字号时10;当不选择斜体时,文本采用默认字型。请根据题意,完善下列程序。

图3-5  设计效果图

          Option Explicit

          Private Sub Check1_Click()

            If Check1.Value = 1 Then

              Text1.FontName = "宋体"

            Else

              Text1.FontName = "黑体"

            End If

          End Sub

          Private Sub Check2_Click()

            If Check2.Value = 1 Then

              Text1.FontItalic =   【7】     

            Else

              Text1.FontItalic =  【8】   

            End If

          End Sub

          Private Sub Check3_Click()

            If Check3.Value =   【9】    Then

            Text1.FontSize = 16

          Else

            Text1.FontSize = 10

          End If

        End Sub

    解析:本题测试的是与文本字形有关的属性及其值。当FontItalic的属性被设置为True时,文本以斜体字输出。该属性的默认值为False。复选框的Value属性用来表示复选钮的状态。其值为1,表示“选中”;其值为0,表示“没有选中”,其值为2,表示被禁止。

    答案:【7】True            【8】False            【9】1

文档

Visual Basic程序设计基础

第3章VisualBasic程序设计基础VisualBasic是一种可视化的、面向对象的和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、高效而且功能强大。在VisualBasic环境下,Windows的编程复杂性被巧妙地封装起来,利用事件驱动的编程机制和可视化的设计工具,使用Windows的应用程序接口(API)函数、动态链接库(DLL)、动态数据交换(DDE)、对象链接与嵌入(OLE)、开放式数据库连接(ODBC)等技术,程序员可以方便地
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top