当前位置:文档之家› Visual_Basic6.0_基础知识

Visual_Basic6.0_基础知识

第1章Visual Basic 6.0 基础知识

完整版教材

§1 V isual Basic的基础知识

一、概念和术语

1,对象(Object)

事物都可称作对象,比如桌椅就是对象,在V isual Basic里对象主要分为两类:Form和Control。

Form:窗体或称表单,其实指的就是window。

Control:控件,指的是各种按钮、标签等等。

2,属性(Property)

指的是对象的属性,比如姓名、性别、民族、籍贯都是你这个对象的属性。Caption、Left、Name是一个命令按钮的属性。

3,事件(Event)

事件是发生在对象上的动作。比如敲桌子是一个事件,它是发生在桌子这个对象上的一个动作。比如Click、Dblclick或LostFocus是发生在文本框控件上的事件。然而事件的发生不是随意的,某些事件仅发生在某些对象上而已,比如“逃避早操被抓住”可以发生在学生这个对象上,但它不会发生在老师这个对象上。

4,方法(Method)

这是一个直译,是一个较难理解的概念,它是对象本身内含的函数或过程,它也是一个动作,但不称作事件,在Visual Basic 里,方法和事件是这样的:

事件:

Private Sub对象名_事件名

(事件内容)

End Sub

方法:对象名.方法名

所以方法是一个简单的不必知道细节的无法改变的事件,同样,方法也不是随意的,一些对象有一些特定的方法。如果以上概念你记不住,不要紧,实践中你会明白一切,请继续学习。

二、Visual Basic 的开发周期

1,想清楚你想做到什么;

2,拿起笔在纸上画出你的用户界面;

3,拿起鼠标在屏幕上画出你的用户界面,确定对象的属性;

4,告诉计算机你要做的事;

5,让程序运行,看看能否工作;

6,如果不能工作,不必难过;

7,找出那个错误,重新开始。

你应该养成一些良好的习惯,这样在你编大程序时不至于丢三落四,为一些本来可避免的错误反复做第六步和第七步。

三、Visual Basic的存储和运行

1,编写的程序和对象的属性一块儿存在frm文件里;

2,整个程序里包含着一个或许多frm文件,Visual Basic将所有frm文件名存入一个vbp

文件里,若丢失了一个vbp文件,尽管frm文件仍在磁盘上,但程序将不能运行了;

3,如果你的程序已经自以为成功了,你可以把它编译成EXE文件,这样做的好处是:(1)在没有Visual Basic 的环境下可以运行;

(2)速度提高;

(3)别人不知道你的编程方法,还以为你是个编程专家,对你的编程效率大加赞叹。

更商业化的做法是做一张安装盘,Visual Basic 6.0在这方面也为你准备了工具,我们以后会讲到这个工具

四、Visual Basic的不同之处

1,建立用户界面。对Visual Basic来讲,用户界面是由你直接在屏幕上画出来的,所以Visual Basic的用户界面看上去总是十分完美。

2,程序对用户界面反应。在Visual Basic里有许多事件等待你去填写代码,它自动也知道向机器解释这个事件,仅此一点就已经省去你的许多时间。

3,结构化的语言。在Visual Basic里似乎没有主程序一说,所有的代码都在一个一个模块里,所以所有的程序看起来都是不很长。

五、Visual Basic的不足之处

Microsoft的C++程序员是不会开发出一样东西之后,让自己失业的,大多数简单好用的东西都有它的限制,Visual Basic也是一样。

1,C++和Pascal有更多的对计算机的控制,所以Windows是用C和汇编语言编的,UNIX 也是用C语言编的,想用V isual Basic做一个操作系统是不可能的;

2,C++和Pascal是一种速度更快的语言,所以如果速度在程序中很重要,则Visual Basic 难以胜任;

3,V isual Basic不能在Macintosh、OS/2上运行,也不能在小型机或巨型机上运行。

当然,任何一门语言的精通都需要长时间的“玩耍”,然而现在,我们只须从玩Visual Basic 开始。

§2 制作第一个V isual Basic程序

一、我们要做什么

1,我们要做的第一步是确立我们想做什么,我们想做的第一个自已的Visual Basic程序是让一张幸福的小脸眨眼睛的程序。

2,绘制用户界面,这是第二步。

在开始菜单里选程序项,选择Visual Basic 6.0组,选择V isual Basic 6.0,进入V isual Basic 环境。下面是画控件的方法:

1,单击工具栏里想画的控件(这个工具栏出现在Visual Basic界面的左边);

2,在窗体里单击并拖曳鼠标,画出控件(打开Visual Basic时,会有一个名为Form1的空白窗体出现)。

二、绘制用户界面

1,单击工具栏里的选项按钮控件(OptionButton),单击并拖曳鼠标,在Form1里,画一个选项按钮,使它看起来象图示一样;

2,再画三个选项按钮;

3,单击工具栏里图标控件(Image),单击并拖曳鼠标,在窗体里,画一个图标轮廓;

4,再在旁边画四个图标;

5,单击工具栏里命令钮控件(CommandButton),单击并拖曳鼠标,在窗体里,画一个按钮;

6,从File菜单里选择Save File项;

7,在Save对话框填上HellloVB,它的扩展名是frm,单击OK钮;

8,从File菜单选择Save Project项;

9,在对话框里填上HelloVB,它的扩展名是vbp,单击OK钮。

现在,我们已完成了用户界面的一部分设计设计,运行的时侯它看起来就是现在这个样子的。

三、精确设置对象的属性

首先,我们不一定要设置对象的属性,V isual Basic有对其对象属性的缺省值,其次,尽管每个对象有数十个属性,但我们往往只须改变其中的几个值而已。可以在设计阶段改变对象属性,也可以在运行阶段改变对象属性属性。在这个程序里我们通过设计阶段的改变属性的方法和运行阶段的改变属性的方法来实行全部的功能。下面是设置属性的方法:1,选择需要改变属性的对象(用鼠标在控件上单击,这时在控件周围出现八个小黑块,表示你已选上了这个控件);

2,按F4打开属性窗口;

3,选择想要改变的属性;

4,赋新值。

现在开始设置属性。

1,选择Form对象,按F4键,出现Property窗口;

2,选择Caption属性;

3,通过输入“My First V isual Basic Application”来改变设置;

4,选择Icon属性,单击属性栏旁边标有“…”的键,出现Load Icon对话框;

5,选择VB\icons\misc\face03.ico;

6,按OK键

7,选择Option1选项按钮,按F4键,出现Property窗口,选择Name属性,键入“optBoth”。其余的属性设置是这样的:

控件属性设置值

Option1 Caption 睁眼睛

Option2 Caption 眨左眼

Name optLeft

Option3 Caption 眨右眼

Name optRight

Option4 Caption 闭眼睛

Name optNone

Command1 Caption 退出

Name cmdExit

Image1 Picture FACE03.ICO

Stretch True

Name imgShow

Image2 Picture FACE03.ICO

Visible False

Name imgBoth

Image3 Picture FACE05.ICO

Visible False

Name imgLeft

Image4 Picture FACE04.ICO

Visible False

Name imgRight

Image5 Picture FACE06.ICO

Visible False

Name imgNone

注:

1,Image控件的Picture属性的设置和Form1的Icon属性的设置方法是一样的(即在

属性栏旁边找到标有“…”的按钮,并按它。);

2,face04,face05,face06图标并不在vb\icons子目录下,那是自已做的。在Borland C++、Visual C++、V isual FoxPro、Delphi等编程工具里都有制作图标的工具,可以用来制作自已的图标;

3,Visible属性的真假决定对象在运行时是否可以被看见,False值表示对象不可见;

4,Stretch属性决定Image控件里的图像能否被放大或缩小,当然,放得很大的图标会显得很粗糙。

现在我们终于完成了界面的设计,然而,这个程序还不能工作,因为计算机还达不到人的思维水平,它想象不出这个程序是做什么的,与此同时,你已想像出这个出这个程序执行时的样子了。

四、编写程序代码──最令人费解和最没有成就感的必要工作,除了程序员、专家,大多数人对程序代码都感到厌倦,幸好我们都不想成为世界级的程序员,所以目前的Visual Basic 程序代码都不是很难。

1,选定一个对象,比如optLeft,然后按F7键或双击它,V isual Basic 显示代码窗口,Visual Basic 将显示:

Private Sub optLeft_Click()

End Sub

Private表明这段代码的应用范围,我们先不用深究这个词的内涵,Sub是一个开头,是subprogram的简写,optLeft是对象名,_是一个下划线,用来分开对象名和事件名,Click 是指一个事件,Click就是“单击”的意思,()是一对括号,通常里面是过程所使用的参数,现在它是空的。

这一行的意思是:“这是当用户单击了optLeft选项按钮时,程序应该做的事。”

End Sub是这段代码的结束标志,意思是“这是这段代码的最后一行。”

我们要在这两行间输入指令。

2,现在输入如下指令

Private Sub optLeft_Click()

imgShow.Picture = imgLeft.Picture

End Sub

3,从代码窗口顶部选择Object列表框,选择optRight控件,Visual Basic将显示另一个空的Click过程。

4,输入如下代码:

Private Sub optRight_Click()

imgShow.Picture = imgRight.Picture

End Sub

5,用同样方法再输入三条指令:

Private Sub optBoth_Click()

imgShow.Picture = imgBoth.Picture

End Sub

Private Sub cmdExit_Click()

End

End Sub

Private Sub optNone_Click()

imgShow.Picture = imgNone.Picture

End Sub

按下F5键运行这个程序,看它是否能运行。如果运行不正确,那么你要找出错误,再试一次。

我们已经成功地完成了这个例子,你已经首次尝试了V isual Basic的编程过程。是否十分简单?其实编程序就象眨眼的小脸一样有趣。

第二章用户界面设计

§1 用户界面设计概述

一,在设计前应该了解的

通常程序总是由用户操纵的,所以用户需要一个界面来进行操纵。往往那些漂亮的简单的界面更加吸引用户,让他们认为程序有魔术般的力量,这样他们才会使用这个程序。下面有四条设计界面的原则。

1,了解用户的习惯

2,保持简单

3,允许用户的错误,并给以提示

4,让用户了解他在程序中的位置

二,Visual Basic用户界面设计基础

通过我们的第一个Visual Basic程序的设计,我们已经知道界面的设计有两步:先绘制控件,然后确定控件属性。我们发现绘制控件并不是很难。在工具箱里单击想画的控件,在窗体里按下鼠标并拖曳,然后松开鼠标即可。双击工具箱里的控件,将在窗体中央出现那个控件。如果用这种方法的话,要注意双击第二个控件时把上一个控件移开,否则两个控件会叠在一起,引起一些混淆。确定属性的方法是先选中控件,然后按F4键进入Properties窗口,接着在Properties窗口中找到要设置的属性并进行设置。

下面解释一些常用的属性,这些属性几乎总是要被设置和改变。

(1)Name属性

对象都有名字,尽管我们可以通过描绘一些特性来描绘对象,这样做总是非常麻烦。计算机也是一样,它把名字看成对象于对象之间的根本差异。由于计算机的这种顽固观点,它拒绝在同一窗体里出现重名的情况(除非这是一个控件数组),它也拒绝超过40个字的名字。

在简单的程序里,给控件命名不很必要,我们完全可以使用控件Name属性的缺省值。例如Text1。但在有几十个控件的复杂窗体里,这种方法会使你花更多的时间去区分它们。所以,Visual Basic向你推荐由三个小写字母的前缀和一个第一个字母为大写的描述性单词组成的名字。例如cmdMyButton是一个命令按钮(前缀是cmd)

推荐的前缀是:

对象前缀例子

确认框(Check Box)chk chkCareerChioce

组合框(Combo Box)cbo cboCrimesCommitted

命令钮(Command Button)cmd cmdExit

数据库控件(Data Control)dat datTopSecretInfo

目录列表框(Directory List Box)dir dirTree

驱动器列表框(Drive List Box)drv drvHardDisk

文件列表框(File List Box)fil filDocuments

窗体(Form)frm frm1040Tax

框架(Frame)fra fraGroupButtons

水平滚动条(Horizontal Scroll Bar)hsb hsbTemperature

图形(Image)img imgPrettyDrawing

标签(Label)lbl lblFakeName

线(Line)lin linBorder

列表框(List Box)lst lstCandidates

菜单(Menu)mnu mnuHamAndEggs

选项钮(Option Button)opt optStation101

图形框(Picture Box)pic picPrettyPicture

几何图形(Shape)shp shpUpOrShipOut

正文框(Text Box)txt txtWarning

vsb vsbMoneyRaised

(2)Caption属性

这仅仅是一个装饰性的属性,它可以长达255字符,包括空格和标点符号,比如一个叫cmdOk的命令钮,它的Caption属性就可以是“Ok”。

编程序时也要考虑到使用键盘的用户,在设置Caption属性在需要加下划线的字母前加上“&” 符号,例如“&File”,输出的就是“F ile”,这样就可以通过按ALT键和标题上那个带下划线的字母来选取它了。你不必为此编任何代码。

(3)Top,Left属性

只有两种情况需要在属性窗口里设置这两个属性:第一种是用户没有鼠标,第二种是程序员需要十分精确地设定这两个值。这两个属性决定对象的位置。当你选中对象,单击并拖曳它的时候,你便在修改这两个值了。

(4)Height,Width属性

这两个属性决定了对象的大小,当你选中控件时,它周围出现八个小黑方块,你把鼠标指向这些方块,鼠标指针将变成一个双向的箭头,这时按下鼠标并拖曳它,即可改变控件的大小,也就改变了Height,Width属性。同Top,Left属性一样,我们主要通过鼠标的操作来设置Height,Width属性。

§2 窗体和命令钮介绍

一、窗体

窗体是Windows的基本组成部分,这也是为什么这个操作系统叫Windows的原因。它的主要属性除上面介绍的以外,还包括:

1,Appearance属性

这个属性用来决定控件是否采用三维效果。

2,BorderStyle属性

这个属性决定了窗体的边框形式,共有6种属性值。改变窗体的BordrStyle属性后,窗体在屏幕上没有变化,它只在运行时才变为你所要求的样子。

3,ControlBox属性

程序员用来决定采用不采用控制框的属性,仅在程序运行时才有效。

4,Font属性

程序员可以改变该窗体上显示信息的字体,它控制着直接在窗体上打印的文本显示。

5,Icon属性

这个属性是用户经常要使用的一种属性。当用户的应用程序在工具条上最小化或在Windows桌面上变为一个独立应用程序时,该属性决定将采用何种图标,窗体控制框里的图标也由它决定。为自己的窗体设置该属性时,要控制住自己挑三拣四的冲动。

6,Visible属性

该属性决定窗体是否可见。错误地改变其值是很危险的,窗体会从眼前消失,这种莫名其妙的事情会使用户惊惶失措,所以肩负重任的程序员一定要慎重哟!

7,WindowState属性

指定窗体在运行时的三种状态:正常、最小化、最大化。

二、窗体的主要事件

1,Load事件

这个事件发生在窗体被装入内存时,且发生在窗体出现在屏幕之前。窗体出现之前,Visual Basic会看一看Load事件里有没有代码,如果有,那么它先执行这些代码,再让窗体出现在屏幕上。

2,Click事件,Dblclick事件

这两个事件在单击或双击窗体时发生。不过你单击窗体里的控件时,窗体的Click事件并不会发生,Visual Basic会去看控件的Click事件里有没有代码。

3,Activate (活动事件)与Deactivate(非活动事件)

显示多个窗体时,可以从一个窗体切换到另一个窗体。每次激活一个窗体时,发生Activate 事件,而前一个窗体发生Deactivate事件。

三、窗体控制

1,装入或卸出窗体

要装入或卸出窗体,用Load 或Unload语句。Load语句的语法如下:

Load formName

而UnLoad语句的语法是:

UnLoad formName

FormName变量是要装入或卸出的窗体名。Load语句只是把窗体装入内存,并不显示出来,要显示窗体可以使用窗体的Show方法。

2,显示或隐藏窗体

要显示窗体,用Show方法。若尚未装入内存则先装入再显示。它的语法如下:

formName.show mode

FormName变量是窗体名,可选变元mode为0(缺省值)时窗体为非模态,为1时窗体为模态。模态窗体完全占有应用程序控制权,不允许切换到别的应用程序,除非关闭!而非模态窗体则反之。

同理,隐藏窗体用formName.hide。

四、命令钮

命令钮有两类:一类是简单的命令钮,一类是图形钮。图形钮常常成组地出现在屏幕的顶端,成为一些程序炫耀自己贴近用户的标志。图形钮充分利用了图形用户界面的特征,而且比命令钮小,但它的缺点是用户必须知道图形钮是什么意思,而且没有鼠标的用户恐怕用不了图形钮。命令钮也有Appearance、Caption、Font、Left、V isible之类的属性。命令钮的最主要事件就是Click事件,它还有MouseDown和MouseUp等事件

§3 建立菜单

一般Windows的菜单条包含File,Edit,Window和Help菜单标题。其它的菜单,程序员应将它们插在Edit和Window菜单之间。在Visual Basic里,为了创建菜单,必须打开菜单编辑窗口。可以按下Ctrl+E键,也可以从Tools菜单中选择Menu Editor项,或者单击Visual Basic主窗口的从左边数第六个图形钮。

一、给菜单命名

菜单标题和菜单命令也有Caption和Name属性,你设置了这两个属性就等于创建了菜单。于控件一样Caption是屏幕上可见的,而Name则是一个抽象名称。别忘了在Caption 里加入“&” 以帮助没有鼠标的用户。

二、增加和删除菜单

在Menu Editor中部有三个命令钮分别是Next,Insert,Delete。Insert可用来增加新的菜单。在这三个键下面的Caption列表框里选中菜单项(这时它的底色就变成深蓝色),单击Insert键,Visual Basic将上一个增亮菜单下推并增亮一空行,你就可以输入新菜单名和标题了。Delete键可用来删掉菜单。你选中要删掉的菜单,单击Delete键就可以删掉它了。

三、移动菜单标题

有四种情况,向上移动,向下移动,向左缩排,向右缩排,这就是Menu Editor中间上下左右箭头的功能。选中某一菜单标题,安上下箭头,则这个菜单将上下移动到你喜欢的位置上,这也决定了它在界面中的位置。如果你按左右箭头,情况则有所不同。由于菜单是分级的,所以,如果它没有缩排,则它是一个菜单标题;如果它缩排一次,那么它将变成一个菜单命令;如果缩排两次,那么它将成为一个子菜单命令。Visual Basic里你可以总共设计四层子菜单。

四、设置分离条

分离条是指在菜单中将命令分组的线。

奇怪的是,Visual Basic将分离条也看成一个菜单项,它也需要Caption和Name属性,而且它也有其它属性,分离条与菜单项的区别是分离条的Caption属性必须是连字号即减号。也就是,当你设置了一个Caption属性为“-” 的菜单项时,实际上你就设置了一个分离条,

分离条的名字可以是barFile1之类,以表明分离条的位置。

五、菜单的各种简单属性

在Menu Editor里有许多确认框和一些正文框及一个下拉式的列表框,这些东西决定了菜单的各种属性。

1,Checked属性

这个属性值设置为真,将在菜单命令左边产生一个打勾的确认标志,你可以看看File Manager里的View菜单就可以了解什么是确认标志了。

2,Enabled属性

各种各样的用户会产生千奇百怪的操作,在许多Edit菜单里都会有不同形式的让菜单命令模糊的情况。Enabled属性就是用来做这件事的。Enabled属性为真,则菜单命令是清晰的,Enabled属性为假,则菜单命令是模糊的,这时用户就不能选中这个菜单项了。

3,Visible属性

用户看见一个模糊的菜单而不能选的时候,有时会非常生气。所以,如果用户看不见这个菜单命令时,他也就不会发无名之火了。如果把Visible属性设为假,则菜单根本不会出现在屏幕上。这样做比把Enabled属性设为假显得更加干脆!

4,Index属性

可以生成菜单命令数组,用索引号区分开。例如向File菜单中添加一系列最近打开的文件名。添加菜单可用Load方法。

以上属性可以在运行时设置,形成动态的菜单的情况。

例如:

mnuUndo.Enabled = False

mnuProperty.V isible = False

你还可以改变Caption等属性。

mnuUndo.Caption = “Redo”

在对窗体,命令钮和菜单有所了解后,工具箱里的其它控件就更加容易理解了。下面这些控件的熟练运用,将使你做出漂亮的界面。

六、生成弹出式菜单(或浮动菜单)

几乎每个Windows应用程序都提供弹出式菜单,用户可以右键单击窗体或控件取得这个菜单。弹出式菜单也属于普通菜单,只是不固定在窗体上,而是可以在任何地方显示。

弹出式菜单用PopupMenu方法调用。假设我们已经用Menu Editor生成了名为mnuedit 的菜单,则可以在MouseUp事件加入如下代码:

If Button = 2 Then PopupMenu mnuedit

下面将用一个实例展示动态菜单和弹出式菜单。

左图表单显示了一个弹出式菜单,在表单的空白处右击鼠标就可得到。左图表单显示

了一个动态菜单,单击Add runtime option钮一下就会使菜单Runtime Menu增加一项,而单击Remove runtime option钮一下就会使菜单Runtime Menu减少一项。其源代码如下:Dim rtmenu

Private Sub cmdadd_Click()

rtmenu = rtmenu + 1

If rtmenu = 1 Then mnuoption(0).Caption = "Runtime Option"

Load mnuoption(rtmenu)

mnuoption(rtmenu).Caption = "option #" & rtmenu

End Sub

Private Sub cmdremove_Click()

If rtmenu = 0 Then

MsgBox "menu is empty"

Exit Sub

End If

Unload mnuoption(rtmenu)

rtmenu = rtmenu - 1

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu mnuedit

End Sub

§4 框架,确认框和选项钮

一、确认框和选项钮就好比多项选择和单项选择,在考试时选择题总比简答题要好做,因为你可以用瞎蒙的策略。用户界面设计的保持简单的原则使确认框和选项钮成为有用的框件。确认框和选项钮用于向程序输入信息。确认框选中时会在小方框里打一个钩,菜单设计窗口里就有这种确认框的例子。

选项钮选中时会在小圆圈里点一个点。它们的主要属性除了Name,Caption等,还有:1,V alue属性

决定它们是否被选中的属性。

2,Alignment属性

决定它们的对齐方式。

二、有两道选择题或更多时,我们就必须对它们进行分组。这种分组需要借助框架控件。分组的方法是:

1,在工具箱里单击Frame控件;

2,在窗体里拖曳鼠标画出框架;

3,在工具箱里单击确认框或选项钮控件;

4,在框架里画确认框或选项钮;

5,把所需的确认框或选项钮都画好。

§5 正文框和标签

正文框通常用于向计算机输入信息,而标签通常用于输出信息。正文框是一个十分重要的控件,因为由确认框和选项钮向程序输入的信息毕竟只有少数的几条信息而已。标签和正文框的区别很小,标签可以看成是一个在运行时不能修改正文的正文框。因此标签主要用于输出信息。标签是生活中不可缺少的部分,比如教室里的“团结,勤奋,严谨,活泼”就是一个每天不得不面对的标签。

1,BorderStyle属性

决定了正文框和标签的边框形式。

2,正文框的Text属性和标签的Caption属性

这两个属性其实是一样的,它决定了用户在屏幕上看到的东西,只不过正文框的Text属性在运行时可以直接在正文框里修改。

3,Alignment属性

这个属性决定正文或标题的排列方式。

4,正文框的Multiline属性

如果正文框里的字太多了,超过了正文框的宽度,那么计算机就在某个我们不知道的地方显示这行字,所以我们要设置Multiline属性为True,这样正文框就有了字换行的能力。

5,正文框的PasswordChar属性

如果用户从事的是一种掌握大量金钱或机密的工作的话(此类用户肯花大钱来买关于计算机的东西),那么他就需要对自己的工作遮遮掩掩,在Visual Basic里你可以作一个口令正文框来实现这种遮掩。方法是:

(1)选中作为口令正文框的正文框。(它的周围出现八个小方块)

(2)按F4键打开属性窗口。

(3)设置Multiline属性为False。

(4)设置PasswordChar为用于掩盖的字符。(只能是一个字符,比如* 号)

第三步使口令正文框只有一行,因为Multiline属性为True将使Password属性失效。Visual Basic认为口令不必太长,因为太长的口令更加容易忘记。

6,正文框的Maxlength属性

为了防止一些古怪用户输入太多的废话,程序员有限制正文框正文长度的权力,这就是Maxlength属性。如果Maxlength属性设置为零,那么正文框就只受计算机内存的限制了。

7,Label的AutoSize属性和WordWrap属性

这两个属性在一起搭配使用总是让人混淆,以至于V isual Basic附带的示例程序里有一个程序里有这两个属性的例子,它的路径通常是c:\vb\samples\controls\control.vbp。在V isual Basic里运行这个例子,选择Options菜单的WordWrap and AutoSize。AutoSize属性使标签自动地扩大缩小以适应标签的Caption属性,但是它只会水平伸展。WordWrap属性使标签具有字换行处理的能力。

为了使标签具有垂直伸展和字换行处理,必须设置它的AutoSize属性和WordWrap属性同时为True。

AutoSize属性为False,WordWrap属性为False时,若标签不够高而Caption太长时,Caption将被切割掉。

AutoSize属性为False,WordWrap属性为True时,情况同上。

AutoSize属性为True,WordWrap属性为False时,表示可以水平伸展,但只显示一行信息。

Locked属性

程序员可以阻止用户改变文本框的内容,用户只可以看文本而不能改变它。这是Visual Basic 4.0的新功能。

§6 图形框(Picture Box)和图象框(Image Box)

Picture Box和Image Box是用来把图形放入程序里的。Picture Box和Image Box可以显示几种不同格式的图形。Bitmap文件(.BMP或.DIB)、Icon文件(.ICO或.CUR)、Metafile 图元文件(.WMF)、增强型图元文件(.EMF)、JEPG(.JPG)及GIF(.GIF)文件。在V isual Basic 里Microsoft大概送给了我们几百个上述前三类文件,它们的路径通常是:c:\vb\bitmaps、c:\vb\icons、c:\vb\metafile。它们的主要属性有:

1,设置Picture Box和Image Box的Picture属性

(1)单击Picture Box或Image Box。

(2)按F4键打开属性窗口。

(3)单击Picture属性。

(4)单击设置框右边的省略号,Visual Basic将显示Load Picture对话框。

(5)选择用户需要的文件,单击Ok键。

则Visual Basic将图形装入Picture Box或Image Box。如果想在程序运行期间装入或删除图形,就需要用程序代码来实现了。我们可以使用Load Picture函数。例:装入图形

imgMyHand.Picture = LoadPicture ( “c:\graphics\hand.bmp” )

删除图形

imgMyHand.Picture = LoadPicture ( “ ” )

2,Picture Box和Image Box的BorderStyle属性

如同正文框和标签一样,你可以设计Picture Box和Image Box的边框。

3,Stretch属性和AutoSize属性

Image Box只有Stretch属性,而Picture Box只有AutoSize属性。

AutoSize属性设为True,则Picture Box改变自己的大小来适应其中的图形。

Stretch属性设为True,则Image Box中的图形将改变自己的大小来适应外面的边框。

§7 Line和Shape控件

总有一些除了装饰作用没有别的功能的东西。如Line 和Shape控件。

1,Line和Shape的BorderColor属性

一般来说边界颜色是黑的,但你也可显示你喜爱的颜色。在属性窗口里单击BorderColor 属性,再单击省略号,Visual Basic将显示一块调色板,在调色板里选择你喜爱的颜色。

2,Line和Shape的BorderWidth属性

这个属性决定线的粗细。

3,Line和Shape的BorderStyle属性

这个属性决定线的轮廓。

4,Shape的FillStyle属性

在形状中我们可能更加喜欢实心的样子,这也可以做到。

我们已经了解了窗体,菜单,及十种不同的控件,这正是Windows的基本元素,再加上它们的各种属性,就可以画出各式各样的用户界面了!

§6&§7总结:Image、Shape 和Line 控件有时被称作轻量图形控件。它们需要较少的系统资源,因此比PictureBox 控件显示得快并且包含PictureBox 中可用的属性、方法和事件的子集。每一个控件都适用于一个特定的目的。

1、其它控件的容器:PictureBox

2、Printing 或graphics 方法:PictureBox

3、显示图片Image 或PictureBox

4、控件显示简单图形元素:Shape 或Line 控件

第三章编程的基础

在我们设计完用户界面后,我们就将开始了编写指令代码的过程。这是一个相对枯燥但却是必须的过程。

§1 V isual Basic编程概述

一、事件驱动应用程序

简单地说就是当事件发生时程序才工作,否则程序将等待事件的发生。在事件驱动程序中,用户的操作或系统事件执行一个事件过程,这样,程序执行的顺序就由哪一个事件的发生决定,由用户的操作决定。就是用户管理,代码响应。

二、事件过程

用户界面对事件响应的三个部分是:

1,窗体

2,控件

3,菜单

编写程序代码的通常过程是:

1,确定哪一个对象(窗体,控件或菜单)做出反应——单击此对象选中它;

2,打开代码窗口——简单的方法是按False7键或者双击对象;

3,找到响应的事件;

代码窗口的Object列表框可以选择对象,旁边的Proc列表框可以选择对象的事件。如果事件已经有了代码的话,那么在Proc列表框里这个事件名用黑体显示。空的事件代码都由两行组成,如:

Private Sub Form_Load()

|

End Sub

4,编写程序代码。

三、变量

程序总是要做三件事:

1,得到数据;

2,处理数据;

3,输出数据。

在程序运行时,这些数据被储存在变量里,变量可理解为计算机内存条上的一个微观的东西。一旦关机,变量就消失了。变量在Visual Basic里有两种类型:

1,程序员建立的变量;

2,对象的属性往往也看成变量。

变量必须满足:

1,字母开头;

2,不超过40个字;

3,只包括字母,数字,下划线;

4,不是保留字。

创建变量的方法:

1,用Dim语句说明它;

2,可以省略声明语句而用变量声明字符生成确定类型的变量。在程序执行时若要生成变量并指定数据类型,可加入下表所示的变量声明字符后缀。

符号数据类型举例

$String A$, message Text$

% Integer Counter%, var%

& Long Population&,colorV alue%

! Single Distance!

# Double ExactDistance#

3,把一个值赋给一个名称,Visual Basic就把这个名称看成变量。

Dim语句的语法是:

Dim V ariableName As Type

例如:Dim MyName

As Type部分可以省略,它涉及到我们将要讲的关于数据类型的问题。Dim语句的作用是声明变量并分配存储空间。

赋值语句的语法是:V ariableName = V alue 或V ariableName1 =V ariableName2

与数学中的等号意义不同,这里等号只表示把后者的值赋给前者,所以,A=A+1在Visual Basic里是合法的。例如:cmdExit.Caption = “Exit”(这是一个改变对象属性的例子)

四、数据类型

变量可以存放数字或字符串等东西,但是MyName变量并不需要存放数字,所以你可以限制存放的数据类型。你可以规定MyName只能字符串。Visual Basic提供了七种数据类型:1,整型(Integer)

2字节整数,标识符(同上面的变量声明字符)为百分号(%),范围从-32768到32767,运算很快。

2,长整型(Long)

4字节整数,标识符为&,范围从-2147483648到2147483647,运算很快。

3,单精度型(Single)

4字节浮点数,标识符为!,范围可达38位数字,前7位可靠,运算比整型和长整型慢。

4,双精度型(Double)

8字节浮点数,标识符为#,范围可达300多位,但是可靠的只有前16位数字。

5,字符串型(String)

标识符为$,在32位版本的V isual Basic 4.0中,字符串可容纳高达200兆字节的内容。

6,货币型(Currency)

8字节定点数,标识符为@,小数点右边4位,左边15位。

7,日期型(Date)

用于存放日期,范围从#January 1,100#到#December 31,9999#,日期的格式取决于系统的设定,赋值方法是:New = #January 1,2000# 。

8,字节型(Byte)

Visual Basic 4.0新增加的数据类型,用于存放0到255的整数。

9,布尔型(Boolean)

只有True或False两个值。

10,变体型(V ariant)

如果你不告诉Visual Basic你的变量是什么类型,Visual Basic就自动把它看成变体型。变体型的意思就是它没有类型,或者是任何类型。如果声明了V ariant变量而未赋值,则其值为Empty。

例如:Dim MyName As String

事实上,语句Dim MyName只是将MyName变量声明为变体类型罢了,因为变体类型是Visual Basic的缺省类型。但是,我们使用数据类型的原因是什么呢?

1,使用最小的数据类型可节省内存;

2,程序员可以容易地找出每一变量所存放的数据类型;

3,可以防止数据类型存放错误引起的错误。

例如:

Private Sub Form_Load()

Dim MyName As String

MyName = “DongShan”

End Sub

变换变量类型

有时需要将一种变量类型变成另一种变量类型,下表列出了进行变量类型转换的函数:

函数说明函数说明

Cbool 将变元变成布尔值CLng 将变元变成长整型值

Cbyte 将变元变成字节值CSng 将变元变成单精度值

CCur 将变元变成货币型值CStr 将变元变成字符串值

CDate 将变元变成日期值Cvar 将变元变成变体值

CDbl 将变元变成双精度值CVErr 将变元变成错误值

CInt 将变元变成整型值

例如要将如下的初始化变量:

Dim A As Integer

变成双精度值,可用下列函数:

B=CDbl(A)

用户自定义的数据类型------记录

保存多个相同或不同类型数值的结构称为记录(record)。

在VISUAL BASIC 中定义记录,用Type语句,其语法如下:

Type varType

V ariable1 As varType

V ariable2 As varType

V ariablen As varType

End Type

例如定义一个名为CheckRecord的记录:

Type CheckRecord

CheckNumber as Integer

CheckDate as Date

CheckAmount as Single

End Type

CheckRecord结构可以像普通变量类型一样使用。要定义这个类型的变量,使用如下语句:

Dim check1 As CheckRecord

要对结构的各个字段访问,可使用如下语句:

check1. CheckNumber=123

check1. CheckDate=#08/14/1996#

check1. CheckAmount=240.00

强制的变量声明

Visual Basic并不要求变量声明,但对于编写大型应用程序时,变量声明的确很有好处。

因此Visual Basic提供强制声明的方法,只要在窗体或模块的声明部分加上一条语句:Option Explicit

这个语句使编译器检查每个变量的声明,如果要用的变量没有声明,则发出一个错误消息!

数组

单个变量只能存放单个实体,而数组可以存放一组相关的数据。像变量一样,数组有名称,存放在数组中的数值通过一个索引来访问。

数组的定义必须用Dim语句声明,如下:

Dim Names(9) As String '也可以不指定数据类型

Names是保存了10个元素的数组,Names(0)是第一个元素,Names(9)是最后一个元素。数组元素的赋值如下:

Names(0)="John"

Names(1)="Tom"

Names(9)="Xionghui"

数组的第一个元素的索引可以不是0,可以在Dim语句中指定下限:

Dim Names(1 To 16)

Dim Names(5 To 16)

动态数组

有时可能不知道需要多大的数组,这时可以生成动态数组,其长度可以在运行程序时改变。定义动态数组,和平常一样用Dim语句(或Private和Public),但不要指定长度(或维数):

Dim DynArray()

后面等能确定维数的时候,再用ReDim语句重新确定实际长度(或维数):ReDim DynArray(UserCount)

ReDim语句只能出现在过程之中,它是可执行语句。

但每次执行ReDim语句,数组中原先存放的所有当前值会消失。但有时可能想改变数组的长度,而不损失原有的数据,幸好Visual Basic提供了Preserve关键字,它就能作到!例如下面语句将数组加大一个元素而不改变原有数据:

ReDim Preserve DynArray(Ubound(DynArray)+1)

五、变量的使用范围

Visual Basic的变量有三种使用范围。

1,局部变量;

2,模块级变量,也可以叫做窗体级变量,因为窗体和模块是同级的;

3,全局变量。

局部变量只存在于说明它的过程里,为说明一个局部变量,应在一个事件过程中说明。

模块级变量可存在于这个窗体或模块中,可以被所有窗体内的事件过程所引用和改变,说明模块级变量的方法是:

1,按F7键打开代码窗口;

2,在Object列表框中选择(general);

3,在Proc列表框里选择(declarations);

4,用Dim语句说明。

全局变量从程序开始时存在至程序结束,不过全局变量的错误也许会导致致命的错误,你不得不读遍程序来寻找到底在说明地方改变了全局变量。创建全局变量的方法是:1,从Insert菜单里选Module项,这个命令为一个BAS模块文件显示代码窗口;

2,在Object列表框中选择(general);

3,在Proc列表框中选择(declarations);

4,用Public语句说明全局变量。

六、算术,逻辑,比较运算符

1,算术运算

尽管一台上万元的计算机看来很高科技,但它在算术运算方面并不比一个几十元的计算器强多少。

运算符运算运算符运算

+ 加(也是字符串拼接)\ 整数除

- 减(也是取负值)Mod 取余数

* 乘^ 乘方

/ 浮点数除& 字符串拼接

2,逻辑运算

逻辑运算是对True和False进行操作的运算。Visual Basic将True的值看成-1,将False 的值看成0。

运算符使用意义

And 变量1 And 变量2 两个量均为True ,才返回True

Or 变量1 Or 变量2 只要有一个量为True ,返回值就为True

Xor 变量1 Xor 变量2 两个量一个为True,一个为False才返回True Not 变量1 Not 变量2 简单地把True 变为False ,把False 变为True

3,比较运算

比较运算是比较两个数或字符串的大小。

运算符意义运算符意义

< 小于>= 大于等于

<= 小于等于= 等于

> 大于<> 不等于

有时候,复杂的运算会把我们搞晕,良好的习惯是加括号。如:x = ( 5 * ( 8 + 9 ) ) ^ 2,则计算机先处理( 8 + 9 ) ,再处理( 5 * ( 8 + 9 ) ) ,最后才是乘方。再如:x = ( 5 * 6 ) / 2,这个括号加得似乎没什么意义,但它使我们清晰地知道是从哪儿开始运算的。

七、字符串操作

有时程序需要对字符串进行操作,比如从一个文件的完整路径名中找出文件的名称。下面介绍几个常用的函数。

1,Len函数

返回字符串的长度。如Length = Len(“string”),则Length = 6。

2,LCase函数,UCase函数

LCase函数把字符串变为小写字母。UCase函数把字符串变为大写字母。如:

x = LCase (“DONGSHAN”)

x = UCase (“visual Basic”)

3,Left函数,Right函数

语法是:

Left (V ariableName , N)

Right (V ariableName , N)

Left函数从字符串的左边提出N个字符。Right函数从字符串的右边提出N个字符。

4,Mid函数

语法是:

x=Mid (V ariableName , n, m)

Mid函数从V ariableName字符串的第n个字符开始取出m个字符。

5,Instr函数

相关主题
文本预览
相关文档 最新文档