1、Visual Basic 语 言 程 序 设 计第第6 6章章 窗体与基本控件窗体与基本控件l6.1 对象的基本属性本节介绍VB内部控件的基本属性,多数的控件或窗体都具有这些属性。6.1.1 属性的分类对象的属性分为3种:只读属性、运行时只读属性和可读写属性。l只读属性:l运行时只读属性:l可读写属性:Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(1)Name名称属性l(2)Caption标题属性l(3)Width、Height与Left、Top属性,Width和Height属性分别表示对象的宽度和高度,即对象的大小。Left和Top属
2、性分别是控件的左边到其容器的左边,控件的上边到其容器的上边的距离,即对象的位置。对于窗体,Top表示窗体到屏幕顶部的距离,Left表示窗体到屏幕左边的距离。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(4)Visible属性该属性决定对象是否可见。True:程序运行时控件可见。False:程序运行时控件隐藏起来,不可见,但控件本身还存在。l(5)Enabled属性该属性决定对象是否是有效。True:允许用户操作,并对操作作出响应。False:禁止用户操作,呈暗淡色。l(6)Appearance属性该属性是窗体与有边框的控件都具有的一个属
3、性,它的值决定了边框的绘制样式。它的取值有两个:l0表示以平面样式绘制,没有立体效果。l1表示以立体样式绘制边框。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(7)BorderStyle属性该属性用来设置窗体和控件边框样式。BorderStyle属性在运行时是只读的。0-None:控件周围没有边框。1-Fixed Single:控件带有单边框。l(8)Font属性该属性改变文字的外观,其“字体”对话框如图6.2所示。FontName属性是字符型,决定了控件上正文的字体。FontSize属性是整型,决定了控件上正文的字体大小,以磅为单位。
4、FontBold属性是逻辑型,表示控件上正文是否是粗体。FontItalic属性是逻辑型,表示控件上正文是否是斜体。FontStrikethru属性是逻辑型,表示控件上正文是否加删除线。FontUnderline属性是逻辑型,表示控件上正文是否带下划线。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(9)ForeColor属性该属性用来设置对象的前景颜色,即正文和作图时的颜色。其值是一个16进制常数,用户可以在调色板中直接选择所需要的颜色。l(10)BackColor属性该属性用来设置对象的背景颜色,即正文以外的显示区域的颜色。l(11)
5、FillColor属性该属性用来设置填充封闭图形所用的颜色。l(12)BackStyle属性该属性用来设置背景风格。0-Transparent:透明显示,即控件背景颜色显示不出来,若控件后面有其他控件或背景,均可设置为透明显示。1-Opaque:不透明,此时可为控件设置背景颜色。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(13)Alignment属性该属性决定控件上正文水平对齐方式。0-Left Justify:正文左对齐。1-Rigth Justify:正文右对齐。2-Center:正文居中。l(14)AutoSize属性该属性决定
6、控件是否根据正文自动调整大小。True:自动调整大小。False:保持原来设计时的大小,正文若太长多余部分会被隐藏掉。默认为False。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(15)WordWarp属性该属性决定文本在垂直方向上是否改变显示区域的大小。WordWarp属性必须是在AutoSize属性设置为True时,WordWarp属性才有效。True:表示按照文本和字体大小在垂直方向上改变显示区的大小,而在水平方向上不发生变化。False:表示在水平方向上按正文长度放大和缩小;在垂直方向上以字体大小来放大或缩小显示区。l(16)
7、Tag属性每一个窗体和控件都有一个Tag属性,VB内部并不使用这个属性,只是在程序中利用它来标识对象实例。Visual Basic 语 言 程 序 设 计6.1.2 6.1.2 对象的基本属性对象的基本属性l(17)ToolTipText属性这是每一个可视控件都具有的属性,它用于返回或设置当鼠标在控件上暂停时显示的文本(提示信息)。l(18)TabIndex属性该属性决定了当用户按Tab键时,焦点在各个控件转移的顺序。焦点是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。在Windows环境下,可同时运行多个应用程序,有多个窗口,但焦点只能有一个。焦点能由用户或应用程序设置。
8、当在窗体上有多个控件时,对于大部分控件,VB会给它分配一个Tab键顺序,所谓Tab键顺序,就是按Tab键时,焦点在各个控件上移动的顺序。一般,其顺序与控件建立的顺序相同,若要改变此顺序,可以设置控件的TabIndex属性,TabIndex属性决定了它在Tab中的位置。按默认值规定,第一个建立的控件的TabIndex属性值为0,第二个为1,依次类推。在设计时用属性窗口或在运行时用代码可改变控件的TabIndex属性。运行时,不可见或无效的控件以及不能接收焦点的控件(如Frame、Lablel等控件),仍保持在Tab键顺序中,但切换时要跳过这些控件。Visual Basic 语 言 程 序 设 计
9、6.1.2 6.1.2 对象的基本属性对象的基本属性l(19)TabStop属性TabStop属性返回或设置一个值,该值用来指示是否能够使用Tab键将焦点从另一个对象移动到这个对象上。当一个控件的TabStop属性设置为False时,用Tab键就不能使该控件获得输入焦点,只有那些可以获得输入焦点的控件才具有该属性。【例6.1】在窗体上建立一个命令按钮:Command1,一个标签框:Label1,运行结果如图6.3所示。【例6.2】窗体上有6个标签:Label1Label6,每个标签的宽度和高度相同,其属性设置如表6.1所示,运行结果如图6.4所示。Visual Basic 语 言 程 序 设
10、计6.2 6.2 窗体的属性、事件和方法窗体的属性、事件和方法l6.2.1 窗体的常用属性1.窗体基本属性1.窗体基本属性包括:Name、Caption、Height、Width、Left、Top、Font、Enabled、Visible、ForeColor、BackColor属性等。2.窗体的特有属性l(1)MaxButton属性指定窗体标题栏的最大化按钮是否有效。只能在属性窗口中设置。True:窗体右上角有最大化按钮。False:窗体右上角无最大化按钮。Visual Basic 语 言 程 序 设 计窗体的特有属性窗体的特有属性l(2)MinButton属性指定窗体标题栏中的最小化按钮是否
11、有效。只能在属性窗口中设置。True:窗体右上角有最小化按钮。False:窗体右上角无最小化按钮。l(3)ControlBox属性该属性指定是否在窗体左上角有控制菜单框。该属性在运行时是只读的。True:在窗体左上角有控制菜单框。False:在窗体左上角无控制菜单框。Visual Basic 语 言 程 序 设 计窗体的特有属性窗体的特有属性l(4)WindowState属性该属性表示窗体执行时以什么状态显示。0Normal:正常窗口状态,有窗口边界。1Minimized:最小化状态,以图标方式运行。2Maximized:最大化状态,无边框,充满整个屏幕。l(5)Icon属性在属性窗口中,可以
12、单击Icon设置框边的(省略号),打开一个“加载图标”对话框,用户可以选择一个图标文件装入,当窗体最小化时,以该图标显示。l(6)Moveable属性指定用户是否可以用拖动窗口标题栏来移动窗口。若其值为Ture,则可以移动。Visual Basic 语 言 程 序 设 计窗体的特有属性窗体的特有属性l(7)ShowInTaskbar属性指定一个窗体对象在运行时的窗口是否出现在Windows任务栏中。若它的值为True,则出现在任务栏中。该属性在运行时是只读的。l(8)BorderStyle属性指定窗体的边框样式。改变此属性值,会改变MinButton、MaxButton和ShowInTaskb
13、ar属性的设置值。l(9)Picture属性该属性设置在窗体或控件中显示的图片。在设计时,单击属性窗口中Picture属性右端的(省略号),可以打开一个“加载图片”对话框,用户可以选择一个图形文件装入。图片框Picture控件,也具有Picture属性。Visual Basic 语 言 程 序 设 计6.2.2 6.2.2 窗体的常用事件窗体的常用事件l窗体的事件较多,一般分鼠标事件、键盘事件、窗体装载事件等,下面分别介绍。1.鼠标事件l所谓鼠标事件是指由用户操作鼠标而引发的但能被VB中的各种对象识别的事件。鼠标有五个事件:Click、DblClick、MouseDown、MouseUp和Mo
14、useMove事件。l(1)Click(单击)事件l(2)DblClick(双击)事件l(3)MouseDown(按下鼠标)事件l(4)MouseUp(释放鼠标)事件l(5)MouseMove(移动鼠标)事件如果是双击一个控件时,将按顺序产生下列事件:MouseDown、MouseUp、Click、DblClick和MouseMove事件。Visual Basic 语 言 程 序 设 计窗体的事件窗体的事件2.键盘事件l键盘事件包括:KeyPress、KeyDown和KeyUp事件。l(1)KeyPress事件l(2)KeyDown事件l(3)KeyUp事件3.其他事件l(1)Load(装入)
15、事件l(2)Unload(卸载)事件l(3)Activate(活动)和DeActivate(非活动)事件l(4)Paint(绘画)事件Visual Basic 语 言 程 序 设 计6.2.3 6.2.3 窗体的常用方法窗体的常用方法l1.Move方法Move方法是几乎任何一个可视对象都具有的方法。它的作用是改变对象的位置和大小。l格式:对象.Move Left,Top,Width,Heightl功能:用来移动窗体和控件,并可以改变其大小。l说明:对象是窗体或控件。l2.SetFocus方法窗体对象和可以获得输入焦点的对象都具有此方法。调用对象的此方法后,任何输入将指向该对象。此方法不需要任何
16、参数。只有当对象已经显示并且其Enabled属性为True时,才可调用对象的这个方法。Visual Basic 语 言 程 序 设 计6.2.4 6.2.4 控件的常用事件控件的常用事件l鼠标事件:Click、DblClick、MouseDown、MouseUp、MouseMove事件。l键盘事件:KeyDown、KeyUp、KeyPress事件。Visual Basic 语 言 程 序 设 计6.2.5 LoadPicture6.2.5 LoadPicture函数函数l如果要在窗体、图片框、图像框中装入图片,除了在设计中用属性窗口装载外,还可以在程序中使用LoadPicture函数。格式:对
17、象名.Picture=LoadPicture(文件名)功能:LoadPicture是一个函数,用来将指定图形文件调入内存。【例6.3】在窗体中装入图形作为背景,当用户单击窗体或双击窗体时,显示的标题、图形和文字都有所不同。Visual Basic 语 言 程 序 设 计6.8 DblClick6.8 DblClick事件的运行效果事件的运行效果 l【例6.4】设计一个程序,在窗体上添加四个图像框,当用户在窗体上移动鼠标,四个图形文件就会装入图像框。当用户在窗体内移动鼠标时,就会发生MouseMove事件,执行Form_MouseMove过程语句将四个图形文件分别装入四个图像框中。程序的执行屏幕
18、如图6.10所示。将上述程序代码剪切到MouseUp事件中,释放鼠标也能将四个图形文件分别装入四个图像框中。Visual Basic 语 言 程 序 设 计6.8 DblClick6.8 DblClick事件的运行效果事件的运行效果l【例6.5】用窗体键盘的KeyDown事件,在窗体上画一个圆。如图6.11所示。l【例6.6】用窗体的单击Click事件,在窗体上和图片框上各画一个圆。如图6.12所示。l【例6.7】利用KeyPress事件,在窗体上显示按键的ASCII码及对应的字符。如图6.13所示。l【例6.8】利用KeyPress事件,可以对输入的数据进行过滤。如图6.14所示。l【例6.
19、9】使用Move方法使窗体移动并改变其大小。如图6.15所示。Visual Basic 语 言 程 序 设 计6.3 6.3 多窗体多窗体l在集成开发环境中,使用“工程添加窗体”菜单,就可以在一个工程中使用多个窗体。被设置为启动对象的窗体在程序运行之初会被自动加载和显示,但是只能在工程属性中设置一个窗体模块为启动对象。当启动对象是Sub Main过程时,要显示窗体或当显示一个窗体后再显示其他的窗体,就要考虑窗体的加载、显示、隐藏和卸载问题。Visual Basic 语 言 程 序 设 计6.3.1 6.3.1 加载窗体加载窗体l加载窗体使用Load语句。格式:Load 窗体名功能:加载窗体到内
20、存。说明:加载窗体只是将这个窗体对象装入内存,但并不显示这个窗体对象。此语句只是需要在初始化时加载所有的窗体并在以后需要他们的时候显示。当VB加载窗体时,先把窗体的各属性设置为初始值,再执行Load事件。Visual Basic 语 言 程 序 设 计6.3.2 6.3.2 显示窗体显示窗体l显示一个窗体就要把它的Visible属性设置为True。显示一个窗体还可以用窗体对象的Show方法。格式:窗体名.Show功能:将窗体显示在屏幕上。说明:如果在调用一个窗体的Show方法时,指定的窗体尚未加载,VB将自动装载该窗体。Visual Basic 语 言 程 序 设 计6.3.3 6.3.3 隐
21、藏窗体隐藏窗体l把一个窗体的Visible属性设置为False或使用它的Hide方法,就可以把窗体隐藏。格式:窗体名.Hide功能:将窗体隐藏起来。说明:隐藏窗体并不把窗体从内存中卸载,只是变得不可见。在使用Visible属性或Hide方法隐藏窗体时,如果窗体尚未加载,则VB会加载该窗体,但不会让它显示出来。Visual Basic 语 言 程 序 设 计6.3.4 6.3.4 卸载窗体卸载窗体l窗体用完后可以卸载窗体,要用Unload语句。Unload语句的语法格式与Load语句相同。格式:UnLoad 窗体名功能:将窗体从内存中卸载下来。说明:当卸载一个窗体时它的子窗体也会被卸载。Visu
22、al Basic 语 言 程 序 设 计6.3.5 6.3.5 建立多窗体建立多窗体l1.建立多窗体的操作步骤2.启动窗体【例6.10】设计一个具两个窗体的程序,在每个窗体中装入一幅画。【例6.11】设计一个程序,当在窗体上选择“输入成绩”按钮后,屏幕就弹出一个输入学生成绩窗体,用户可以输入学生的每科成绩,输入完成,单击“计算”按钮,屏幕就弹出计算总分与平均分的窗体,并计算出学生的总分与平均分。Visual Basic 语 言 程 序 设 计6.4 6.4 鼠标事件与键盘事件鼠标事件与键盘事件l6.4.1 鼠标事件 MouseDown、MouseUp和MouseMove三个鼠标事件过程如下(以
23、Form对象为例):lSub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)l Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)l Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)这三个鼠标事件过程具有相同的参数,他们把鼠标的信息传给过程。Visual Basic 语 言 程 序 设
24、计6.4.1 6.4.1 鼠标事件鼠标事件(1)Button:被按下的鼠标按钮,可以取以下3个值,如表6.5所示。(2)Shift:表示Shift、Ctrl和Alt的状态。如表6.7所示。(3)X,Y:这两个值对应于当前鼠标的位置,采用ScaleMode属性指定的位置。说明:l(1)有些鼠标只有两个按钮,或者虽有3个按钮,但Windows鼠标驱动程序不能识别中间按钮。在这种情况下,表6.6中的后4个参数值不能使用。Visual Basic 语 言 程 序 设 计6.4.1 6.4.1 鼠标事件鼠标事件表6.5 Button按钮的3个取值符号常量 值 作 用 LEFT_BUTTON 1 按下鼠标
25、左按钮RIGHT_BUTTON 2 按下鼠标右按钮MIDDLE_BUTTON 4 按下鼠标中间按钮表6.6 Button按钮状态十进制 二进制 作 用 0 000 没按下任何按钮 1 001 左键被按下(默认)2 010 右键被按下 3 011 左、右按钮同时被按下 4 100 中间按钮被按下 5 101 同时按下中间和左按钮 6 110 同时按下中间和右按钮 7 111 3个按钮同时被按下Visual Basic 语 言 程 序 设 计6.4.1 6.4.1 鼠标事件鼠标事件(2)对于单按鼠标器,它的按钮定义为左按钮。如果鼠标带两个按钮,并使用Windows的控制面板交换了鼠标器的左、右钮,
26、那么,当按右按钮时,VB认为是按了左按钮。l例如,如果按住Ctrl键,然后在坐标为(2000,3000)的点上按下鼠标器右键,则立即调用Form_MouseDown过程,释放鼠标右键时,调用Form_MouseUp过程。此时Button、Shift、X、Y这四个参数的值分别为2、2、2000和3000。Visual Basic 语 言 程 序 设 计6.4.1 6.4.1 鼠标事件鼠标事件(3)Shift是转换键,它指的是3个转换状态,包括Shift、Ctrl和Alt。这3个键分别以二进制方式表示,每个键用三位,即:Shift键为001,Ctrl键为010,Alt键为100。当按下Shift键
27、时,Shift参数的值为001(十进制数1),当按下Ctrl键时,Shift参数的值为010(十进制数2),而按下Alt键时,Shift参数的值为100(十进制数4)。如果同时按下两个或三个转换键,则Shift参数的值即为上述两者或三者之和。因此,Shift参数共可取8种值,如表6.7所示。Visual Basic 语 言 程 序 设 计表表6.7 Shift6.7 Shift参数的值参数的值l十进制 二进制 作 用 l 0 000 没有按下转换键l 1 001 按下一个Shift键l 2 010 按下一个Ctrl键l 3 011 按下一个Ctrl+Shift键l 4 100 按下一个Alt键
28、l 5 101 按下一个Alt+Shift键l 6 110 按下一个Alt+Ctrl键l 7 111 按下一个Alt+Ctrl+Shift键Visual Basic 语 言 程 序 设 计6.4.2 6.4.2 键盘事件键盘事件l当控制焦点置于某对象上,同时用户按下键盘中的任一键,便会使对象引发KeyDown事件,释放按键便引发对象的KeyUp事件。与KeyPress事件不同,KeyUp事件和KeyDown事件返回的是被按下或释放的键盘扫描码和组合键的状态。其事件过程形式如下:Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)Sub ob
29、ject_KeyDown(Index As Integer,KeyCode As Integer,Shift As Integer)Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)Sub object_KeyUp(Index As Integer,KeyCode As Integer,Shift As Integer)Visual Basic 语 言 程 序 设 计6.4.2 6.4.2 键盘事件键盘事件l其中:(1)KeyCode参数是用户所操作的那个键的扫描代码,它告诉事件过程,用户操作的物理键,也就是说,大写字母和小写字母使用同一个键
30、,他们的KeyCode相同。对于有上档字符和下档字符的键,其KeyCode也是相同的,即为下档字符的ASCII码。表6.8列出的部分字符的KeyDown事件的KeyCode和KeyPress事件的KeyAscii码以供区别。(2)Shift是一个整数,与鼠标事件过程中的Shift参数意义相同。Visual Basic 语 言 程 序 设 计表表6.8 KeyCode6.8 KeyCode与与KeyAsciiKeyAscii码码l键(字符)KeyCode KeyAsciil A&H41&H61l a&H41&H61l B&H42&H62l b&H42&H62l 5&H35&H35l%&H35&H
31、25l 1(大键盘上)&H31&H31(l 1(大键盘上)&H61&H31在VB中已把键盘上的功能键定义为常量,即vbKeyFX,这里的X可以是1到12的值。例如。vbKeyF5表示功能键F5。这些常量可以在程序中使用。Visual Basic 语 言 程 序 设 计6.4.2 6.4.2 键盘事件键盘事件l【例6.12】编写一个程序,当按下Alt+F5键时终止程序的运行。l【例6.13】编写一个程序,测试某个功能键是否被按下。l【例6.14】编写一个程序,当按下键盘上的某个键时,输出该键的KeyCode码。Visual Basic 语 言 程 序 设 计6.4.3 6.4.3 鼠标光标的形状
32、鼠标光标的形状l6.4.4 设置鼠标光标形状1.在代码中设置MousePointer属性格式:对象.MousePointer=设置值l功能:设置光标的形状。l说明:(1)对象可以是窗体、列表框、图像框、图片框等。(2)设置值是115中其中的一个值。l【6.15】编写程序,显示鼠标的形状。l上述程序运行后,把鼠标光标移到窗体内,每单击一次变换一种鼠标光标的形状,将依次显示鼠标的15个属性。Visual Basic 语 言 程 序 设 计6.4.4 6.4.4 设置鼠标光标形状设置鼠标光标形状2.在属性窗口中设置MousePointer属性在属性窗口中设置MousePointer属性的操作步骤如下:l(1)单击属性窗口的MousePointer属性条。l(2)单击设置框右端向下的箭头,将下拉显示MousePointer属性的15个属性值,如图6.25所示。l(3)单击某个属性值,即可把该值设置为当前活动对象的属性值。3.自定义鼠标光标4.鼠标光标形状的使用