VisualBasic程序设计初步.ppt
第二章Visual Basic程序设计初步,本章主要内容简单的应用程序实例基本属性与常用方法窗体的设计基本控件的使用工程管理应用程序的运行和发布,简单的应用程序实例,传统程序设计的主要工作是编写代码,工作模式:编程调试改错运行。创建VB应用程序的基本步骤:设计应用程序界面设置对象属性编写程序代码调试运行程序保存工程其中,最主要的是前面三个步骤。,实例设计应用程序界面,设计VB应用程序的第一步。界面展示程序信息,也是用户与程序交互的地方。界面由对象即窗体和控件组成,控件放在窗体上,程序中的所有信息都通过窗体显示。窗体是应用程序的最终用户界面。窗体是应用程序界面的基础,只能在窗体上设计构成界面的对象元素。可以用以下方法构造程序界面的对象元素:.用工具箱绘制控件.调整大小、移动和锁定控件,实例设计应用程序界面,.用工具箱绘制控件单击要绘制的控件。将鼠标指针移到窗体上,鼠标指针变成十字线。将十字线指针放在控件的左上角。拖动十字线,画出适合控件大小的方框。释放鼠标按键,控件出现在窗体上。在窗体上添加控件的另一种方法:双击工具箱中的控件按钮,在窗体中央创建一个尺寸为缺省值的控件,然后将该控件移到窗体中所需的位置。,实例设计应用程序界面,.调整大小、移动和锁定控件调整控件的尺寸移动控件用鼠标移动控件在“属性”窗口改变 Top属性和Left属性值。锁定所有控件位置选中控件,在菜单栏上选择“格式锁定控件”选项。注意:本操作只锁住选定窗体上的全部控件,不影响其它窗体上的控件。,实例设置对象属性,打开选中控件的属性窗口。在属性窗口中设置窗体对象的属性。设置窗体属性的方法:在属性列表中选定属性名在右列输入或选定新的属性设置值。说明:设计界面和设置属性可以同时进行,实例编写程序代码,在代码编辑器窗口中进行。代码由语句、常数和声明部分组成。在代码编辑器窗口中可以快速查看和编辑应用程序代码的任何部分。.打开代码窗口.创建事件过程VB采用事件驱动程序设计的机制,大部分程序是针对窗体中各控件支持的方法或事件编写的,这样的程序称为事件过程。事件过程包含事件发生时要执行的代码。,实例编写程序代码,控件的事件过程由控件的实际名称(Name 属性指定)、下划线(_)和事件名组成。例如,单击命令按钮Command1时,调用Command1_Click 事件过程。创建事件过程的步骤:在“对象”列表框中选定活动窗体中的一个对象名。在“过程”列表框中选择指定对象的事件名。在SubEnd Sub语句之间输入代码。.查看代码在代码编辑器窗口左下角单击“全模块查看”按钮或“过程查看”按钮。,实例调试运行程序,程序运行模式:编译运行模式和解释运行模式。1.编译运行模式在菜单栏上选择“文件生成exe”选项系统将程序代码转换为机器代码,保存在扩展名为.exe的可执行文件中。2.解释运行模式在菜单栏上选择“运行启动”选项(或按F5键,或工具栏上单击“启动”按钮);系统将当前事件激发的事件过程代码转换为机器代码;执行该机器代码。转换的机器代码不保存,再次运行必须再解释一次。运行速度比编译运行模式慢。运行过程中出错,自动显示出错信息并进入“中断”模式,代码窗口提示修改代码,修改程序后再运行。,实例保存工程,应用程序以工程文件形式保存在磁盘上。保存窗体文件保存工程文件,应用程序开发举例,以一个简单的应用程序说明程序设计过程。应用程序组成:一个图像框控件,一个定时器控件,两个命令按钮。运行程序时,单击start按钮,地球滚动;单击end 按钮,结束运行。图像框控件放置地球的图片,定时器控件控制地球的运动,命令按钮控制地球开始滚动和结束。.创建一个新的窗体Form1,在窗体上创建四个控件:命令按钮Command1和Command2,图像框Image1、定时器”Timer1控件。.设置对象的属性(表2-1)。,应用程序开发举例,.编写代码Dim X,Y,a,b As SinglePrivate Sub Command1_Click()Timer1.Enabled=True 单击start按钮,定时器开始工作End SubPrivate Sub Command2_Click()Timer1.Enabled=False 单击end按钮,定时器停止工作EndEnd Sub,应用程序开发举例,Private Sub Form_Load()Set ball.Picture=LoadPicture(App.Path+earth.ico)运行时将地球图标装入图片框中 X=10 Y=10 a=50 b=80End Sub,应用程序开发举例,Private Sub Timer1_Timer()ball.Move X,Y X=X+a Y=Y+b If X=Form1.Width-ball.Width Then a=-20 If Y=Form1.Height-ball.Height Then b=-30 If X=0 Then a=15 If Y=0 Then b=30 End Sub,应用程序开发举例,.运行程序在工具栏上单击“启动”按钮在窗体上单击“start”按钮,地球滚动起来单击“end”按钮,地球停止滚动。.保存工程在菜单栏上选择“文件Forml另存为”选项在文件夹c:myfile下以文件名ex1.frm”保存窗体文件在菜单栏上选择“文件工程另存为”选项在文件夹c:myfile下以文件名ex1.vbp保存工程文件。注意:在语句Set bool.Picture=LoadPicture(App.Path+“earth.ico”)中,括号中的路径可根据图片文件earth.ico所在的具体位置而定。,基本属性,属性:对象的特性或性能,反映对象的外观和功能。对象的属性相当于变量,不同属性有不同的数据类型,如数值型、逻辑型或字符串型等。可用赋值语句向对象的属性赋值,也可将某对象的属性值赋给另一对象的属性,或某个变量。赋值时应注意数据类型的一致。在程序代码中引用属性的格式:对象名.属性有些属性只能在程序设计或只能在程序运行时使用。只读属性:只能读取不能修改的属性。包括窗体在内的各种控件一般都有数十个属性。,基本属性,.Name属性Name属性用来识别窗体、控件等对象的名称。在窗体上添加一个对象时,其Name 属性的缺省值是该对象的类型加上一个唯一的整型数值。例如,第一个新窗体对象的名称(Name)属性值是 Form1,在同一个窗体中创建的第三个文本框控件对象的名称是Text3等。利用 Name 属性指定对象名称的规则:以英文字母或汉字开始,长度不得超过40 个字符。可以包含数字及下划线(_)字符,但不可包含标点符号或空白字符。为了避免程序运行中发生冲突,一般不使用关键字、属性名或另一个对象的名称。,基本属性,.Appearance属性Appearance属性指定控件外观的描绘方式。在属性下拉列表中提供两个设置值供选择:选择属性值为时,系统不用任何视觉效果显示该对象;选择属性值为(默认值)时,系统以三维立体效果描绘外观。例2-1设置两个Appearance属性值不相同的图片框控件。(图2-1),基本属性,.BackColor属性和ForeColor属性BackColor属性:返回或设置对象的背景颜色。缺省值:常数 vbWindowBackground 定义的系统颜色。ForeColor属性:返回或设置在对象里显示图片和文本的前景颜色。缺省值:常数 vbWindowText 定义的系统颜色。颜色的属性设置时,属性窗口提供“普通色彩(调色板)”和“系统默认颜色(系统)”两种模式(图2-3)。,基本属性,4.Caption属性窗体的Caption属性指定窗体标题栏中显示的文本内容。窗体最小化时,该文本显示在窗体图标的下面。控件的Caption属性指定标题或显示文字。创建一个新对象时,缺省标题包括对象名和一个整数。例如,Command1 或 Form1。为获得一个描述更清楚的标题,应设置 Caption属性。设置Caption属性的格式:对象名.Caption字符串表达式若省略对象名,默认为当前的活动对象。字符串表达式是要显示为标题的文本。,基本属性,Caption属性可以赋予控件一个访问键快捷方式。在作为访问键的字符前加符号(&),该字符被加上下划线。同时按下 ALT 键和带下划线的字符,可把焦点移到该控件上。注意:除Label 控件外,窗体和其他有标题控件,标题限制 255 个字符。例2-2在窗体中创建一个命令按钮控件,每次单击该命令按钮时,将改变该控件的 Caption属性(图2-3)。程序代码:Private Sub Command1_Click()检查标题,然后改变它。If Command1.Caption=Clicked Then Command1.Caption=OK Else Command1.Caption=Clicked End If End Sub,基本属性,.Enabled属性Enabled属性确定窗体或控件是否能响应用户的事件,属性值为布尔值(boolean)。属性窗口中可借助下拉列表选取属性值。其中:True(缺省值):对象有效,允许对事件作出反应。False:对象无效,阻止对事件作出反应。有效与无效的对象,外观上有些不同。例如,无效情况下,命令按钮控件上面的文字呈灰色,单击不会响应任何动作。,基本属性,.Font属性Font属性包含字体、大小、字体样式等属性成员。设计时可直接进入Font属性对话框进行设置。如果需要在程序运行时改变属性值,必须分别设置其中各属性值。例如,以下代码将窗体Form1的文字设置为粗体字:Form1.Font.Bold=True 或 Form1.FontBold=True,基本属性,.Height属性和Width属性设置对象的高度和宽度窗体的高度和宽度:包括边框和标题栏。控件的高度和宽度:从边框的中心度量,使边框宽度不同的控件能够正确对齐。屏幕的高度和宽度:设计时无效,运行时为只读。窗体或控件的上述属性值随对象大小调整而改变。Height属性和Width属性的最大值与系统有关。,基本属性,.Left属性和Top属性Left属性指定对象左边边缘到其容器左边边缘的距离;Top 属性指定对象上方边缘到其容器上方边缘的距离。两个属性值均以窗体左上角为原点确定对象位置的坐标值(图2-4)。窗体的Left和Top属性值以缇为测量单位,其他控件的度量单位决定于其容器的坐标系统。Left和Top属性值随移动该对象而改变。,基本属性,例如,窗体加载时,将窗体的大小设置为屏幕大小的百分之七十五,并使窗体居中。程序代码如下:Private Sub Form_Click()Width=Screen.Width*.75 设置窗体的宽度。Height=Screen.Height*.75 设置窗体的高度。Left=(Screen.Width-Width)/2 水平居中。Top=(Screen.Height-Height)/2 垂直上居中。End Sub,基本属性,.Visible属性Visible属性指定对象是否可见。程序运行时,可将一些不需要的控件隐藏,以提供较为整洁的操作界面。,常用方法,方法:对象可以进行的操作。.Print 方法只能用于窗体、图片或打印机对象。语法格式:对象名.Print Tab(n)输出项表;/,功能:在指定的对象上打印数值表达式或字符串表达式的值。说明:对象名:可选,若省略则在当前窗体上打印输出项的值。Tab(n)函数:使输出项表向右移动n 列。输出项表:可选,数值表达式(或字符串表达式)或表达式列表。若省略,则打印一空行。;(分号):紧凑格式,下一个输出项紧接着输出。,(逗号):标准格式,下一个输出项在下一个输出区(一个输出区占14列)输出。,常用方法,.Move方法不能用于定时器和菜单对象。语法格式:对象名.Move 左边距离,上边距离,宽度,高度功能:移动窗体或控件,并可改变其大小。说明:对象名:可选,若省略,则移动当前窗体。左边距离、上边距离:若对象是窗体,以屏幕的左边界和上边界为准;否则,以所在的窗体的左边界、上边界为准。宽度、高度:可选,用于改变对象的大小。,常用方法,例如,移动控件时可用以下两种方法:Command1.Left=Command1.Left+100Command1.Top=Command1.Top+50或Command1.Move Command1.Left+100,Command1.Top+50使用 Move方法可以加快移动速度。,常用方法,.Cls方法只清除运行时在窗体或图片框上显示的文本、图形,不清除设计时显示的文本、图形。语法格式:对象名.Cls功能:清除运行时在窗体或图片框上显示的文本或图形。说明:对象名:可选,如果省略,则清除当前窗体上的文本或图形。,常用方法,.Setfocus方法当控件的Enabled属性为True时,Setfocus方法才起作用。语法格式:对象名.Setfocus 功能:将焦点移动到指定的窗体或控件。,窗体的设计,一、在工程中添加窗体在菜单栏中选择“文件新建窗体”选项,或选择“工程添加窗体”选项,可以建立一个新的窗体(图2-6)。窗体是最基本的对象,是应用程序的第一个对象。创建一个应用程序时,需要向窗体添加许多元素。窗体的类型:单文档窗体和多文档窗体。最基本的窗体是单文档窗体(图2-7)。VB集成开发环境一般情况下是一个多文档窗体(可以设置成单文档窗体)。根据需要,窗体可以充满屏幕或缩小为一个小图标。,窗体的设计,1、窗体的边界边界使窗体具有灵活的伸缩性。可以通过BorderStyle属性设置边界:固定的(Fixed)可变的(Sizable)不存在的(Nonexistent),窗体的设计,2、窗体的标题和标题栏标题在标题栏中显示,标识应用程序的名字、窗体的当前功能或作为一个状态条等。标题通过Caption属性设置或修改,具体内容在编程时决定。拖动标题栏可拖动整个窗口,双击标题栏可使该窗口最大化,再双击则恢复原状。若将BorderStyle属性设置为None,标题(包括整个标题栏)将不可见。,窗体的设计,3、控制菜单在窗体的左上角,包含还原、移动、缩放、最小化、最大化和关闭等菜单选项。ControlBox属性可设置控制菜单显示(True)或不显示(False)。,窗体的设计,4、最小化、最大化恢复、关闭按钮最小化按钮:最小化当前窗体。MinButton属性可设置该按钮显示(True)或不显示(False)。最大化按钮:最大化当前窗体,按钮变为恢复按钮。若窗体已经最大化,单击恢复按钮可将窗体恢复原状。MaxButton属性可设置该按钮显示(True)或不显示(False)。关闭按钮:关闭当前窗体。若ControlBox属性设置为Not visible,关闭按钮不可见。注意:若窗体没有设置关闭按钮或控制框,必须编制一个菜单或一个按钮来关闭该窗体。,窗体的设计,5、窗体中的网格设计状态下,窗体可见。改变网格点间距:在菜单栏上选择“工具选项”选项,在弹出的“选项”对话框中选择,在“通用”选项卡的“窗体设置网格”框中输入“宽度”和“高度”。运行时,通过属性控制窗体的可见性(窗体的网格始终不显示)。,窗体的设计,二、窗体的属性.BorderStyle属性:边框样式。属性值:0无边框;1固定单线边框;2(默认值)活动边框,可利用边框改变窗口大小;3对话框,固定边框;4工具窗口,活动边框。,窗体的设计,.Picture属性:设置窗体中要显示的图片。可在属性窗口中单击Picture属性设置框右边的“”按钮,弹出加载图片对话框,选择一个图形文件装入。.ControlBox属性:是否在窗体左上角设置控制菜单框,默认值为True。.MaxButton属性和MinButton属性:是否设置最大、最小化按钮。.WindowState属性:设置窗体窗口运行时的可见状态。.StartUpPosition属性:运行时窗体在屏幕上的显示位置。属性值:0手动 2屏幕中央,窗体的设计,三、窗体的事件.Click事件:单击事件,在窗体内无控件处单击鼠标左键。.DblClick事件:双击事件,在窗体内无控件处双击鼠标左键。.Initialize事件:初始化,建立窗体时首先被触发的事件,先于Load事件。.Load事件:把窗体装入内存,发生在Initialize 事件之后,Activate 事件之前。.Activate事件:当窗体成为活动窗口时触发该事件,发生在Load事件后。,窗体的设计,.QueryUnload事件:即将卸载,关闭窗体时(如双击“系统菜单”图标,或单击“关闭”按钮)先触发该事件,接着触发UnLoad事件。.UnLoad事件:卸载,从屏幕上关闭窗体时触发,发生在QueryUnload事件之后,Terminate事件之前。.Resize事件:调整尺寸,改变窗体大小时触发。.Paint事件:着色,当窗体被移动、放大或某些被遮盖的部分重新暴露时触发该事件。,窗体的设计,四、窗体的方法.CLS:清屏。清除运行期间添加在窗体上的图形和文本。.Print:显示信息。显示文本或数据。.Move:移动,把窗体移动到某个位置。.Hide:隐藏,隐藏窗体,但不卸载它。.Show:显示窗体。激活窗体的Activate事件。,窗体的设计,五、设置启动窗体.设置启动窗体应用程序中的第一个窗体默认为启动窗体。应用程序启动时,显示启动窗体。改变启动窗体的操作:在菜单栏上选择“工程工程属性”选项;在弹出的对话框中选取“通用”选项卡;在“启动对象”列表框中选取作为新启动窗体的窗体;单击“确定”按钮。,窗体的设计,.设置启动过程若应用程序启动时不加载任何窗体。例如,先装入数据文件;或先显示输入密码对话框,可先在标准模块中创建一个名为Main的过程。Main过程必须是一个标准模块中的子过程,不能在窗体模块内。,窗体的设计,.设置启动快速显示窗体若应用程序启动过程较长(如从数据库装入大量数据或大型位图),可以显示一个快速显示窗体,以吸引用户注意,造成应用程序装载很快的错觉。建立快速显示窗体的方法:在菜单栏上选择“工程添加窗体”选项,弹出“添加窗体”对话框;在“添加窗体”对话框的“新建”选项卡中选择“展示屏幕”选项,在工程中添加快速显示窗体,(图2-8)。,窗体的设计,快速显示窗体通常显示程序名、版本信息和一个简单的位图等。显示快速显示窗体用Sub Main过程作为启动对象,并用Show方法显示该窗体。例如:Private Sub Main()Frmsplash.show 显示快速显示窗体.添加启动过程等 FrmMain.Show 显示主窗体 Unload frmsplash 卸载快速显示窗体 End Sub,窗体的设计,六、窗体的生命周期窗体整个生命周期有种状态:创建、加载、可见及卸载状态。.创建窗体Initialize事件是创建窗体状态开始的标志。创建窗体时最先执行的代码,是Form_ Initialize事件过程中的代码。.加载窗体Load事件标志加载状态的开始。窗体进入加载状态,即开始执行Form_Load事件过程中的代码。,窗体的设计,.可见状态Show方法使窗体进入可见状态。例如:Form1.Show 窗体可见 Form1.Hide 窗体被隐藏.卸载窗体UnLoad事件发生后,窗体被卸载。窗体卸载时可以是隐藏或可见。,命令按钮控件,通常通过单击按钮实现一个命令的启动、中断或结束一、命令按钮的属性.Default属性:指定命令按钮为窗体内的“默认”钮。默认值为False。DefaultTrue时,即使焦点不在命令按钮上,按回车键也可触发其Click事件。.Cancel属性:指定命令按钮为窗体内的“取消”钮。默认值为 False。CancelTrue时,即使焦点不在命令按钮上,按Esc键也可触发其Click事件。,命令按钮控件,.Style 属性:设置命令按钮的外观样式。Style时(默认值),是标准的 Windows样式;当Style时,是图形样式,允许在命令按钮上放置图片。.Picture属性:Style时,指定放置在命令按钮上的图片。.DisabledPicture属性:命令按钮无效时,显示在命令按钮上的图片(Style=1)。.DownPicture属性:命令按钮被按下时,显示在命令按钮上面的图片(Style=1)。,命令按钮控件,.ToolTipText属性:鼠标指向命令按钮时,允许显示一个提示框,该属性值是提示框的字符串。.Value属性:指定命令按钮的选中状态。只在程序运行时使用。False(默认值):未选中。True:选中。.Parent属性:返回作为命令按钮容器的对象,通常指命令按钮所在的窗体。只读属性。,命令按钮控件,二、命令按钮的事件.Click事件:单击鼠标左键。.GotFocus事件:获得焦点。.LostFocus事件:失去焦点。,命令按钮控件,三、命令按钮的方法SetFocus方法:设置焦点例2-3设计图2-9所示的窗体界面,该窗体包含四个命令按钮。运行时,“控件演示”按钮被隐藏;单击“显示”按钮,“控件演示”按钮显示出来。(图2-10)窗体和控件的属性设置(表2-2)。窗体 Form1 命令按钮应用命令按钮Command1显示命令按钮Command2隐藏命令按钮Command3结束命令按钮Command4控件演示,命令按钮控件,代码设计:Private Sub Command1_Click()单击“显示”按钮Command4.Visible=True“控件演示”显示Command2.Enabled=True“隐藏”按钮可用Command1.Enabled=False“显示”按钮不可用End SubPrivate Sub Command2_Click()单击“隐藏”按钮Command4.Visible=False“控件演示”隐藏Command2.Enabled=False“隐藏”按钮不可用Command1.Enabled=True“显示”按钮可用End Sub,命令按钮控件,Private Sub Command3_Click()单击“结束”按钮Unload Me 卸载当前窗体End 结束程序运行End SubPrivate Sub Form_Load()初始化控件Command4.Visible=FalseCommand2.Enabled=FalseEnd Sub本例涉及命令按纽三个属性Enabled、Visible、Caption的应用。设计时对属性赋值(如Command1.Caption设置为“显示”)运行时对属性赋值(如Command2.Enabled=False),文本框控件,文本框控件可显示文本,或输入、修改文本。一、文本框的属性.Text属性:输入存放在文本框内的字符串。默认值为“Textl”、“Text2”等。.MultiLine属性:设置是否允许存放多行文本。默认值为False,存放一行文本。当没有水平滚动条时,多行文本使长字符串自动换行。.ScrollBars属性:设置文本框内是否有滚动条。其中:0无滚动条(默认值);l只有水平滚动条;2只有垂直滚动条;3有水平和垂直滚动条。,文本框控件,.MaxLength属性:设置文本框内文本的最大长度(字符数)。默认值为0,最大32000(不能超过65535,实际允许的长度还受内存容量限制)。.PasswordChar属性:密码替换符。在文本框内输入口令时,该属性确定显示在文本框内的字符。例如,该属性值为“”时,无论在文本框内输入什么字符,都显示星号。若该属性值为空(默认),文本框不作为输入密码使用。,文本框控件,.Locked属性:锁定文本内容,防止更改文本内容。默认值为False,属性值为True时,文本框变为只读,但可通过Text属性改变文本框中的内容。.Hideselection属性:隐藏选定的文本。默认值为Ture,不呈反相显示。当属性值为False时,若指定的文本框失去焦点,选定文本将呈反相显示。.ToolTipText属性:设置提示框文本,同命令按钮。.SelText属性:属性值为一个字符串,等于文本框内被选定的文本。SelLength属性:选定文本的长度,单位为字符。,文本框控件,.SelStart属性:选定文本的开始位置。如果没有选定文本,则指示插入点位置。.IMEMode属性:输入法编辑器模式,返回或设置输入法编辑器的当前操作模式。其中:0无操作模式(默认值);1打开输入法;2关闭输入法,此时不接收汉字输入法。,文本框控件,二、文本框的事件.KeyPress事件:按键盘字符键时触发。该事件返回一个ASCII参数。例如,键入字符“A”,返回ASCII值65;ASCII值为13,表示输入一个回车符。.KeyDown事件:按键盘上任意键时触发。.KeyUp事件:松开键盘任意键时触发。.Change事件:文本框内的文本发生改变时触发。.MouseMove事件:移动鼠标时触发。,文本框控件,例2-4设计一个用户界面,包含两个文本框和一个命令按钮。用鼠标选中上面文本框中的一段文本后,单击确定按钮,在下面的文本框中显示刚选中的文本。界面设计(略)在程序中设置有关对象的属性程序代码如下:Private Sub Command1_Click()单击确定按钮,Text2.Text=Text1.SelTextEnd Sub,文本框控件,Private Sub Form_Load()Command1.Caption=确定Text1.Text=这是一个有关文本框的应用例子Text1.FontSize=12Text2.Text=End Sub运行程序(图2-11)说明:本例使用文本框的SelText属性和Text属性。通过语句Text2.Text=Text1.SelText 完成对选中文本的复制工作。,标签控件,通常用作其他控件的说明,本身没有文本输入功能。标签的标题属性可以提供说明性的文本,这些文本在运行期间不可修改。一、标签的属性.Autosize属性:自动缩放,调整标签的水平宽度,使之适合标题文本的宽度。默认值为False。.Wordwrap属性:自动调整标签的高度,使之适合标题文本的高度。默认值为False。,标签控件,.Alignment属性:设置标题文本的对齐方式。属性值:左对齐(默认值);右对齐;置中。.Backstyle属性:背景样式,指定标签控件是透明或不透明的。属性值:透明的;不透明的(默认值)。.Borderstyle属性:边框样式。属性值:无边框(默认值);1有固定单线边框。.UseMnemonic属性:指定是否将Caption属性中的符号定义为访问键定义符。默认值为True。,标签控件,二、标签的事件.CliCk事件:单击。.DblClick事件:双击。,焦点与Tab键,对象具有焦点时,可接收用户的输入。Windows环境中同时运行多个应用程序,只有具有焦点的应用程序才有活动标题栏,并能接受用户输入。有多个文本框的窗体中,只有具有焦点的文本框才显示由键盘输入的文本。当对象得到或失去焦点时,触发GotFocus事件或LostFocus事件。窗体和多数控件支持这些事件。Tab键使焦点从一个控件移到另一个控件,移动的顺序取决于控件的TabIndex属性值。属性值TabIndex0的控件首先获得焦点,其次是属性值TabIndex的控件,依此类推。改变控件的TabIndex属性值可改变焦点的移动顺序。,焦点与Tab键,控件获得焦点的方法:单击控件;按Tab键进行选择;在代码中使用SetFocus方法。例如,Text1.SetFocus,可使文本框Text1获得焦点。具有标题属性的控件获得焦点时,其标题周围出现一个虚线框。标签、框架、定时器、图片框、造型、画线等控件不接收焦点。,焦点与Tab键,窗体只有在其中的任何控件都不具有焦点时才能接收焦点。当窗体内有多个控件时,同一时刻有且只有一个控件具有焦点。某个控件获得焦点时,原先具有焦点的控件即失去焦点。例2-5创建一个登录窗口。程序运行时,在文本框中输入密码,单击“确定”按钮后,若密码正确进入下一窗体;否则清除文本框,使焦点重新定位于文本框处,提示重新输入密码。单击“清除”按钮后,清除文本框,焦点重新定位于文本框处,等待重新输入密码。,焦点与Tab键,设计应用程序界面(略)对象属性设置(表2-3)对象类型 对象名称属 性 设 置窗体 Form1 Caption 登录窗口文本框 Text1 Passwordchar*标签 Label1 Caption 请输入密码 Font.Size 四号命令按钮 Command1 Caption 确定 Font 隶书 Font.Size 小三命令按钮 Command2 Caption 取消 Font 隶书 Font.Size 小三窗体 Form2 Caption 系统窗口标签 L1 Caption 欢迎进入本系统,焦点与Tab键,程序代码Private Sub Command1_Click()单击“确定”按钮 If Text1.Text=key Then 进行密码校验 Form1.Hide Form2.Show Else MsgBox 密码输入出错,请重新输入密码!,vbOKOnly,密码校验 Text1.SetFocus Text1.Text=End If End Sub,焦点与Tab键,Private Sub Command2_Click()单击“清除”按钮 Text1.SetFocus Text1.Text=End Sub Private Sub Form_Load()初始化文本框 Text1.Text=End Sub运行程序(图2-12)在窗口Form1中输入密码正确时,将显示系统窗口Form2。说明:语句Text1.SetFocus使焦点重新定位于文本框处。利用Hide、Show方法隐藏和显示窗体。,工程的概念,工程是所有组成应用程序的文件的集合。如窗体文件、模块文件、ActiveX控件文件等。应用程序中的所有窗体、控件、模块和其它对象资源,都包含在工程文件中,并由工程统一进行管理。每个工程对应一个应用程序。每个工程是一个文件,包含了该工程用到的所有文件的文件名、路径、版本和注册信息等,以及该工程所需的一些环境设置。工程文件只是一种定义文件,不真正包含用到的那些文件,只是记录这些文件的一些信息。,工程的概念,打开一个工程即打开工程中的所有文件。保存工程时,其中包含的信息随改变而被更新。工程文件的扩展名为.VBP。创建一个应用程序时,就要创建一个新的工程。一个工程包含的所有信息和当前状态都可以反映在“工程资源管理器”窗口中。在开发过程中,工程窗口显示当前工程的文件列表。,工程的组成,一个工程可能包含各种类型的文件。工程文件:包含与该工程相关的全部文件和对象清单信息。每次保存工程时,这些信息都要被更新。扩展名为.Vbp。窗体文件:包含窗体的界面信息(窗体大小,各控件大小和位置等)、在窗体内编写的过程、函数等代码、在窗体内定义的变量。扩展名为.frm。窗体二进制文件:当窗体上对象的数据含有二进制属性(如图标或图片)时,保存该窗体文件时,系统自动产生同名的.frx文件。,工程的组成,标准模块文件:定义变量、常量、子程序、函数等,供其他模块使用。扩展名为.bas。类模块文件:建立类,供其他模块建立对象使用。扩展名为.cls。资源文件:包含不必重新编辑代码即可改变的位图、字符串等。扩展名为.res。ActiveX控件文件:扩展控件,可添加到工具箱并在窗体中使用,扩展名为.ocx。基本的工程必须包括工程文件、窗体文件和窗体的二进制文件,其它文件根据应用程序而定。,工程的基本操作创建工程,可用两种方法创建新工程:方法一:启动VB时创建新工程启动VB时,弹出“新建工程”对话框,提示选择创建工程的类型。在对话框中选择工程类型,单击“确定”按钮,进入集成开发环境。方法二:在已经启动VB的情况下创建新工程在菜单栏上选择“文件新建工程”选项,弹出“新建工程”对话框。在“新建工程”对话框中选择工程类型,单击“打开”按钮。,工程的基本操作创建工程,根据用户选定的工程,在集成开发环境中创建一个新的工程。系统在工程中创建一个窗体,并可从工程窗口中看到一个树型结构的列表。列表包含当前工程所用到的文件。其中:Project1(Project1):工程1,代表当前工程Form1(Form1):代表一个窗体Forms(窗体):代表一个文件夹,其中包括所有窗体文件。Project1(Project1)和Form1(Form1)括号左边部分表示该工程或窗体的名称,括号内的部分表示该工程或窗体文件的文件名。,工程的基本操作保存工程,直接保存:在菜单栏上选择“文件保存工程”选项。保存新创建工程:弹出“文件另存为”对话框,提示保存窗体文件(Form1.frm);选择文件名并单击“保存”按钮;提示保存工程中的其它对象,;提示保存工程文件(Project1.vbp);单击“保存”按钮。保存原来已有的工程:按原工程文件名和各部件文件名保存,不再提示;如果在编辑工程时添加了新的部件(如窗体、控件等),提示对新添加部分保存,工程的基本操作保存工程,另存为在菜单栏上选择“文件工程另存为”选项,弹出“文件另存为”对话框;可以将工程中所有的文件依次另外保存。用这种方法可以将当前工程备份。单独保存工程中的某一个文件在工程窗口中选择Form1并单击鼠标右键。在弹出的快捷菜单中选择“Save Form1.frm”选项,即可单独保存该文件。,工程的基本操作打开工程,方法一:打开一个从未打开过的工程在菜单栏上选择“文件打开工程”选项,或在标准工具栏上单击“打开工程”按钮,弹出“打开工程”对话框。选择“现存”选项卡,选择工程文件,单击“打开”按钮。方法二:打开一个曾经打开过的工程在菜单栏上选择“文件打开工程”选项,或在标准工具栏上单击“打开工程”按钮,弹出“打开工程”对话框。选择“最新”选项卡,选择工程文件,单击“打开”按钮。方法三:打开最近打开过的4个工程之一在菜单栏的“文件”菜单底部列出最近打开过的工程,选择要打开的工程文件。,工程的基本操作移除工程,在“工程资源管理器”窗口中选择要移除的工程;在菜单栏上选择“文件移除工程”选项;如果要移除的工程曾经被修改,提示对当前要移除的工程是否保存;否则不提示而直接移除。提示:可以在“工程资源管理器”中直接选择文件,单击鼠标右键,在弹出的快捷菜单中选择命令完成与主菜单中相同的功能。注意:工程中的文件可以被多个工程共享,开发一个工程时,可以调用原有工程中的旧文件。修改并保存时,最好选择“另存为”,否则该文件的保存会影响其它工程。,工程组的概念,在集成开发环境中打开多个工程时,这些工程的集合形成一个工程组(Project Group)。在一个开发环境中可以有多个工程,但只能有一个工程组。工程组是一个文件,记录所包含工程的信息。工程组的文件扩展名为.vbg。通过向当前编辑工程中添加新工程或原有工程,可以组成工程组。打开工程组可以一次性打开多个工程,方便应用程序的开发。,向一个工程组中添加一个工程,、一般方法:在菜单栏上选择“文件添加工程”选项,弹出“添加工程”对话框。若添加一个新的工程:在“新建”选项卡中选择一种类型的工程;若添加一个已存在的工程:从“现存”或“最新”选项卡中选择要添加的工程。选择后,单击“打开”按钮,关闭对话框。,向一个工程组中添加一个工程,、快捷方法:在工具栏上单击“添加标准EXE”按钮,可添加一个新的标准EXE工程。或单击该按钮右边的向下箭头,在四种最常用的工程类型列表中选择一种。添加工程后,新添加的工程出现在工程窗口中。工程窗口的标题栏显示“工程组-工程组1”(Project Group-Group1),表明这是一个工程组。向当前工程中添加工程时,VB自动创建一个工程组。组成工程组后,保存时需要对工程分别保存。每个工程可以单独打开,独立编辑。,从工程组中删除一个工程,在工程窗口中选择要删除的工程。单击鼠标右键,在弹出的快捷菜单中选择“移除工程”选项;或在菜单栏上选择“文件移除工程”选项。如果在工程组中只剩下一个工程