已阅读5页,还剩388页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编:陈庆章,VisualBasic,前言,VisualBasic是目前进行Windows应用程序设计的最佳工具之一,也是最佳的程序设计入门语言,这一看法已经得到普遍认可。非计算机专业计算机基础教学的3个不同层次,分别解决的是“操作技能”、“思维训练”、“综合应用能力”问题。学习一门程序设计语言,主要目的是要提高读者分析归纳、解决问题的能力,在思维训练方面受益,并使得读者通过更系统、深入的学习后开发实用程序成为可能。因此,本书在内容上精选了VisualBasic6.0中最基础、最常用并实用的部分;在编排和风格上力图体现循序渐进、深入浅出的特点;以样本程序示例教学,阶段性构筑读者的成就感,使得艰苦的程序设计工作升华为一种艺术创作,提供了一条通往程序设计高手的捷径。,前言,本书的编写得到了浙江省高校计算机教学研究会的大力支持。本书共分9章,第1、第7章由浙江科技学院的罗朝盛教授编写,第2、第3、第4、第6章由浙江工业大学的胡同森副教授编写,第5章由浙江理工大学的庄红副教授编写,第8章由胡同森和浙江师范大学的朱建新编写,第9章由杭州电子科技大学的郭艳华副教授编写。附录部分包括ASCII字符集、VisualBasic常用系统函数、VisualBasic常用属性、VisualBasic常用事件、VisualBasic常用方法以及部分对象能使用的常用方法,为大家使用VisualBasic进行程序设计提供查找资料的方便。全书由浙江工业大学陈庆章担任主编,由胡同森统稿。,前言,另外,与本教材配套使用的另一本教学或自学参考书VisualBasic学习及实践指导将在2005年春季前出书。书中将有本教材习题的参考答案和VisualBasic学习及实践指导中附加习题的参考答案。此书是教师教学、学生或读者自学非常实用的辅助参考书。希望所有读者和从事计算机基础教学的各位同仁,对本书多提宝贵意见,使其逐步完善。在此,预致我们深深的谢意。本书编委会2004年7月,编委会名单,主任:方永平副主任:胡维华委员(以姓氏笔画为序)陈庆章何钦铭项小仙赵建民俞瑞钊蒋联海雷炜楼程富主编:陈庆章编著者:胡同森罗朝盛庄红郭艳华朱建新,目录,第1章VisualBasic6.0程序设计概述第2章程序设计基础第3章结构化程序设计与数组第4章函数与过程第5章常用控件第6章图形控件和图形方法第7章对话框和菜单程序设计第8章文件第9章数据库与数据访问技术,第1章VisualBasic6.0程序设计概述,1.1VisualBasic简介1.2VisualBasic6.0可视化编程环境1.3VisualBasic中的基本概念1.4窗体1.5VisualBasic程序的组成及工作方式1.6一个简单的VisualBasic程序的创建实例1.7小结,1.1.1VisualBasic的发展过程,Basic(BeginnersAll-PurposeSymbolInstructionCode初学者通用指令代码)语言,是早期微型计算机中广泛使用的计算机程序设计高级语言。VisualBasic在原有Basic语言的基础上进一步发展,综合了Basic语言和Windows操作系统的优点,把它们融合在一起,为初学者在Windows环境下编写应用程序提供了良好的开发环境。“Visual”的原意是指“可视的”或“看得见的”,是为用户开发图形用户界面(GUI)提供的一种方法。用户不需要编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象加到屏幕上的适当位置,再进行简单的设置即可。,1.1.1VisualBasic的发展过程,1991年,微软公司推出了VisualBasic1.0版,这在当时引起了很大的轰动。许多专家把VisualBasic的出现当作是软件开发史上的一个具有划时代意义的事件。其实,现在看来,VisualBasic1.0的功能实在是太弱了。但在当时,它是第一个“可视”的编程软件。1992年初,发布VisualBasicProfessionalToolkit,其中包含了一组由微软公司和其他公司开发的自定义控件。这时,面向对象和复用性开始成为软件开发中的重要概念。同年,又发布了MicrosoftVisualBasic2.0,其中包含了变体数据类型、预定义True、False常量和对象变量。1993年,VisualBasic3.0的推出,新增了标准数据控件,带有Jet1.1版本的数据库引擎。1995年,微软公司又推出了VisualBasic4.0。该版本不但大量改写了原来的VisualBasic,还加入了OLE技术并能够生成对象;同时还支持32位自定义控件OCX,并可从VisualBasic应用程序中访问其他软件环境下生成的数据,如MicrosoftWord、MicrosoftExcel等。,1.1.1VisualBasic的发展过程,1997年,微软公司推出了VisualBasic5.0,它支持MicrosoftCOM标准,可以生成ActiveX控件,并有明显创新,开发人员可以用VisualBasic生成自己的自定义控件和DLL。1998年,微软公司又推出了VisualBasic6.0。较以前版本而言,其功能和性能都大大增强了,它还提供了新的、灵巧的数据库和Web开发工具,如增加了新的SQLServer交互方法,包括数据库的访问,使用数据库的新工具和控件等。,1.1.1VisualBasic的发展过程,VisualBasic5.0/6.0有3种版本,分别为学习版、专业版和企业版。学习版:它是最基本的版本,允许编写许多类型的程序,与其他版本相比,所带工具较少。专业版:为专业人员而设计,它不仅包含了学习版的全部内容,还包含了许多其他功能,如具有创建ActiveX控件和ActiveX文档的能力;提供Internet开发功能,具有更多使用数据库的工具。企业版:这是VisualBasic6.0最完善的版本,该版本主要用于开发企业级分布式应用程序,它包含了许多附加工具,提供了完全集成SQLServer的所有工具。这3个版本是在相同的基础上建立起来的,以满足不同层次用户的需要。对大多数用户来说,专业版就可以满足要求。本书使用的是VisualBasic6.0的企业版(中文),书中介绍的内容尽量做到与版本无关。,1.1.2VisualBasic的特点,VisualBasic是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,能用于Windows环境下的各种应用软件的开发,是目前较为流行的应用软件开发平台,具有许多明显的特点与优点,现归纳如下:1提供了面向对象的可视化编程工具VisualBasic采用的是面向对象的程序设计方法(OOP),它把程序和数据封装在一起而视作为一个对象。VisualBasic提供了可视化的设计工具,把Windows界面设计的复杂性“隐藏”起来,开发人员只需按设计要求,用系统提供的工具,在屏幕上画出各种对象,并设置这些对象的属性,这样就可以在屏幕上“画”出所需的用户界面,不必为界面设计而编写大量的程序代码,因而大大提高程序设计的效率。,1.1.2VisualBasic的特点,2事件驱动的编程方式传统的程序设计是一种面向过程的方式,程序总是按事先设计好的流程运行,用户不能随意改变、控制程序的流向。在VisualBasic中,用户的动作事件控制着程序的流向,每个事件都能驱动一段程序的运行。程序员只需编写响应用户动作的代码,而各个动作之间不一定有联系,这样的应用程序代码一般比较短,所以程序易于编写与维护。3结构化的程序设计语言VisualBasic具有丰富的数据类型和结构化程序结构,其特点是:(1)增强了数值和字符串处理功能,比传统的Basic语言有许多的改进。(2)提供了丰富的图形及动画指令,可方便地绘制各种图形。(3)提供了定长和动态(变长)数组,有利于简化内存管理。(4)增加了递归过程调用,使程序更为简练。(5)提供了一个可供应用程序调用的包含多种类型的图标库。(6)具有完善的调试、运行出错处理。,1.1.2VisualBasic的特点,4提供了易学易用的应用程序集成开发环境在VisualBasic的集成开发环境中,用户可设计界面、编写代码、调试程序,直至将应用程序编译成可执行文件在Windows上运行,使用户在友好的开发环境中工作。5支持多种数据库系统的访问利用VisualBasic的数据控件,可访问MicrosoftAccess、Dbase、MicrosoftFoxPro、Paradox等,也可以访问MicrosoftExcel、Lotusl1-2-3等多种电子表格。,1.1.2VisualBasic的特点,6支持动态数据交换(DDE)、动态链接库(DLL)和对象的链接与嵌入(OLE)动态数据交换是MicrosoftWindows除了剪贴板和动态链接函数库以外,在Windows内部交换数据的第三种方式。利用这项技术可在VisualBasic开发的应用程序与其他Windows应用程序之间建立数据通信。动态链接库中存放了所有Windows应用程序可以共享的代码和资源,这些代码或函数可以用多种语言写成。VisualBasic利用这项技术可以调用几乎任何语言产生的DLL,也可以调用Windows应用程序接口(API)函数,以实现SDK所能实现的功能。7完备的Help联机帮助功能与Windows环境下的其他软件一样,在VisualBasic中,利用帮助菜单和功能键,用户可随时方便地得到所需的帮助信息。VisualBasic帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获得大量的示例代码,为用户的学习和使用提供了极大的方便。,1.1.3VisualBasic6.0的新特性,VisualBasic6.0与以前的版本不同,它是VisualStudio家族的一个组件,保留了VisualBasic5.0的优点,如在开发环境上的改进,增加了工作组,在代码编辑器中提供了控件属性方法的自动提示,能编译生成本机代码,大大提高程序的执行速度等。同时,VisualBasic6.0在数据访问技术、Internet技术及智能化向导方面都有了许多新的特性。下面对VisualBasic6.0的新特性作一个简单的概括。1数据访问的新特性VisualBasic6.0在数据访问技术方面比VisualBasic5.0有了很大的增强,首先,它采用了一种新的数据访问技术ADO(ActiveDataObject),使之能更好地访问本地和远程的数据库。其次,在数据环境方面,允许程序员可视化地创建和操作ADO连接及命令,为程序员操纵数据源提供了很大的方便。另外,增加了ADO控件和集成的可视化数据库工具。,1.1.3VisualBasic6.0的新特性,2Internet功能的增强Internet是当今发展的潮流,VisualBasic6.0在Internet方面的增强使得它已成为当前最强有力的开发工具之一。(1)IIS程序设计:用VisualBasic6.0的专业版和企业版可直接创建IIS应用程序,响应用户的要求。(2)DHTML的设计:利用VisualBasic6.0,程序员可直接通过VisualBasic代码来实现动态网页的设计。(3)InternetExplorer4.x对下载ActiveX文档的支持。3控件、语言和向导方面的新增特性(1)DataGrid、DataList、DataCombo等新增的数据控件:相当于DataBase(简称DB)版本的DBGrid、OLEDBList和DBCombo,所不同的是它们都支持新的ADO控件。(2)可以创建自己的数据源和数据绑定对象。(3)函数可以将数组作为返回值,并且可以为可变大小的数组赋值。(4)新增了安装向导、数据对象向导、数据窗体向导以及应用程序向导。这些新增的向导,可以使开发人员设计出更优秀的应用程序。,1.1.3VisualBasic6.0的新特性,4高度可移植化的代码代码的可移植性是面向对象编程的一个重要特点。VisualBasic6.0集成了VisualComponentManager(简称VCM,中文含义为可视化组件管理器)和VisualModeler(可视化模块设计器)。通过VCM,可以在VisualBasic的工程中方便地组织、查找、插入各种窗体、模板、类模块,甚至整个工程,为代码的重新利用提供了很大的方便。而VisualModeler则可以将设计器和组件转化成VisualC+或VisualBasic的代码,它与VCM结合可以将VisualBasic中写的类,在其他工程甚至VisualC+的工程中使用。5创建ActiveX控件更加轻松方便用VisualBasic6.0创建的ActiveX控件,其外观和行为均和用C语言编写的控件一样,可以用在VisualC+、VisualBasic、Delphi,甚至Word和Access中。6在线帮助更加完善VisualBasic6.0有两张光盘的文档资料,里边包括VisualBasic6.0程序员设计手册、全文搜索索引、VisualBasic文档以及VisualBasic程序样例等。,1.2.1VisualBasic6.0的集成开发环境主窗口,VisualBasic6.0集成开发环境(IDE),提供了整套工具,方便用户开发应用程序。它在一个公共环境里集成了许多不同的功能,例如设计、编辑、编译和调试。下面介绍VisualBasic6.0的集成开发环境。当启动VisualBasic6.0时,可以见到如图1-1所示的窗口,其中会提示选择要建立的工程类型。,图1-1VisualBasic6.0中可以建立的工程类型,1.2.1VisualBasic6.0的集成开发环境主窗口,使用VisualBasic6.0可以生成下列13种类型的应用程序(图中仅看到10种,通过滚动条可看到另外3种):在图1-1的窗口中有3个选项卡:(1)新建:这个选项卡中列出了11种可生成的工程类型。(2)现存:这个选项卡中列出了可以选择和打开的现有工程。(3)最新:这个选项卡中列出了最近使用过的工程,用户可以选择和打开一个需要的工程。当选择“新建”选项卡中的“标准EXE”图标并单击“打开”按钮,可以打开如图1-2所示的VisualBasic集成开发环境窗口。,1.2.1VisualBasic6.0的集成开发环境主窗口,图1-2VisualBasic6.0集成开发环境,1.2.1VisualBasic6.0的集成开发环境主窗口,需要说明的是正常启动时,可能见不到图1-2中的“立即”窗口。在VisualBasic集成环境中的其他类似窗口,都可以通过“视图”菜单中的相应命令来打开和关闭。1标题栏标题栏位于主窗口最上面的一行,如图1-3所示。标题栏中间显示窗口标题及工作模式,VisualBasic有3种工作模式:设计(Design)模式、运行(Run)模式和中断(Break)模式。启动时它显示“工程1-MicrosoftVisualBasic设计”,表示它处于程序设计模式。(1)设计模式:可进行用户界面的设计和代码的编制,以完成应用程序的开发,如图1-2所示。(2)运行模式:运行应用程序,这时不可编辑代码,也不可编辑界面。此时,标题栏中的标题为:“工程1MicrosoftVisualBasic运行”。(3)中断模式:应用程序运行暂时中断,这时可以编辑代码,但不可编辑界面。此时,标题栏中的标题为:“工程1MicrosoftVisualasicbreak”。按F5键或单击工具栏的“继续”按钮,程序继续运行;单击“结束”按钮,程序停止运行。,1.2.1VisualBasic6.0的集成开发环境主窗口,2菜单栏VisualBasic集成开发环境的菜单栏中包含使用VisualBasic所需要的命令。它除了提供标准“文件”、“编辑”、“视图”、“窗口”和“帮助”菜单之外,还提供了编程专用的功能菜单,如“工程”、“格式”、“调试”、“外接程序”等菜单,总共13项菜单,如图1-3所示。,图1-3VisualBasic6.0集成开发环境的主窗口,1.2.1VisualBasic6.0的集成开发环境主窗口,VisualBasic6.0集成开发环境中的基本菜单有:(1)文件:包含打开和保存工程以及生成可执行文件的命令。(2)编辑:包含编辑命令和其他一些格式化、编辑代码的命令,以及其他编辑功能命令。(3)视图:包含显示和隐藏IDE元素的命令。(4)工程:包含在工程中添加构件、引用Windows对象和工具箱新工具的命令。(5)格式:包含对齐窗体控件的命令。(6)调试:包含一些通用的调试命令。(7)运行:包含启动、设置断点和终止当前应用程序运行的命令。(8)查询:包含操作数据库表时的查询命令以及其他数据访问命令。(9)图表:包含操作VisualBasic工程时的图表处理命令。(10)工具:包含建立ActiveX控件时需要的工具命令,并可以启动菜单编辑器以及配置环境选项。(11)外接程序:包含可以随意增删的外接程序。缺省时这个菜单中只有“可视化数据管理器”选项。通过“外接程序管理器”命令可以增删外接程序。(12)窗口:包含屏幕窗口布局命令。(13)帮助:提供相关帮助信息。,1.2.1VisualBasic6.0的集成开发环境主窗口,3工具栏工具栏在编程环境下提供对于常用命令的快速访问。单击工具栏上的按钮,即可执行该按钮所代表的操作。在缺省模式下,启动VisualBasic之后将显示“标准”工具栏。其他工具栏,如“编辑”、“窗体设计”和“调试”工具栏可以从“视图”菜单中的“工具栏”命令中移进或移出。工具栏紧贴在菜单栏下方,或以垂直条状紧贴在左边框上,如图1-3所示。如果用鼠标将工具栏从某栏下面移开,则它能“悬”在窗口中。一般情况下,工具栏在菜单栏的正下方。,1.2.2窗体设计窗口,“窗体设计窗口”也称为对象窗口。Windows的应用程序运行后都会打开一个窗口,窗体设计窗口是应用程序最终面向用户的窗口,是屏幕中央的主窗口。通过在窗体中添加控件并设置相应的属性来完成应用程序界面的设计。每个窗口必须有一个窗体名字,系统启动后就会自动创建一个窗体(缺省名为Form1),用户可通过“工程/添加窗体”来创建新窗体或将已有的窗体添加到工程中。每个窗体保存后都有一个窗体文件名(扩展名为.Frm)。应注意窗体名即窗体的“Name”属性和窗体文件名的区别。,1.2.3工具箱,系统启动后缺省的General工具箱就会出现在屏幕左边,其中每个图标表示一种控件,共有20个常用“部件”(即控件),如图1-4所示。,指针(选择对象)图片框(PictureBox)标签(Label)文本框(TextBox)框架(Frame)命令按钮(CommandButton)复选框(CheckBox)单选按钮(OptionButton)组合框(ComboBox)列表框(ListBox)水平滚动条(HscrollBar)垂直滚动条(VscrollBar)定时器(Timer)驱动器列表框(DriveListBox)目录列表框(DirListBox)文件列表框(FileListBox)形状(Shape)画线(Line)图像框(Image)数据库(Data),图1-4VisualBasic工具箱中的常用控件类型,1.2.3工具箱,用户可以将不在工具箱中的其他ActiveX控件放到工具箱中。通过“工程”菜单中的“部件”命令或从“工具箱”快捷菜单中选定“部件”选项卡,就会显示系统安装的所有ActiveX控件清单。要将某控件加入到当前选项卡中,需单击要选定控件前面的方框,如图1-5所示,然后单击“确定”按钮,选定的ActiveX控件就会添加到工具栏中。,图1-5“部件”对话框,1.2.4工程资源管理器,工程是指用于创建一个应用程序的文件的集合。工程资源管理器列出了当前工程中的窗体和模块,如图1-6所示。在工程资源管理器窗口中有3个按钮,分别表示“查看代码”、“查看对象”和“切换文件夹”。(1)单击“查看代码”按钮,可打开“代码编辑器”查看代码。(2)单击“查看对象”按钮,可打开“窗体设计器”查看正在设计的窗体。(3)单击“切换文件夹”按钮,则可以隐藏或显示包含在对象文件夹中个别项目列表。,1.2.4工程资源管理器,图1-6工程资源管理器图1-7属性设置窗口,1.2.5属性窗口,属性是指对象的特征,如大小、标题或颜色等数据。在VisualBasic6.0设计模式中,属性窗口列出了当前选定窗体或控件的属性及其值,用户可以对这些属性值进行设置。例如,要设置Command1命令按钮上显示的字符串,可以找到属性窗口的“Caption”属性,输入“开始”之类的字符串,如图1-7所示。,1.2.6窗体布局窗口,窗体布局窗口显示在屏幕右下角。用户可使用表示屏幕的小图像来布置应用程序中各窗体相对于主窗体的位置。图1-8显示了桌面上两个窗体放置及其相对位置。右键单击小屏幕,弹出快捷菜单,可通过该快捷菜单来对窗体启动位置进行设计,如要设计窗体Form1启动位置居屏幕中心,其操作如图1-9所示。,图1-8窗体布局窗口图1-9设计窗体启动位置,1.2.7代码编辑窗口,在设计模式中,通过双击窗体或窗体上的任何对象或单击“工程资源管理器”窗口中的“查看代码”按钮都可打开代码编辑器窗口。代码编辑器是输入应用程序代码的编辑器,应用程序的每个窗体或标准模块都有一个单独的代码编辑器窗口,如图1-10所示。,图1-10代码编辑器窗口,1.2.8立即窗口,例如:(1)在立即窗口中使用赋值符给变量赋值。即输入:X=3.14:Y=2:Z=30:P=True:K=False(2)使用“?表达式”或“Print表达式”输出其表达式的值。操作如下:?X+Y5.14输出结果PrintInt(X)+Y/24输出结果?NotPOrKAndPOrYZFalse输出结果,1.2.8立即窗口,在VisualBasic集成环境中,运行“视图/立即窗口”命令或按Ctrl+G组合键即可打开如图1-11所示的窗口。“立即”窗口是VisualBasic所提供的一个系统对象,称为Debug对象,作为调试程序使用。它只有方法,不具备任何事件和属性。通常使用是Print方法,使用格式为:Debug.print输出项列表例如:Debug.print“VB程序设计”运行后在立即窗口输出:VB程序设计在设计状态可以在立即窗口中进行一些简单的命令操作,如变量赋值,用“?”或Print(两者等价)输出一些表达式的值。,图1-11立即窗口,1.2.8立即窗口,操作结果如图1-12所示。此外,VisualBasic6.0中还有2个非常有用的附加窗口:“本地”和“监视”窗口,它们都是为调试应用程序提供的,本地窗口和监视窗口只在运行工作模式下才有效。,图1-12在“立即”窗口中的操作实例,1.3.1可视化编程,传统的编程方法使用的是面向过程、按顺序进行的机制,其缺点是程序员始终要关心什么时候发生什么事情,处理Windows环境下事件驱动方式的工作量太大。VisualBasic采用的是面向对象、事件驱动的编程机制。程序员只需编写响应用户动作的程序,如移动鼠标、单击鼠标等,编写代码相对较少。VisualBasic使用的可视化编程方法,是面向对象编程技术的简化版。VisualBasic提供多种控件支持可视化编程,利用它们可以快速创建强大的应用程序而不需涉及不必要的细节。在VisualBasic环境中,程序员不仅可以利用控件来创建对象,而且还可以建立自己的控件,这是Windows环境下编程的新概念。,1.3.2对象与类,1对象对象(Object)是代码和数据的集合。可以把对象看成日常生活中的各种物体,如一支钢笔、一辆汽车、一台电脑都是一个对象。一台电脑又可以拆分为主板、CPU、内存、外设等部件,这些部件又都分别是一个对象,因此电脑对象可以说是由多个“子”对象组成的,它可以称为是一个对象容器(Container)。在VisualBasic6.0中,对象可以由系统设置好,直接供用户使用,也可以由程序员自己设计。VisualBasic设计好的对象有:窗体、各种控件、菜单、屏幕、剪贴板等。用户使用最多的是窗体和控件。,1.3.2对象与类,2类类是同一种对象的统称,是一个抽象的整体概念,也是创建对象实例的模板,而对象则是类的实例化。属于同一类的所有对象具有同一组属性、方法与事件,只是其属性值不同,对事件的响应不同(取决于程序员的编程)。譬如,汽车是一个笼统的名称,是整体概念,我们把汽车看成一个“类”,一辆辆具体的汽车(比如你的汽车、我的汽车)就是这个类的实例,也就是属于这个类的对象。VisualBasic中工具箱上的控件是类,画在窗体中的各控件则是类的事例化,即是对象。,1.3.3属性,属性是对象的性质,对象中的数据就保存在属性中。属性是用来描述和反映对象特征的参数。每一种对象都有其属性,属性值决定了对象的外观和行为。例如,“控件名称”(Name)、“颜色”(Color)及“是否可见”(Visible)等属性决定了对象展现给用户的界面具有什么样的外观及功能。不同的对象具有的属性不尽相同,如命令按钮有“Caption”属性而无“Text”属性,文本框无“Caption”属性而有“Text”属性。控件属性的设置一般有两条途径:(1)如果在界面设计时设置对象的属性,需要使用属性窗口。这时只要在属性窗口中选中要修改的属性,然后在右列中键入新的值即可设置对象的属性。如标签、文本框、列表框、图片框控件的字体、颜色等属性。(2)如果要在程序运行中动态地更改对象的属性,可以使用VisualBasic的赋值语句,在代码窗口中通过编程设置,其格式为:对象名.属性名=属性值其中“对象名.属性名”是VisualBasic中引用对象属性的方法,如下述代码可以设置标签控件Label1的标题为“第一个应用程序”:Label1.Caption=第一个应用程序,1.3.4方法,方法是面向对象程序设计语言为编程者提供的用来完成特定操作的过程和函数。在VisualBasic中已将一些通用的过程和函数编写好并封装起来,作为方法供用户直接调用,这给用户的编程带来了极大的方便。因为方法是面向对象的,所以在调用时一般要指明对象。对象方法的调用格式为:对象.方法参数名表其中,若省略了对象,表示是当前对象,一般指窗体。例如:在窗体Form1上打印输出“VisualBasic程序设计”可使用窗体的Print方法Form1.PrintVisualBasic程序设计若当前窗体是Form1,则可写为:PrintVisualBasic程序设计,1.3.5对象事件与事件过程,1事件事件是VisualBasic预先定义的、对象能够识别的动作。每个控件都可以对一个或多个事件进行识别和响应,如窗体加载事件(Load)、鼠标单击事件(Click)、鼠标双击事件(DblClick)等。事件是一种预先定义好的特定动作,由用户或系统激活,在多数情况下,事件是通过用户的交互操作产生的。例如,窗体上有一个名为“CmdOK”的命令按钮对象,当鼠标指针被移动时,系统将跟踪鼠标指针的位置,当鼠标在该对象上单击一下,系统就给鼠标指针所指向的对象发送一个Click事件,如果该事件已编写了程序代码,系统则执行过程的程序代码,执行结束后,控制权交还给系统,并等待下一个事件。,1.3.5对象事件与事件过程,2事件过程事件过程是用来完成事件发生后所要执行的操作。当一个对象察觉到某一事件发生时(如Click等),就会对事件产生响应,即执行一段程序代码,所执行的这段程序代码就称为事件过程。对于窗体对象,其事件过程的形式如下:SubForm_事件过程名(参数列表)(事件过程代码)EndSub对于除窗体以外的对象,其事件过程的形式如下:Sub对象名_事件过程名(参数列表)(事件过程代码)EndSub例如,单击名为cmdOk命令按钮,使命令按钮变为不可见,则对应的事件过程如下:SubcmdOK_Click()Cmd0k.Visible=FalseEndSub,1.4.1窗体的结构,同Windows环境下的应用程序窗口一样,VisualBasic中的窗体也具有控制菜单、标题栏、“最大化”按钮、“最小化”按钮、“关闭”按钮以及边框等,如图1-13所示。窗体的操作与Windows下的窗口操作一样。通过鼠标左键拖动标题栏可以移动窗体;鼠标对准窗体边框,当出现双向箭头时拖动鼠标可以改变窗体的大小。建立新窗体后,它的大小、背景颜色、标题及窗体名称等特征需要根据应用程序的要求进行设置。,1.4.1窗体的结构,图1-13窗体的结构,“最小化”按钮,“最大化”按钮,“关闭”按钮,图标,控制菜单框,边框样式,标题,1.4.2窗体的属性,窗体的基本属性有:Name、Left、Top、Height、Width、Visible、Enabled、Font、ForeColor、BackColor等。在VisualBasic中的大多数控件基本上都有这些属性,在以后介绍其他对象时,这些属性还将详细介绍。1Name属性VisualBasic中任何对象都有Name属性,在程序代码中通过该属性来引用、操作具体的对象。首次在工程中添加窗体时,该窗体的名称被缺省为Form1;添加第二个窗体,其名称被缺省为Form2,依此类推。最好给Name属性设置一个有实际意义的名称,如给一个程序的主控窗体命名为“MainFrm”。这样在程序代码中的意义就很清楚,程序的可读性就好。,1.4.2窗体的属性,2Left、Top属性窗体运行在屏幕中,屏幕是窗体的容器,因此窗体的Left、Top属性值是相对屏幕左上角的坐标值。对于控件,Left、Top属性值则是相对“容器”左上角的坐标值,其缺省单位是twip。1twip=1/20点=1/1440in=1/567cm3Height、Width属性返回或设置对象的高度和宽度。对于窗体,指的是窗口的高度和宽度,包括边框和标题栏。对于控件,这些属性使用控件所在“容器”的度量单位。图1-14是屏幕(Screen)、窗体(Form1)和命令按钮(Ok)的Left、Top、Height、Width属性表示,读者要注意Left、Top属性值是相对“容器”左上角的坐标值。在VisualBasic中除了用屏幕、窗体作“容器”外,还有框架和图片框对象可作“容器”。,1.4.2窗体的属性,图1-14对象的Left、Top、Height、Width属性,1.4.2窗体的属性,例1-1在窗体Form1被加载时,将其大小设置为屏幕大小的1/2,并居中显示。通过窗体的Load事件来实现的程序代码为:PrivateSubForm_Load()Form1.Width=Screen.Width/2设置窗体的宽度,Screen为屏幕对象Form1.Height=Screen.Height/2设置窗体的高度。在水平方向上居中显示。Form1.Left=(Screen.Width-Form1.Width)/2在垂直方向上居中显示。Form1.Top=(Screen.Height-Form1.Height)/2EndSub,1.4.2窗体的属性,4Caption标题属性决定出现在窗体的标题栏上的文本内容,也是当窗体被最小化后出现在窗体图标下的文本。如图1-13中窗体的Caption属性值是“VB窗体”5字体Font属性组uFontName属性是字符型,决定对象上正文的字体(缺省为宋体)。uFontSize属性是整型,决定对象上正文的字体大小(缺省为9磅)。uFontBold属性是逻辑型,决定对象上正文是否是粗体(缺省为False)。uFontItalic属性是逻辑型,决定对象上正文是否是斜体(缺省为False)。uFontStrikeThru属性是逻辑型,决定对象上正文是否加一删除线(缺省为False)。uFontUnderLine属性是逻辑型,决定对象上正文是否带下划线(缺省为False)。,1.4.2窗体的属性,注意:如果使用窗体或其他“容器”对象无效,则在其中的所有控件也将无效。例1-2下面的程序是当文本框Text1不包含任何文本时,使命令按钮CmdOk无效。PrivateSubText1_Change()IfText1.Text=Then查看文本框是否为空CmdOK.Enabled=False使按钮无效ElseCmdOK.Enabled=True使按钮有效EndIfEndSub,1.4.2窗体的属性,7Visible属性用于确定一个窗体或控件为可见或隐藏。要在启动时隐藏一个对象,可在设计时将Visible属性设置为False,还可在代码中设置该属性使控件在运行时隐藏。8BackColor属性和ForeColor属性BackColor属性用于返回或设置对象的背景颜色,ForeColor属性用于返回或设置在对象里显示图片和文本的前景颜色,它们是十六进制长整型数据,在VisualBasic中通常用Windows运行环境的红-绿-蓝(RGB)颜色方案,使用调色板或在代码中使用RGB或QBColor函数指定标准RGB颜色。例如,将窗体Form1的背景色设置为红色,则可使用:Form1.BackColor=RGB(255,0,0)也可用十六进制长整型数据或VisualBasic系统内部常量给BackColor属性赋值。例如:Form1.BackColor=.其中,可以是窗体(Form)、图片框(PictureBox)或打印机(Printer)。具体说明如下:(1)输出项之间的分隔符“,”为分段格式,“;”为紧凑格式。(2)语句末尾为分隔符“,”或“;”,则该语句最后的输出位置为下一条print语句输出的起始位置。(3)若省略输出项,则输出一空行。VisualBasic将一行分为若干段,每14列为1段,若两个输出项之间用逗号间隔,则第2个数据项的输出位置从下一段开始;若两个输出项之间用分号间隔,则第2个数据以“紧凑”格式输出。,2.3.2Print语句,例2-3Print语句的输出格式及应用。PrivateSubForm_Click()Print123,888,-456,3.14Print123;888;-456;3.14Print123;888;abc,True;Print123,888;-456;3.14PrintPrint123,888,-456,3.14EndSub运行该程序时,在窗体上的输出结果如图2-1所示。,图2-1例2-3的输出结果,2.3.2Print语句,从例2-3的输出结果可知:(1)无论是分段格式还是紧凑格式,数值数据输出后都会尾随一个空格,输出正数时正号不显示、输出一个空格。这就是为什么图2-1中第二行中的123和888之间有2个空格、而888与-456之间只有1个空格的原因。(2)字符串数据原样显示引号内的内容,逻辑类型数据直接输出True或False。,2.3.3赋值语句,格式:=或.=功能:计算表达式值并转换为相同类型数据后为变量或控件属性赋值。说明:(1)为数值变量赋值时,表达式的值不得超过数值变量的数值范围,否则显示错误信息。(2)值为浮点类型的表达式四舍五入后向整型变量赋值。(3)任何类型表达式都可以向字符串变量赋值。(4)赋值号不是数学中的等号。,2.3.3赋值语句,例2-4编写一个实现两个变量值交换的程序。我们可以把两个变量A、B设想成分别装有牛奶和咖啡的两只杯子,现在要把牛奶倒到咖啡杯里,而将咖啡倒到牛奶杯里。可以这样来做:另取一只杯子(同类型变量)C,将A中的牛奶倒入杯子C,再将B中的咖啡倒入杯子A,最后将杯子C中的牛奶倒入杯子B。程序如下:PrivateSubForm_Click()DimaasInteger,basInteger,casIntegera=5:b=8Printa,b显示交换前的值c=a:a=b:b=c交换Printa,b显示交换后的值EndSub显然,将交换的过程写作“a=b:b=a”是错误的。,2.4.1算术运算符与算术表达式,1算术运算符如表2-3所示,VisualBasic共有7个算术运算符,除了负号是单目运算符,其他都是双目运算符。,表2-3算术运算符,2.4.1算术运算符与算术表达式,2算术运算符的优先级算术运算符之间的运算优先级从高到低如下所示,由此可知:指数运算优先级最高,而加、减运算优先级最低。(指数运算)(取负-)(乘*、除/)(整除)(求余Mod)(加+、减-)其中,整除和求余运算只能对整型数据(Byte、Integer、Long)进行,如果其两边的任一个操作数为实型(Single、Double),则VisualBasic自动将其四舍五入、再用四舍五入后的值作整除或求余运算。乘、除为同级运算符,加、减为同级运算符,同级运算从左向右进行。在表达式中加括号,可以改变表达式的求值顺序。,2.4.1算术运算符与算术表达式,3算术表达式常量、变量、函数是表达式,将它们加圆括号或用运算符作有意义的连接后也是表达式,书写VisualBasic的算术表达式,应注意与数学表达式在写法上的区别。例如:(1)不能漏写运算符,如3xy应写作3*x*y。(2)VisualBasic算术表达式中使用的括号都是圆括号。例2-5由下列数学式写出相应的VisualBasic算术表达式。写作:1/(1+1/(1+x)写作:-(a*a+b*b*b)*y4写作:(-a(bc)+b0.5)*(a-b)-0.5变量k是一个两位整数,求其个位数与十位数之和的算术表达式为:kmod10+k10,2.4.2字符串运算符与字符串表达式,字符串运算符有两个:“+”和“Nexti,8.1.1盘驱动器列表框控件,2盘驱动器列表框控件常用事件当盘驱动器列表框Drive属性的值发生改变时,引发Change事件。运行时单击盘驱动器列表框中某一驱动器图标,Drive属性值自动设置为所选择的驱动器名,因此引发盘驱动器列表框的Change事件。在代码中对盘驱动器列表框控件的Drive属性赋值也会引发Change事件。但如果所选的驱动器或所赋的值与盘驱动器列表框原来的Drive属性值相同,则不会引发Change事件,8.1.2目录列表框控件,目录列表框控件在工具箱中的图标为。目录列表框控件用于显示当前驱动器中文件夹(目录)列表,如图8-3所示,其中“VB98”为当前目录。目录列表框控件缺省的控件名称为:Dir1、Dir2、,图8-3文件夹(目录)列表,8.1.2目录列表框控件,1目录列表框控件常用属性(1)Path属性。Path属性返回或设置目录列表框的当前目录。Path属性决定目录列表框显示哪个目录的一级子目录结构。例如,图8-2中的目录列表框显示的是目录“VB98”的一级子目录结构。双击目录列表框的某一个表项,目录列表框的Path属性值被自动设置为被双击表项所对应的目录。如果双击盘x的根目录,则Path属性为“x:”;如果双击盘x的某一个子目录y(文件夹),则Path属性为“x:y”。注意:Path属性值最后一个字符是否为“”,取决于目录列表框的当前目录是否为根目录。,8.1.2目录列表框控件,同Drive属性一样,Path属性只能用程序代码设置,而不能在设计时通过属性窗口设置。为目录列表框的Path属性赋值的语句格式为:.Path=运行时单击目录列表框中某一文件夹(目录)图标时,该目录被突出显示,表示被选中。选中目录改变目录列表框的ListIndex属性,但并不改变Path属性,若要改变Path属性值为所选中的目录路径,应当执行语句:.Path=.List(.ListIndex)(2)ListCount属性。ListCount属性表示当前目录的一级子目录的数量,而不表示目录列表框中表项的个数。例如,在图8-2中,若当前目录“VB98”下的一级子目录已全部显示,则Dir1.ListCount属性值为5。,8.1.2目录列表框控件,(3)ListIndex属性。ListIndex属性表示被选中表项的索引号。目录列表框表项的索引号遵循以下规则:当前目录所对应的索引号为-1,当前目录的父目录所对应的索引号为-2,当前目录父目录的父目录所对应的索引号为-3,依此类推;当前目录的第1个子目录所对应的索引号为0,第2个子目录所对应的索引号为1,当前目录的最后一个子目录所对应的索引号为ListCount-1。因此,ListIndex属性取值范围为-nListCount-1,其中-n为根目录所对应的索引号。如在图8-2中,假定目录列表框Dir1的当前目录是“VB98”:目录“VB98”被选中时,Dir1.ListIndex属性值为-1;执行语句“Dir1.ListIndex=2”后,文件夹Tsql被突出显示;执行语句“Dir1.ListIndex=0”后,文件夹Setup被突出显示;执行语句“Dir1.ListIndex=-3”后,文件夹ProgramFiles被突出显示。,8.1.2目录列表框控件,(4)List属性。List字符串数组中的每一个元素都对应着目录列表框中的一个表项,都对应着一个具体的目录路径。该数组由系统自动生成,数组List的下标取值范围为-nListCount-1,其中-n为根目录所对应的索引号。如在图8-2中,Dir1.List(-1)表示当前目录“VB98”的路径“c:ProgramFilesMicrosoftVisualStudioVB98”;Dir1.List(-2)表示当前目录父目录的目录路径;Dir1.List(0)表示当前目录第一个子目录的目录路径;Dir1.List(Dir1.ListCount-1)表示当前目录最后一个子目录的目录路径;Dir1.List(Dir1.ListIndex)表示当前被选中表项所对应的目录路径。,8.1.2目录列表框控件,2目录列表框控件常用事件(1)Change事件。当目录列表框的Path属性值发生改变时,引发Change事件。运行时双击目录列表框的表项,Path属性值自动设置为被双击的目录路径,并引发Change事件。(2)Click事件。单击目录列表框控件Dir1的某一表项时,引发Click事件。被单击的表项被突出显示,ListIndex的值发生改变,但Dir1.Path属性没有改变,可以在事件过程Dir1_Click中写入语句“Dir1.Path=Dir1.List(Dir1.ListIndex)”,则可以在选择表项的同时改变Dir1.Path属性为被选表项所对应的路径。,8.1.3文件列表框控件,文件列表框控件用于显示当前目录中的文件列表,该控件图标为。文件列表框控件缺省的控件名称为:File1、File2、1文件列表框控件常用属性(1)Path属性。该属性同目录路径列表框的Path属性一样,用以设置当前文件列表框内所显示文件的路径。仅在运行时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论