VB详细讲义

更新时间:2024-06-05 03:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

设计1 新建VB工程 ...................................................................................................... 3 设计2 体验界面设计 ..................................................................................................... 6 设计3 初试事件代码 ..................................................................................................... 9 设计4 让界面更生动 ................................................................................................... 12 设计5 专用输出窗口 ................................................................................................... 13 设计6 专用输入窗口 ................................................................................................... 16 设计7 图像自动展示 ................................................................................................... 17 设计8 设计自行的车 ................................................................................................... 19 设计9 左右滚动字幕 ................................................................................................... 20 设计10 实现文件浏览 ................................................................................................... 21 设计11 使用数据库表.................................................................................................... 23 设计12 自己调制颜色 ................................................................................................... 24 设计13 程序绘图初步 ................................................................................................... 26 设计14 试让简单重复 ................................................................................................... 30 设计15 三个格式函数 ................................................................................................... 32 设计16 循环控制数组 ................................................................................................... 34 设计17 设计登录界面 ................................................................................................... 35 设计18 也做个记事本 ................................................................................................... 38 设计19 动态改变颜色 ................................................................................................... 40 设计20 打地鼠的游戏 ................................................................................................... 42 设计21 由课程查老师 ................................................................................................... 44 设计22 增减列表条目 ................................................................................................... 45 设计23 搬运列表条目 ................................................................................................... 46 设计24 鼠键起落事件 ................................................................................................... 48 设计25 描点作图方法 ................................................................................................... 50 设计26 母子型的窗体 ................................................................................................... 52 设计27 菜单设计初步 ................................................................................................... 53 设计28 设计29 设计30 设计31 设计33 设计34 设计35 设计36

工具栏的设计 ................................................................................................... 55 通用对话窗口 ................................................................................................... 56 自定义的方法 ................................................................................................... 57 自定义的函数 ................................................................................................... 58 其它循环结构 ................................................................................................... 60 程序调试问题 ................................................................................................... 62 应用程序发布 ................................................................................................... 63 顺天艺苑管理系统 ............................................................................................ 64

1

设计32 自定义的类型 ................................................................................................... 59

形 象 篇

2

?第一单元 可视设计

设计1 新建VB工程

一个应用系统的设计,是一项工程。工程(Project)——VB就是这样称呼的。

在新建一个工程之前,应准备一个专门的文件夹集中存放工程的各种文件文件。我们今后要做许多工程,为此先在D盘新建一个总的文件夹:MyVB吧。在这个文件夹下,为即将新建的第一个工程准备一个文件夹GC1. 这样,第一个工程文件夹的标识就是

D:\\MyVB\\GC1

VB一启动就弹出新建工程对话框,如图1。 ....

图1 新建工程对话框

这是一个3页的页框,看各页的标签(新建、现存、最新)就会明白各页的作用。

现在应该是用新建页吧。选择默认的工程类型——标准,单击打开按....EXE...

3

钮,就进入了VB的设计环境。

在开始接触VB设计环境的时候,建议大家用“只见树木,不见森林”的思想方法来对待这个环境。等将来“树木”见多了,自然就会认识“森林”的。学习,思想方法很重要哦。

现在我们面临的这个界面,是VB的设计模式界面(窗口标题栏有 [设计]....字样)。

首先我们注意到有如图2的那片区域,这就是工程设计区。外面的窗口是工程窗口。里面的窗口是应用程序运行的窗口,VB叫窗体(Form)。工程的设计实际上就是一个个窗体的设计,所以设计区主要是窗体设计的窗口。

图2 窗体窗口

我们可以先用鼠标把工程窗口适当拖大,或者索性最大化。

窗体是个设计对象。我们可以通过它周围的8个拖放点用鼠标把这个对象适..当拖大,这已经是老经验啰。

调整对象的大小,实际上设计到对象的高度(Height)和宽度(Width)两个属性的改变。现在我们把注意力转移到窗体窗口右边三个窗口中位于中间的那..一个——属性窗口,如图。 .......3.

要修改窗体的标题,涉及的属性名是Caption. 现在我们把这个属性的值改成“我的首个窗体”,立竿见影。我们要想改变窗体的底色,这涉及的属性名是

4

BackColor.

图3 属性窗口

关于窗口的结构和具体操作等未尽的话让老师解释吧。

现在工程和窗体都是系统自动命名的,在第一次保存时系统会让你给窗体文件和工程文件选择文件夹并依次命名。

窗体设计窗口右边三个窗口中最下面那个是窗体布局窗口。你可以在这里用鼠标把窗体移到屏幕中央,再运行(F5或运行菜单)窗体,看看设计的运行效果。

工程运行时窗口标题栏有 [运行] 字样,这是运行模式。关闭运行窗口回来,又是设计模式。现在退出VB,结束这一轮的学习。

5

设计2 体验界面设计

再次启动VB,继续设计上次的工程时,自然是用新建工程对话框的最新页打开工程。

但是窗体窗口并没有出现窗体。这就要用到窗体窗口右边三个窗口中的第一个——工程窗口。如图4。 ....

图4 工程窗口

在这里将窗体组展开就看见上次设计的窗体了,双击它就打开在窗体窗口供你编辑。

现在我们把注意力转移到窗体窗口左边的控件工具箱窗口,介绍在窗体上生成其它对象的方法。

第一个↑是选择指针,指示选择状态,其余的控件都是用来生成对象的。鼠标指向一个控件,停留片刻,就会显示该控件的提示。

注意:本教程中说的单击、双击都是指鼠标左键的动作;鼠标右键单击弹出对象的快捷菜单,以后就直接说某对象的右键菜单。

我们可以双击一个控件在窗体中产生一个对象。

如双击A控件产生一个标签,双击ab|产生一个文本框,双击 产生一个命令按钮。

我们也可以用先选择一个控件,再在窗体中拖拽出一个大小适当的对象的方法产生对象。

如选择框架控件

,拖拽出一个框架对象(起组合一类对象的作用);再选

6

择单选控件,在框架对象内拖拽出一个单选按钮对象,并把这个做法重复两

次,使框架内有三个单选按钮。如图5。

图5 生成对象的两种方法

两种产生对象的方法应该以第二种为主,因为拖拽的方法同时也在设计对象的大小,同时也能达到其它的预想目的。比如,三个单选按钮如果不是用这种方法产生的,很可能不能成为一组单选按钮(运行时每次只能有一个被选)。

反映对象位置和大小的属性有:Left,左边距;Top,上边距;Height;Width.不过这些在设计时一般都是用鼠标调整(属性值都是数)。

前面我们见过了标题属性,它反映的是显示在对象上的说明文字,属性值是字符串。现在,标签上的文字,命令按钮上的文字,框架上的文字,单选按钮旁边的文字都是起说明作用的,应该分别都对其Caption属性进行编辑。

BackColor,背景色;ForeColor,前景色(文字颜色);BorderStyle,边框样式;Font,字体(包括字体、字形、字号等)。这些属性多数对象都有。

文本框在运行时显示的文字是它的Text属性值(字符串)。标签的背景样式(透明与否)由它的BackStyle属性值反映。窗体设计是在一定大小下进行的,运行时如果最大化,就会露神,这可以通过它的MaxButton属性(值是逻辑常量)

7

进行控制。

还有同时选择多个对象进行统一的设计与布局(格式菜单)的方法,也是要掌握的。

就这么说了,留给你的工作可不少哟。请在老师的指导下进行设计吧。设计的参考目标如图6。

图6 首个窗体界面

顺便指出,选择一个属性时,属性窗口底部有关于该属性作用的说明,理解了说明后自己可以试着设计。工程窗口、属性窗口、窗体布局窗口、控件窗口等辅助设计的窗口,大小可以调整,可以拖到其它地方,不想用时可以关闭,要重新打开它们可以用视图菜单(这属于开发环境安排——视图问题哟)。 ..

小归纳:

把你已经涉及到的对象属性名归纳一下,至少写出它的英文单词、中文称呼,并想想它的作用与值的类型。

8

?第二单元 事件驱动

设计3 初试事件代码

程序运行时,用户在对象上单击(Click)一下,这叫发生了一个单击事件。..如果你希望这个事件能改变对象的某种状态或进行一项事务处理,就给这个事件编一段过程代码。

在对象的事件过程代码中要涉及对象,就用对象的名称。对象的名称是对象的内部标识,是对象的第一个属性。设计者可以按自己的想法去修改它。

我们就先按从简的原则,用汉语拼音缩写去命名代码要涉及的对象,以后再慢慢过渡到比较大众化的规范命名吧。

如我们想动态改变标签和文本框的状态,就把标签对象的名称改为BQ,把文本框对象的名称改为WBK. 这时属性窗口的对象选择栏就跟着改过来了。

顺便说一下,对象选择栏中BQ Label、WBK等是什么意思呢?意思是说BQ是Label类型的对象,WBK是TextBox类型的对象。英文解释是:

BQ (is) As (a) Label WBK (is) As (a) TextBox

这也是以后声明变量、对象等的语法哟。

现在来看看在哪儿写对象的事件过程代码。双击对象,或者在视图菜单中选择代码窗口操作,或者在对象的右键菜单中选择查看代码,都可以打开代码窗口。 ........

图7 代码窗口

9

一段代码是整个应用程序运行过程中的一个子(Sub)过程,所以以Sub开始、以End Sub结束(注意End Sub中间有空格)。Private(私有的)是对过程作用范围的界定。

写代码,首先要明确是为哪个对象的哪个事件过程而写。明确了以后,在过程名中就有反映。如上面的过程名

Form_Load( )

就反映出设计者选择的是窗体对象的载入(内存)过程,请注意它的格式。

总之,这里是摆好了架势让你书写过程代码哟。那我们就在命令按钮问个好的单击事件过程中先写一句代码:print “Hello,大家好哇!”,保存,运行,单击命令按钮几次看看。

这样就出现一个要处理的问题:怎么把窗体上显示的这些字符抹掉?为此我们再设计一个命令按钮清屏,它的单击事件代码:Cls. 运行看看。

第三个命令按钮换内容,它的单击事件代码:

BQ. Caption=”标签用于说明” WBK. Text =”内容常有变化”

标签的Caption、文本框的Text是默认属性,这言下之意请老师解释。 老师可以故意出点错,让调试窗口模式出现。

第四个命令按钮退出,它的单击事件代码:End. 第一、二、三个单选按钮的单击事件代码分别是:

BQ.Font=”黑体” BQ.Font=”宋体” BQ.Font=”楷体_GB2312”

代码中的Font约定指的是FontName(字体)。表示字体的字符串内容应该是设计字体时能看到的文字原样。

我们再给命令按钮换内容加使命令按钮问个好不可用和清屏不可见的代码:

Command1.Enabled=False Command2.Visible=False

作为对这些代码的复习,请老师用Rem和半角单引号两种方式给上面的代

10

码段和命令行加注释。注意两种代码视图。

最后,让我们用文件菜单的“生成工程??”操作把我们的工程编译成可执行文件,并移植到桌面来运行看看吧。

小归纳:

VB的三种工作模式:设计,运行,调试 代码窗口的两种视图:单过程,全模块 两种翻译方式:解释方式,编译方式 过程名的表示格式:对象_事件( )

巩固练习:

把上面的过程代码抄写一遍,并作初步理解。

11

设计4 让界面更生动

在窗体中使用个性化的图片、图形,可以让界面益发生动。

控制图标:Windows风格的窗体,左上角有一个控制图标。图标的英文是Icon,这也是窗体的一个属性名。我们就是用这个属性给窗体换个性化的图标(扩展名为ico或cur的文件)。

窗体背景图片:通过它的Picture属性装载(图片文件类型很多)。 形象化命令按钮:如果你想给命令按钮界面加个形象化的小图片,那就把它的Style属性换另一个值,再通过Picture属性装入图片,说明文字(Caption)可以有也可以没有。

图像控件:英文名为Image的控件,是专门用来加载图片的。通过Picture属性加载图片,通过Stretch属性处理图片与控件的关系。使用中你会掌握其中的细节。

图片框控件:英文名为PictureBox的控件。它的作用有点象窗体,通过Picture属性装入图片只是它的功能之一。要使控件自动适应图片,这涉及的是AutoSize属性。图片框有多种用途,是“窗体中的窗体”。

形状控件:Shape控件可以通过其Shape属性来设置多种形状的规则图形。BorderStyle、FillStyle、FillColor等属性基本顾名思义,细节都应该在操作中去掌握。

线段控件:静态设计主要涉及的属性是BorderWidth、BorderColor,这不用解释吧。

你可以根据以上的介绍自己去设计一个生动的界面。

12

?第三单元 输入输出

设计5 专用输出窗口

Print实际上是一种输出方法。事件与方法是对象行为的一种分类,它们的..共同点是都对应一段过程代码,不同点在于:事件要激发,方法供调用。Print是Form1.Print的省略写法,即调用窗体的Print方法。难道其它对象也有Print方法吗?是的,如图片框就有。Cls也是一种方法。

Print输出的内容,是一个或多个表达式的值。就是说,Print还有计算功能。半角的逗号和分号可以用来分隔各个值,它们还有指定显示格式的功能。细节问题结合实例来解释吧。

新建一个工程,在窗体的通用_声明过程中写上

Const Pi=3.1416 ?常量3.1416用Pi来代替

在窗体的单击事件过程中写上

X$=str(Pi) ?把Pi转换成字符串类型,赋给字符串型变量X Print Pi,X,Fix(Pi),Int(-Pi), ?截断和取整,标准格式,不换行 Print ?专门换行

Print Pi/180;”----度化弧度的进率,π取”&X ?紧凑格式,换行 Print rnd,rnd,rnd,rnd,rnd ?随机产生纯小数

运行看看。

关于Print的话题以后还要继续。下面介绍专用的输出窗口。

在窗体中设计一个弹出信息按钮,一个“接受反馈:”标签,说明后面的文本框内容。

在命令按钮的单击事件过程中写上代码:

Text1.Text = MsgBox(\信息内容\窗口标题\

其中,MsgBox( )是用专用窗口输出信息的函数,小括号中有三项交代,第一项和第三项的用途与形式已说明,第二项取默认的数。函数有值,这个函数的值取决于用户的响应,由文本框显示。

运行情况如下图。

13

图8 专用输出窗口

单击弹出信息,弹出一个小消息框,消息框中只有一个供用户响应的按钮:确定按钮。这就是上面说到的默认形式。

确定按钮已经得到焦点,用户直接回车或用鼠标单击它后消息框就完成使命,消失,同时文本框得到一个反馈值1.

请把代码与其执行效果的对应关系看清楚。

MsgBox( )小括号中的第二项决定弹出窗口的结构,根据需要设定。一般情况是这样的:

需要的按钮 一个确定按钮 确定和取消按钮 终止、重试和忽略 是、否和取消 是和否 重试和取消 代码中写 返回值 0或不写 1 2 3 4 5 1 2 3,4,5 6,7

编程的人就是根据返回值来判断用户单击了哪个按钮,以便采取下一步的行动的。

另外,关于随消息显示的符号图标,也数字化了,情况如下:

14

含义 表示危险 表示问号 表示警告 表示信息 数值 16 32 48 64

怎么用很简单:把这里的数值和前面的数值加在一起用,如3+16或19. 用二进制表示时,它们各自占位不同,不至于混淆。 这样一搭配,情形可多了,你就试试吧??

这是MsgBox函数。也有不作为函数的MsgBox语句,与函数不同的仅仅是不要括号,没有返回值。这样MsgBox语句只用于简单的信息显示。例如

MsgBox “请注意保存文件,系统即将关闭”

小问题:

1、试总结函数共同的结构特征。 2、函数名大小写有区别吗?

3、MsgBox函数和语句的区别在哪里?为什么函数要赋值而语句不要?

15

设计6 专用输入窗口

文本框既是输入文本的地方,又是输出文本的地方。它输入输出的内容,即它的Text属性值,系统是当字符串处理的。

给文本框的PasswordChar属性设定一个字符值,如*,就能使输入的内容不照原样显示。利用这一点,文本框可以用作密码输入框。

关于文本框的话题以后还要继续。下面介绍专用输入窗口。

为了更好地理解,我们还是新建一个工程,在窗体上用一个用户输入命令按钮,一个接受输入的文本框Text1。

给用户输入的单击事件写这样的代码:

Text1.Text = InputBox(\输入提示\窗口标题\默认值\

运行时单击按钮,弹出的对话框如下图。

图9 专用输入窗口

请把InputBox( )函数小括号中的三项与对话框的对应关系看清楚。 默认值是估计用得最多的字符串,可以节省用户的操作时间。用户完全可以不用它,自己键入一个值,再按确定按钮提交。在这里,提交的内容被文本框接受。

顺便说一下,输入对话框默认的显示位置在屏幕中心线下约1/3处,这个也可以在InputBox( )函数中指定。窗口运行时可以移动嘛,就忽略它。

如果需要的是数值,原则上应该先用Val( )函数将输入的内容转换为数值,再参加算术运算。这些问题指出来,我们自己可以去验证。

16

?第四单元 时钟控制

设计7 图像自动展示

有两个图形控件,前面的那个是图片(Picture),后面的那个是图像(image)。图像控件功能单一些,用于显示指定的图像。我们先用它吧。

我们可以用画图工具自己制作10张图片(以第一张为基础,变个颜色就行),放在D:\\myvb\\tp10文件夹中,并让图片文件名为

0.bmp,1.bmp,2.bmp,??,9.bmp

我们打算用时钟控件来控制这组图像的自动展示,每隔3秒钟换一幅图像,效果如下图。

图10 图片展示

1、界面设计。

一个标签,标题为“看我画得好不好”,酌情修饰。 一个图像对象,名称为image1,设计时可以不要图像。 一个时钟对象,名称为Timer1,运行时不会显示。

17

2、属性设计。

将Timer1的间隔时间属性InterVar的值设为3000(毫秒)。 3、代码设计。

图11 图片展示代码

一是在通用过程中声明(全局)变量n; 二是在窗体载入过程中给n赋初值;

三是在时钟对象的Timer过程中给图像对象指定图像文件标识: Image1.Picture = LoadPicture(App.Path + \让n的值变化并对n值的越界进行归零处理:

n = n + 1 If n = 10 Then n = 0

这就为3秒钟后的下一次执行这个过程作好了准备。

本来以为把n转换为字符串后就可以和扩展名连接得到文件名了,可是系统总是提示找不到文件,原来是由n转换来的字符串还保留着符号位,所以再取它右边的1个字符。其余由老师解释吧。 小变通:

1、如果告诉你Enabled属性是反映对象能用与不能用(变灰)的,你能让自动展示停下来(不结束运行)吗?

2、你能设计一个命令按钮,当展示进行时是暂停,当展示暂停时继续吗?

18

设计8 设计自行的车

界面如图。运行时自行车自动从左到右移动,最后停在窗体右边。

图12 自行的车

设计步骤及要点如下:

1、准备一个文件夹,把自行车的图片文件放入其中。

2、新建VB工程,通过工具(菜单)→选项→通用页取消设计网格。标题改为“自行的车”,底色设置与图片底色溶合。

3、在窗体中用图像控件载入自行车图片,并将其Left属性值设为0,stretch属性值设为True(图片适应控件)。将窗体宽度设为:10000+图像控件宽度。

4、在车下面用线段工具画一条水平线(路),其粗细由BorderWidth属性调整。

5、用一个时钟控件,将其InterVal属性值设为100(毫秒),编写其Timer事件代码如下:

Image1.Left = Image1.Left + 100 ?每次前进100缇 If Image1.Left >= 10000 Then Timer1.Enabled = False

代码第二句是让自行车适时停下来,其中的帐这样算:车身长度-图像长度=10000,即车的左边距不超过10000时整个车身还在画面上。

还有个帐:每次前进100缇还没有跳跃感,每100毫秒(1/10秒)前进一次还没有间断感,10000缇÷100缇=100(次),走完全程需要10秒钟,给人的感觉不快也不慢。

练习:设计一个象电影片头字幕那样自下而上的滚动字幕。

19

设计9 左右滚动字幕

就是像密码锁上的数字那样在固定位置实现绕轴滚动似的效果。想象得到吗?

比如滚动的文字是“热烈庆祝中华人民共和国成立六十周年!”这可以用一个标签来承载。把标签的AutoSizi属性值设为True,好让标签大小适应文字。为了代码书写简洁,把标签的名称改为BQ得了,并请注意标签的Caption是默认属性,字符个数是18。

用一个时钟来控制滚动,时间间隔设为500(半秒)吧。所谓从右到左滚动,其实是把字符串左边的字符截下来接在右边组成新字符串。所以时钟的Timer事件代码如下:

BQ=Right(BQ,17)+Left(BQ,1)

运行一下看看。

字形和修饰有粗体FontBold、斜体FontItalic、下划线FontUnderline等,它们可以同时选择,用复选框来控制比较合适。

你可以用一个单选按钮和一个复选框来运行检验一下,单击两次时它们的反应是不一样的:复选框状态有反复的改变,而单选按钮不是。所以复选框的单击事件要使用控制语句。

复选框的Value属性值有1(被勾选)、0(不被勾选)和2(不可选)三个(单选按钮的Value属性值是真和假)。控制往往是(设复选框的名称为FX)

If Fx.Value=1 Then … Else … End If

这样的结构。

其它诸如控制字体、字号、字的颜色,滚动速度的设计,相反的滚动方向以及任意文本的滚动等,大家自行完成吧。

20

?第五单元 文件与表

设计10 实现文件浏览

应用程序中常要对文件进行操作,VB也提供了磁盘、文件夹、文件三个列表框控件。怎么通过设置把它们配合起来使用呢?

可以先把三个对象都建立起来,布好局。

图13 文件类控件

1、要想在程序启动时显示的驱动器是D盘,可以在窗体的Load事件中写这样的代码:

Drive1.Drive = \

2、在磁盘对象的Change事件中写这样的代码:

Dir1.Path = Drive1.Drive

就让磁盘和文件夹联系起来了。

3、在文件夹对象的Change事件中写这样的代码:

File1.Path = Dir1.Path

21

就让文件夹和文件联系起来了。

4、单独使用某个控件时,主要是用字符串的形式给盘符或路径属性赋值。 5、我们现在向软件学习。我们想知道,文件控件显示的文件类型由哪个属性决定?默认的肯定是所有文件,我们就在属性窗口找值为*.*的属性,发现它是Pattern

单独使用文件控件时,Pattern属性的值是通配的文件标识符形式的字符串。如:

”D:\\Images\\*.jpg”

小小思考:我们现在想在前面设计的基础上加一个文本框,当在文本框内输入文件类型并回车后,文件控件按我们指定的类型显示文件。该怎么设计?

22

设计11 使用数据库表

对于我们学过VFP的人来说,用VB创建一个数据库并在其中创建数据表并不是太难的事情;如何让窗体呈现数据表的记录数据也有章可循。

1、创建数据库与数据表

外接程序→可视化数据管理器,打开可视化数据管理器窗口。

在其中,文件→新建,选第一种类型(Access)的数据库,输入数据库名称,选择存储路径(你的工程文件夹)并保存。这时数据库是空的,我们要在其中建立数据表(表在库文件中)。

在数据库窗口中新建的数据库的右键菜单中选择“新建表”,会弹出表结构对话框,首先输入表名,单击添加字段按钮,在弹出的添加字段对话框中建立一个字段的结构,确定后添加字段对话框关闭,该字段即加入到表结构对话框的字段列表中。

接下来就是输入数据了。在数据库窗口中的数据库对象下找到新建的数据表对象,双击表名,即进入表记录编辑。

2、利用数据控件联系库与表

数据控件上显示的文字也是Caption值。

Connect属性值指明联接的数据库类型,此处为默认的Access类型。 DatabaseName属性值指定数据库文件名。 RecordSoure属性值指定数据表名。

这样,一个数据控件就已经联系到具体的表了。剩下就是将字段数据与相应的控件绑定。

3、(例如)用文本框绑定字段

文本框一般可绑定到字符型、数值型、日期型、备注型等字段。

我们首先要通过它的DataSource属性指明它联系的数据控件,这样再通过DataField属性选择表的字段时,就有现成的字段供你选择。这就实现绑定了。

把所有想显示出数据的字段都绑定到可视控件上后,利用数据控件可实现首记录、上一条、下一条、末记录的翻查。

23

?第六单元 颜色坐标

设计12 自己调制颜色

图14 用户配色

这里,反映颜色的实际上是一个标签的底色。调制三原色的是由滚动条控件(不是文本框里的那个滚动条)产生的三个滚动条对象。运行时,只要移动了一个滚动条颜色就会自动显示。设计要点如下: 1、设计一个标签对象,标题为空,名称为LblYS.

2、设计标题分别为红、绿、蓝的三个标签。因为格式一样,可以先设计好一个,用复制→粘贴的方法产生另外两个(这样会产生标签数组,不必管它)。

3、先用控件工具栏的滚动条控件产生一个滚动条,设置好如下属性: Caption:红 名称:HsbYS Min:0 Max:255 SmallChange:1 LargeChange:5 再用复制→粘贴的方法产生另外两个,这样产生的滚动条数组HsbYS,各对象的名称就是

HsbYS(0), HsbYS(1), HsbYS(2)

4、给滚动条数组HsbYS的Changge事件编写代码:

LblYS.BackColor = RGB(HsbYS(0).Value, HsbYS(1).Value, HsbYS(2).Value)

24

这样,运行时只要数组中的一个Value值发生变化,就会执行代码,给标签底色赋新值。

拓展提示:

1、这里是给标签配底色,用颜色的地方很多,如果把它作为应用程序的一个亮点,会使程序个性化、人性化。

2、这里是通过配色讲滚动条的用法,其它凡是用到有上下限的数量的地方,都可以考虑用滚动条是否合适。

25

设计13 程序绘图初步

1、新建一个标准EXE工程,将窗体的高度设为4500,宽度设为7500(默认单位是缇)。我们先画一条从原点出发到屏幕中间的直线来感受一下系统坐标系(把代码写在窗体的单击事件过程中):

Line (0, 0)-(2000, 2000)

运行并单击表单看看。

图15 感受系统坐标系

看到这个效果,你能说出系统坐标系的原点位置、x轴的方向和y轴的方向吗?

其实呀,对象的Left、Top就是它的左上角的坐标;我们可以用对象的Move方法来移动该对象

Move 横坐标,纵坐标

就是同时改变对象的Left、Top属性值。

2、我们再以(2000,2000)为中心、1000为半径画一个圆(代码加在画线的代码后面得了):

Circle (2000, 2000), 1000

26

3、上面两句画图的代码再接着加的参数就是颜色,用红绿蓝三原色配置,每种颜色的深度用0~255的整数表示。现在把两句代码改成:

Line (0, 0)-(2000, 2000), RGB(255, 0, 0) Circle (2000, 2000), 1000, RGB(0, 0, 255)

运行看看。

4、试着对画线的代码后面再加B或BF,看看效果。加B画的是什么?加BF又怎么不一样?

5、现在在窗体右边加上一个图片框对象,放大一些,注意它的名称是Picture1,在图片框对象的单击事件过程中写上如下的代码:

Picture1.Line (0, 0)-(2000, 2000), RGB(255, 0, 0), B Picture1.Circle (2000, 2000), 1000, RGB(0, 0, 255)

运行后分别在窗体和图片框上单击,效果如下图。

图16 画矩形和圆

画线、画圆都是方法。方法是一段程序代码。这里用到的方法是系统提供的,我们也可以自己编写方法,那是后话。方法前不加对象默认是窗体的方法,加对象就是那个对象的方法。

27

小变通:

1、CLS是清屏方法,你能把它分别用于窗体和图片框(把画的图清掉)吗? 2、上面代码中的数值都是用的常量,其实可以用变量或值是数的式子(数值型表达式)。告诉你这一点,你能画出10个同心圆(代码别太笨)吗?

28

动 作 篇

29

?第七单元

设计14 试让简单重复

Print是调用窗体对象的一个方法Form1.Print的简写。Cls是清屏方法,Move是移动方法;图片对象也有这些方法。

窗体对象后面跟的是对该方法未尽事宜的进一步交代,叫参数。在命令按钮的单击事件过程中写上

Print “简单”

就会在窗体上显示“简单”两个字。

要让“简单”这两个字重复9次,不必写9个“简单”,只需要让打印一个“简单”这个简单动作重复9次。用For循环来组织这个工作,代码为: For n=1 to 9 ?n是循环变量,初值为1,终值为9,每次步进1 Print “简单” Next n

这样每次都会换行,在打印项后面加分号就不会换行。如果想打完后再换行,就把代码改成

For n=1 to 9

Print “简单”; ?不换行,下次紧接着输出 Next n

Print ?换行

这样每按一次按钮就输出一行。要想按一次就输出9行,就再用一个循环把上面的动作重复9次。

For m=1 to 9

For n=1 to 9

Print “简单”; Next n Print

Next m

30

把n的初值设为m,则随着m的增加,n取值的个数就减少?? 简单简单简单简单简单简单简单简单简单 简单简单简单简单简单简单简单简单 简单简单简单简单简单简单简单 简单简单简单简单简单简单 简单简单简单简单简单 简单简单简单简单 简单简单简单 简单简单 简单

要是把n的终值设为m(初值为1)呢??这离打印九九乘法表还有多远?

31

设计15 三个格式函数

在print语句中,我们学会了用逗号和分号控制显示内容的格式。这还远不能满足实际需要。

1、有时我们需要在显示的内容之间留出确定数量的空格,就使用SPC( )函数。如

For n=1 to 10

Print “#”;spc(20);”#” Next n

打印出的图案如右图。

图17 用spc( )的效果

2、有时我们要指定的位置显示内容,就使用TAB( )函数。如 For n=1 to 10

Print tab(n); “#”;spc(20);”#” Next n

打印出的图案如右图。

图18 用tab( )的效果

注意这里代码中都是使用分号,它纯粹起分隔的作用。

32

3、有时我们要按照一定的格式显示一个量,就使用FORMAT( )函数。如 Print format(2.71828,”#.##”)

Print format(13009000.84,”$0##,###,###.#”) Print format(time,”hh:mm:ss a/p”) Print format(Date,”y-m-d”)

“y-m-d” 格式显示的年份部分是天数。你可以试着用两个y、三个y看看分别对应着什么样的年份格式;再依次试着对月份加m,对日加d,看看效果。

关于格式字符串中符号的用法大家自己去想象、试验、查资料,这里罗列出来没多大意思。

小小思考:

1、你能按你想象的格式做个带日历的时钟吗? 2、你能设计出显示下面的图案的程序吗?

图19 用格式函数

33

设计16 循环控制数组

要用到同一性质的一组变量时,最好用数组。如记录一个学生的入学平均成绩以及第一、第二、??、第六学期平均成绩用数组

Pj(0),Pj(1),Pj(2),Pj(3),Pj(4),Pj(5),Pj(6)

就这样声明:

Dim pj(6) as single

要是不记入学平均成绩,就这样声明:

Dim pj(1 to 6) as single

用数组的好处是可以简化代码。如要输出各个学期的平均成绩可以用循环结构的代码:

For n=1 to 6 Print pj(n) Next n

有时候要处理一个表格的数据,如一个学生各个学期各门课的成绩

学期 课 程 1 2 3 4 5 1 2 3 4 Cj(1,1) Cj(1,2) Cj(1,3) Cj(1,4) Cj(1,5) … … Cj(4,1) … … …

… … … … … … … … Cj(4,5) 就要用到两个下标的数组,第一个下标是学期序号,第二个下标是课程序号。因为两个下标都不是从0开始的,就这样声明这个二维数组:

Dim cj(1 to 4,1 to 5) as single

二维数组一般用二重循环控制,外循环控制第一个下标,内循环控制第二个下标,这样处理数据就是逐行进行的。

你能利用循环输入和输出数组的数据吗?

34

?第八单元 多窗体多行文本

设计17 设计登录界面

文本框的PasswordChar属性的设置可以使文本框成为密码输入框。 我们现在来制作一个应用程序的登录界面,运行效果如下图。

图20 登录界面

第一步:新建一个标准EXE工程,把窗体调到适当大小,上浅蓝底色,标题换成“欢迎登录”。

第二步:制作标题分别为“欢迎使用本系统!”、“用户:”、“密码:”三个标签,适当选择字体、字号、透明性等。

第三步:制作两个文本框,适当放大字号,设置Text属性为空,并设置密码文本框的PasswordChar属性值为*。

第四步:制作两个命令按钮登录和取消。将取消按钮的Cancel(取消)属性值设置为Ture. 这样,按取消按钮就和按ESC键一样的效果(一个窗体上只允许一个按钮这样设置)。

第五步:新建另一个窗体Form2,标题为“主窗体”,内容随意。

35

第六步:编写登录按钮的单击事件代码—— Private Sub Command1_Click()

If Text1= \ And Text2 = \ Then

Load Forme2 ?将主窗体装入内存 Form2.Show ?显示主窗体 Form1.Hide ?隐藏登录界面 Unload Form1 ?卸载登录界面 Else

Print \忘记密码?\End If End Sub

关于用if…end if结构做多分支控制的用法,介绍如下: If 假设情况一 Then

假设情况一成立时执行的语句块一

[ElseIF 假设情况二 Then

假设情况二成立时执行的语句块二]

[ElseIf 假设情况三 Then

假设情况三成立时执行的语句块三]

······ [Else

所有条件都不成立时要执行的语句块]

End If

即:如果“情况一”成立,则执行“语句块一”;否则如果“情况二”成立,则执行“语句块二”······;如果所有情况都不成立,则执行 Else 之后的语句块并最后跳出判断过程。

再举一例:假设输入学生成绩(Score),如果分数小于 60 ,标签(LblShow)显示“成绩不及格”;如果分数大于 90 ,标签显示“成绩优秀”;如果分数介于两者之间,标签显示“成绩优良”。代码如下——

36

If Score < 60 Then

LblShow.Caption = \成绩不及格\

ElseIf Score > =90 Then ?ElseIf中间不空格

LblShow.Caption = \成绩优秀\

Else

LblShow.Caption = \成绩优良\

End If

但是多分支一般还是用Select case…End case结构来控制。如处理上面的问题用这样的代码:

Rem 先把0-29分变成0,30-59分变成1,60-89分变成2,90分以上变成3.

Dj=Fix(score/30)

Select case Dj ?Dj为测试变量 Case 3 ?3为测试变量的值 Print “成绩优秀” Case 2

Print “成绩良好” Case else

Print “成绩不及格” End select

先对分数作了一个处理,代码变得很简洁。不作处理也是可以的,只是代码不会这么简洁。有兴趣可以去看其它书籍。

37

设计18 也做个记事本

控件工具箱中没有“编辑框”控件,VB是把它和文本框合成了一个控件,因为编辑框就是多行的文本框,设置文本框的多行属性值为真就行。

MultiLine=True,同时加大文本框高度,ScrollBars(滚动条类型) 我们现在来利用文本框的多行属性和VB调用Windows系统资源的本领制作一个相当于记事本功能的简单文本编辑器。

1、用户要求:可以在编辑窗口输入文本;对输入的文本可以进行复制、粘贴、清除操作;还能在两个标签上分别显示选中文本的起始位置、选中文本的长度。

2、界面分析:根据要求,我们需要制作一个文本框控件(TxtNr)作为内容输入窗口;另外还有四个按钮,分别是复制按钮(CmdCopy)、粘贴按钮(CmdPaste)、清除按钮(CmdClear)、退出程序按钮(CmdQuit);还需要两个用来显示所选文本起始位置的标签一(LblStart)和显示所选文本长度的标签二(LblLength)。

图21 我的记事本

38

3、属性设置:文本框控件的 Multiline(多行)属性要设置为 True ,用垂直滚动条不用水平滚动条,这样文本框才能自动换行。

4、程序书写:

A、文本框(TxtNr)的鼠标事件

对文本的选择,可以理解为这样的过程:先在欲选择的文本前点击鼠标,按下左键不放,拖动鼠标直到选择文本的结束处,最后松开鼠标。这说明,松开鼠标代表着文本选择的结束,从而应该在文本框的鼠标弹起事件(MouseUp)中书写代码,以改变两个标签的标题。 具体代码如下:

Private Sub TxtNr_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

Rem 括号中这一长串内容大家不必管它,这主要是产生位移时的坐标变动。 LblStart.Caption = \起始位置:\ ?&是字符串连接运算符。 LblLength.Caption = \文本长度:\End Sub

B、复制按钮的点击事件: Private Sub CmdCopy_Click()

Clipboard.SetText TxtNr.SelText ‘调用Windows剪贴板的SetText方法 End Sub

C、粘贴按钮的点击事件: Private Sub CmdPaste_Click() TxtNr.SelText = Clipboard.GetText End Sub

D、清空按钮的点击事件: Private Sub CmdClear_Click() TxtNr.Text = \End Sub

5、退出程序按钮的点击事件: Private Sub CmdQuit_Click() End '程序结束,退出程序。 End Sub

39

?第九单元

设计19 动态改变颜色

图22 彩光四射

程序运行时,每隔1/10秒画一条从原点出发的直线段,线段的终点和颜色是随机的。单击窗体停止且清屏,双击窗体又开始画线。设计要点如下:

1、这里涉及到时间问题,可以在窗体中放一个计时器对象,Interval=100毫秒,其Timer事件就是画一条线:line (0,0)-(x,y), Qbcolor(ys)

2、线的终点坐标(x,y)和颜色ys都应该是变量。这三个变量可以在通用(对象)中声明(过程):Dim x, y As Single, ys As Integer

3、我们自定义窗体的坐标系:把坐标原点放在中央,坐标轴显示出来的刻度在(-50,50)间。这样屏幕左上角的坐标为(-50,50),右下角的坐标为(50,-50).

Scale (-50, 50)-(50, -50)

这个工作在窗体的Load事件中完成。

4、画线前随机生成(-50,50)间的x和y,以及0到15的整数ys作为颜色号:

x = Rnd * 100 - 50

40

本文来源:https://www.bwwdw.com/article/g6j6.html

Top