1 / 54

窗体和控件是构成用户界面的基本元素,是创建应用程序所必不可少的对象。

窗体和控件是构成用户界面的基本元素,是创建应用程序所必不可少的对象。 在 Visual Basic 的应用程序设计中,首先根据要求规划好界面的元素和布局,然后对将要使用的窗体、控件,决定应更改哪些属性、调用哪些方法、对哪些事件作出响应,从而得到希望的外观和行为,使得窗口及控件能正确响应用户的交互操作。 本章将介绍窗体与各种常用控件的属性、方法、事件及其设计方法。. 第六章 控件. 1 . Visual Basic 控件分类

gay-holt
Télécharger la présentation

窗体和控件是构成用户界面的基本元素,是创建应用程序所必不可少的对象。

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 窗体和控件是构成用户界面的基本元素,是创建应用程序所必不可少的对象。窗体和控件是构成用户界面的基本元素,是创建应用程序所必不可少的对象。 在Visual Basic 的应用程序设计中,首先根据要求规划好界面的元素和布局,然后对将要使用的窗体、控件,决定应更改哪些属性、调用哪些方法、对哪些事件作出响应,从而得到希望的外观和行为,使得窗口及控件能正确响应用户的交互操作。 本章将介绍窗体与各种常用控件的属性、方法、事件及其设计方法。 第六章 控件

  2. 1.Visual Basic 控件分类 (1)内部控件:又称为标准控件,提供界面设计的基本对象,例如 CommandButton 和 Frame 控件等。内部控件总是出现在工具箱中。 (2)ActiveX 控件:又称为外部控件,为扩展名为 .ocx 的独立文件,是微软扩充VB系统功能的一种机制。 (3)可插入的对象:是其它软件系统在VB应用程序中所创建的文档对象,例如一个包含公司所有雇员的列表的 Microsoft Excel 工作表对象,或者一个包含某工程计划信息的 Microsoft Project 日历对象。 ActiveX 控件和可插入对象只在需要时才添加到工具箱中 6.1 Visual Basic控件概述

  3. 2.控件值 • 所有控件都有一个默认属性,只需直接引用控件名就可使用该属性,这个属性被称为控件值,一般将最重要或最常用属性当作控件的值。例如下面两条语句结果相同: • Label1=”shape” • Label1.Caption=”shape” • 部分控件的控件值

  4. 3.控件的基本属性 大多数控件都具以下基本属性: (1)名称与标题属性:Name、Caption (2)可视与交互使能属性:Visible、Enabled (3)大小与位置属性:Height、Width、Top、Left (4)字体与颜色属性:Font、ForeColor、 BackColor (5)控件数组属性: Index 4.容器 在VB中,将可以包含其他控件的控件称为容器,主要有 Frame 控件、PictureBox 控件和窗体等。

  5. 窗体就是程序运行时的窗口或对话框,是提供用户与应用程序交互的场所,同时窗体是一块“画布”,是一个应用程序所有控件的容器。图6.1是一个窗体图例:窗体就是程序运行时的窗口或对话框,是提供用户与应用程序交互的场所,同时窗体是一块“画布”,是一个应用程序所有控件的容器。图6.1是一个窗体图例: 6.2 窗体

  6. Visual Basic 窗口存在一个生存期,生存期的主要状态有: (1)创建,但不加载。(2)加载,但不显示。(3)显示。 (4)内存和资源完全收回。 它们之间的主要关系见下图6.2:

  7. 1. 窗体的创建 在程序设计中,大部分的应用程序都只有一个窗体,但有的时候需要多个窗体来实现程序的功能。在设计阶段,通过菜单:工程→添加窗体 ,便可以生成一个新的窗体。在运行阶段,在代码中使用 New 关键字可以创建窗体实例,例如下面语句声明并分配存储空间给一个窗体对象变量newWindow,并显示该窗体对象: dim newWindow As New formModel newWindow.Show 其中formModel是一个已经存在的窗体对象

  8. 2. 窗体属性 (1)Name属性 该属性表示窗体在程序中的标识,窗体的默认名字为“Form”后跟一个序号;可以在设计阶段设计修改窗口名字,但在运行阶段不可以改变该属性的值。 (2)Enabled属性 该属性决定是否允许窗口与用户交互,即是否激活窗口。若属性取值True,表示允许窗口与用户交互,若取值False表示不允许,包括窗口内的所有控件都不允许与用户交互。 (3)Caption属性 该属性指定窗口在标题栏中的标题。 (4)Top、Left、Height、Width属性 窗口的左上角位置由Top、Left属性指定,其中Top表示窗口的上边界屏幕顶端之间的距离,Left表示窗口左边界与屏幕左端之间的距离。窗体大小由Height(高度)、width(宽度)属性指定。在设计阶段可以通过拖动窗口右下角调整窗口大小。

  9. 2. 窗体属性 (5)BorderStyle属性 该属性指定窗口的边框类型。该属性为只读属性。属性取值如下: 0—None 无。 1—Fixed Single固定单边框:可以包含关闭按钮,标题栏,无“最大化”按钮和“最小化”按钮,不能改变窗体大小。 2—Sizable(缺省值)可调整的边框:可以使用设置值重新改变尺寸,窗体为双线边框。 3—Fixed Double固定对话框:可以包含关闭按钮和标题栏,不能包含最大化和最小化按钮,不能改变大小。 4—Fixed ToolWindow固定工具窗口:不能改变尺寸。显示关闭按钮并用缩小的字体显示标题栏。窗体在 Windows的任务栏中不显示。 5—Sizable ToolWindow可变尺寸工具窗口:可变大小。显示关闭按钮并用缩小的字体显示标题栏。窗体在 Windows的任务栏中不显示。

  10. (6)Visible属性 该属性指定窗口的可见性。若属性取值True,表示窗体可见,若取值False表示窗体不可见。注意,该属性只在运行阶段起作用,在设计阶段不起作用。 (7)WindowState属性 该属性指定窗口的状态,共有三种状态:正常状态、最小化状态、最大化状态。该属性只在运行阶段起作用,取值如下: 0—Normal: 窗口处于正常状态 1—Minimized: 窗口处于最小化状态 2—Maximized: 窗口处于最大化状态 (8) MaxButton、MinButton属性 MaxButton、MinButton属性分别指定窗口的最大化按钮、最小化按钮的有效性。这两个属性在运行阶段起作用。若BorderStyle为0,这两个属性的作用忽略,否则:若属性取值True,对应按钮有效,若属性取值False,对应按钮无效。

  11. (9)Icon属性 该属性指定窗口运行时在其标题栏与Windows任务栏上的图标,或生成的可执行文件在Windows中的图标。若在设计阶段指定窗口图标,则在属性窗口对Icon属性指定后缀为.ico或 .cur的图标文件;若在运行阶段指定窗口图标,则用LoadPicture()函数指定: [窗口对象名].Icon = LoadPicture([图标文件路径名]) (10)ControlBox属性 该属性指定窗口的控制菜单框是否显示,控制菜单框由最大化按钮、最小化按钮与关闭按钮组成。该属性为只读属性。 (11)ForeColor、BackColor属性 ForeColor、BackColor属性分别指定窗口的前景色与背景色。前景色是指在窗体上输出文本时所使用的颜色,背景色则窗体的底色。

  12. (12)Font属性组 该属性组指定在窗口输出的文本的字体、字形与大小等特性。在设计阶段可通过一个字体对话框进行设置。在运行阶段,则可通过表6.2给出的属性组进行设置:

  13. 3. 窗体事件 窗体事件是窗体所能识别的动作。窗体最常用的事件如下: (1)Initialize事件 当应用程序创建 Form实例时发生此事件。Initialize事件在Load事件之前发生。一般利用Initialize事件初始化窗体所使用的数据。 (2) Load事件 在一个窗体被装载到内存时发生此事件。当使用 Load 语句启动应用程序,或引用未装载窗体的属性或控件时,此事件发生。通常在此事件中对应用程序中的变量或控件的属性赋初值,但若想在此事件过程中使用控件的方法,首先要调用Show方法将窗体显示。 (3)Click事件 当用户在窗口上无控件处单击鼠标左键或右键时,发生Click事件。

  14. (4) DblClick事件 当用户用鼠标在窗口上无控件处双击时,将发生两个事件:一个是Click事件(第一次按鼠标时发生),另一个是DblClick事件(第二次按鼠标时发生),这时Visual Basic依次调用Form_Click事件过程、Form_DblClick事件过程执行,来分别响应Click事件、DblClick事件。 (5)Resize事件 当一个窗口对象第一次显示或当一个窗口对象的状态改变时该事件发生。例如,一个窗体被最大化、最小化或被还原。

  15. (6)Activate事件 当一个窗体对象成为活动窗口时发生该事件。活动窗口是在前景上显示的窗口,其标题栏或边框以突出方式显示,用来与其它可见窗口相区别。该事件发生时窗体已完全显示。因此在此事件过程中可以直接使用控件的方法。 (7)Deactivate事件 当一个窗体对象不再是活动窗口时发生此事件。 (8)Unload事件 当窗体从屏幕上被删除时发生此事件(当该窗体被重新加载时,它的所有控件的内容均被重新初始化)。当使用 Control 菜单中的 Close 命令或 Unload语句(如 Unload me)关闭该窗体时,此事件被触发。

  16. 4. 窗体的方法 (1) Show方法 功能:显示窗口。 格式:[窗体名].Show (2) Hide方法 功能:隐藏窗口,即隐藏 MDIForm 或 Form 对象,但不能使其卸载。 格式:[窗体名].Hide 若省略窗口名,则带有焦点的窗口为默认窗口。 (3) Move方法 功能:移动窗口、改变窗口大小。 格式:[窗体名].Move left, top, width, height 若省略窗口名,则带有焦点的窗口为默认窗口。参数left、top、width、height分别表示窗口的左边的水平坐标、上边的垂直坐标、宽度与高度。

  17. (4) Cls方法 功能:清除窗口上的文本及图形,把光标移到左上角(0,0),窗口的当前光标位置CurrentX、CurrentY置为0。 格式:[窗体名].Cls 若省略窗口名,则带有焦点的窗口为默认窗口。 (5) Print方法 功能:该方法在窗口上显示文本。 格式:[窗口名].Print [打印列表] 若省略窗口名,则带有焦点的窗口为默认窗口。 “打印列表”为要打印的表达式或表达式的列表。如果省略,则打印一空白行

  18. TextBox 控件又称为编辑控件,其外形为一个文本编辑区域,具有输入、编辑、修改与显示文本的功能。 1. 常用属性 (1)MaxLength属性 该属性指定文本框中能够输入的字符的最大长度。如果该属性为0,表示不定长,文本框可以输入不超过32k的多行文本。在Visual Basic中,一个英文字符和一个中文字符都是一个字,长度为1,但占2个字节。 (2)Multiline属性 该属性指定文本框是否能够接受和显示多行文本,为只读属性。该属性的默认值为False,表示文本框默认为单行文本。 6.3.1 文本框TextBox

  19. (3)ScrollBars属性 该属性指定文本框是否有滚动条。该属性为只读属性。ScrollBars 属性的设置值为: 0—None(缺省值):无滚动条 1—Horizontal:水平 2—Vertical:垂直 3—Both:两种 (4)Text属性 文本框中的文本可以通过属性Text获取或者设置。Text 属性的缺省值与Name 属性的默认值相同。在“属性”窗口中通过Ctrl+Enter组合键输入换行符。在运行阶段,可以通过插入一个回车加上换行符(ASCII码值为13和10的字符)来产生一个行断点,也可以用常量 vbCrLf 插入一个回车与换行符组合。

  20. (5)PasswordChar属性 该属性用于口令输入,指定当用户输入密码时,在文本框上显示出来的遮掩符。如果该属性设置为空字符串 ("") (缺省值),文本框将显示实际输入的文本;否则在文本框中以该属性值的第一个字符作为占位符,代替每一个输入的字符。 (6)Locked属性 该属性决定是否允许用户编辑文本框的文本。该属性的默认值为False,表示文本框默认为可编辑的;若该属性为True,则文本框不可编辑,只能用作输出显示。 该属性只影响文本框与用户的交互,不影响在程序运行时通过程序改变文本框的内容 6.3.1 文本框TextBox

  21. 6.3.1 文本框TextBox (7)SelLength、SelStart、SelText属性 这三个属性用于对文本框的文本进行选择操作,如设置插入点、在控件中选择子串、或清除文本等。 • SelStart-返回或设置所选择的文本的起始点;如果没有文本被选中,则指出插入点的位置。 • SelLength-返回或设置所选择的字符数。 • SelText-返回或设置包含当前所选择文本的字符串;如果没有字符被选中,则为零长度字符串 ("")。 这些属性在设计时是不可用的。设置了SelStart和SelLength属性后,Visual Basic自动将设定的正文送入SelText中存放。

  22. 2. 常用事件 (1)Change事件 当用户改变文本框正文或通过代码改变 Text 属性值时发生此事件。Change 事件过程可协调各控件间显示的数据或使它们同步显示数据。 (2) Click事件 当用户在文本框上单击鼠标左键时发生此事件。 (3)LostFocus事件 当文本框失去焦点时发生此事件。所谓焦点是指控件接收用户鼠标或键盘输入的能力。仅当控件具有焦点时,方可接收用户的输入。该事件过程主要是用来对文本更新进行验证和确认。 (4)GotFocus事件 当文本框获得焦点时发生该事件。通过诸如 Tab 切换、或单击对象之类的用户动作、或在代码中用 SetFocus 方法改变焦点,都可能使文本框获得焦点。

  23. 3. 常用方法 所有可获得焦点的控件,如文本框、命令按钮等,都具有SetFocus方法。 功能:将焦点移到文本框。 格式: [文本框对象名].SetFocus 说明: (1)调用 SetFocus 方法以后,任何的用户输入将指向该文本框。 (2)焦点只能在可视的窗体或控件间移动。

  24. 命令按钮CommandButton 控件可以开始、中断或者结束一个操作进程。该控件使用非常普遍,是激活用户功能代码的一个重要途径。 1.常用属性 (1)Caption属性 Caption属性决定命令按钮上的命令标题,可利用属性Font实现其特定字体。如果Caption属性值中包含有“&”,则其后的字符被定义为该命令按钮的快捷键,如下图6.6的命令按钮的Caption属性值为“&Cancel”,用户可以通过按键ALT+C选中该命令按钮。 6.3.2命令按钮CommandButton

  25. (2)Value属性 该属性决定命令按钮是否被选中。True 表示已选择该按钮,False(缺省值)表示没有选择该按钮。如果在代码中设置 Value 属性值为 True ,则会激活该按钮的 Click 事件。该属性在设计时不可用。 (3)Default属性 该属性决定命令按钮是否为“缺省命令按钮”,取值为True表示是。“缺省命令按钮”是可以通过回车键Enter选中的按钮。当命令按钮的 Default 设置为 True 而且其父窗体是活动的,用户可以按 Enter 键选中该按钮。窗体中只能有一个命令按钮被设置为缺省命令按钮。 (4)Cancel属性 该属性决定命令按钮是否为“取消按钮”,取值为True表示是。“取消按钮”是可以通过 Esc 键来选中的按钮。窗体中只能有一个命令按钮为取消按钮。

  26. 复选框CheckBox允许在一组选项中选择若干项,或不选中任何项。一般在一个Frame 控件中将多个CheckBox 控件设为一组。选中 CheckBox 控件后,该控件将显示 √,而清除选中CheckBox 控件后, √ 消失。下面图6.7为一组复选框: 6.3.3 复选框CheckBox

  27. 1.常用属性 (1)Caption属性:指定复选框的注释内容,即复选框边上的文本标题。 (2)Aligment属性:指定复选框与文本标题的位置关系。 0—Left Justify(缺省值):文本在右边,控件在左边 1—Right Justify:文本在左边,控件在右边 (3)Value属性:该属性指明复选框是否选中,取值如下: 0—Unchecked: 没有选中复选框(缺省值) 1—Checked:复选框被选中 2—Unavailable:变灰,禁止用户选择该复选框。 (4)Style属性:该属性指定复选框的外观,可取值如下: 0—Standard(缺省的)标准的:复选框显示为在其身旁有一个标签的标准形式。 1—Graphical 图形的:复选框显示为类似按钮的外形,能上下切换,并可由属性Picture指定其图形文件。

  28. 2.常用事件 复选框的常见事件为Click,无论何时单击复选框都发生Click事件,可以在该事件过程中检查复选框的Value值,并进行相应的处理。复选框不支持双击事件。如在上述图6.7水果的选择中,下面代码获取用户对苹果复选框的选择: Private Sub appleCheck_Click() If appleCheck.Value=0 Then ? “未选中苹果” ‘命令符号“?”等价于Print方法 ElseIf appleCheck.Value=1 Then ? “选中苹果 ” End If End Sub

  29. 单选框OptionButton允许在一组选项中选择其中一项。在 Frame 控件、PictureBox 控件或者窗体这样的容器中绘制 OptionButton 控件,就可以把这些控件分组。同一容器中的 OptionButton 控件为一个组。 OptionButton 控件和 CheckBox 控件功能相似,但是二者间也存在着重要差别。在选择一个 OptionButton 时,同组中的其它 OptionButton 控件自动无效。与此相反,却可以选择任意数量的 CheckBox 控件。 6.3.4 单选框OptionButton

  30. 1. 常用属性 单选框的Caption属性、Aligment属性及Style属性与复选框的相同,但其Value属性有不同的取值: True— 表示已选择了该单选框。 False—(缺省值)表示没有选择该单选框。 2.常用事件 单选框的常见事件为Click,单击鼠标左键选中单选框时触发Click事件。可以在该事件过程中进行相应的处理。如在上图6.8 国籍单选框组中,下面代码确认用户选择中国: Private Sub chinaOption_Click() ?“选择中国国籍” End Sub 注意,单选框仅在被选中时才触发Click事件,而复选框无论何时被单击(选中或清除选中)都会触发Click事件。

  31. 列表框ListBox用于显示项目列表,并可从其中可以选择一项或多项,特别适合在指定的集合中进行选择的情形。如果项目总数超过了列表框, VB会自动在 ListBox 控件上添加一个垂直滚动条,如图6.11所示。 6.3.5 列表框ListBox

  32. 1. 常用属性 (1)List属性 该属性用于存放列表框的列表项目,为一个字符串数组,数组的每一个元素都对应一个列表项目。在设计阶段,可以通过属性窗口给List属性增加表项:在选定了List属性后,单击左边的向下箭头,可输入表项,按Ctrl+Enter进行换行。 (2)ListIndex属性 该属性指定或返回被选中的项目的序号,在设计时不可用。列表中的首项目的序号为 0,依次类推。如果未选定项目,则 ListIndex 属性值为–1。如果给该属性ListIndex赋值,将选中位于ListIndex的表项,并触发Click事件。 (3) Text属性 该属性返回被选中的项目的文本内容,其返回值总与表达式List([列表框对象名].ListIndex)的值相同。 (4)ListCount属性:该属性返回列表框的项目数。ListCount属性值始终比最大的项目序号值大 1。

  33. (5)Selected属性 该属性指定或返回列表框中每一个项目的选择状态,为一个与 List 属性有着相同项数的逻辑型数组。Selected(index)表示index位置上的表项是否选中,若为True则选中。 (6)Sorted属性 该属性指定列表框的项目是否自动按字母表顺序排序。 (7)MultiSelect属性 该属性指定是否能在列表框中进行复选以及如何进行复选。该属性只能在设计时设置,在运行时为只读属性,可以取如下值: 0—None(缺省值):不允许复选。 1—Simple 简单复选:鼠标单击或按下空格键在列表中选中或取消项目。 2—Extended 扩展复选:按下Shift 并单击鼠标进行连续多项选择。按下 Ctrl键并单击鼠标进行非连续的多项选择。

  34. 2.常用事件 列表框的常用事件有Click事件与DblClick事件。其中,Click事件仅当在列表框上单击鼠标左键时发生。如下列代码获取用户的选择: Private Sub List1_Click() Print “用户选择的项目是” & List1.Text End Sub DblClick事件仅当在列表框上双击鼠标左键时发生,注意,当用户进行双击操作时,Click事件、DblClick事件同时发生,在编写DblClick事件过程代码时要特别小心。

  35. 3.常用方法 (1) AddItem方法: 功能:该方法向列表框增加新的项目。 格式:[列表框对象名].AddItem Item[,Index] Item— 必选的字符串表达式,它用来指定添加到列表框的项目。 Index— 是可选的,为一个整数,它用来指定新项目在列表框中的位置。 (2)RemoveItem方法 功能:该方法从列表框中删除表项目. 格式:[列表框对象名].RemoveItem Index Index是必需的一个整数,它表示要删除的项在对象中的位置。 (3)Clear方法 功能:该方法清除列表框的所有项目. 格式:[列表框对象名].Clear

  36. 1.常用属性 (1)Style属性 该属性指定组合框的显示类型和行为。该属性只能在设计时设置,在运行时为只读属性。该属性的取值如下: 0—DropDown Combo(缺省值)下拉式组合框:包括一个下拉式列表和一个文本框。可以从列表选择或在文本框中输入,选择一个项目后列表立即回到折叠状态,如图6.13a所示。 1-- Simple Combo 简单组合框:包括一个文本框和一个设计时规定了列表区域大小的列表(不能折叠),可以从列表中选择或在文本框中输入,其大小包括编辑区和列表区部分,如图6.13b所示。 2-- DropDown List 下拉式列表:仅允许从下拉式列表中选择,选择完成后列表立即回到折叠状态,禁止用户输入项目,如图6.13c所示。 6.3.6 组合框ComboBox

  37. (2)与文本框相同的属性有SelText、SelStart、SelLength等。(2)与文本框相同的属性有SelText、SelStart、SelLength等。 (3)与列表框相同的属性有:List、ListIndex、ListCount、Text、Sorted等,这些属性与列表框的描述相同,但要注意: 当属性ListIndex值为-1,表示用户向文本框部分输入了新文本。 当组合框的Style属性设置为 0(下拉组合框)或为 1(简单组合框),只能通过属性Text返回或设置编辑域中的文本,此时表达Combo1.list(Combo1.ListIndex),只表示在列表部分选择的项目,不能代表输入的文本;当组合框的Style 属性设置为 2(下拉列表)时,属性Text返回列表框中选择的项目,该返回值总与表达式Combo1.list(Combo1.ListIndex) 的值相同。

  38. 在项目列表很长或者信息量很大时,可以使用滚动条来提供简便的定位与输入。滚动条可以作为输入设备,或者速度、数量的指示器来使用。滚动条有水平滚动条HScrollBar和垂直滚动条VscrollBar,它们有相同的属性、事件、方法,见下面图6.15所示:在项目列表很长或者信息量很大时,可以使用滚动条来提供简便的定位与输入。滚动条可以作为输入设备,或者速度、数量的指示器来使用。滚动条有水平滚动条HScrollBar和垂直滚动条VscrollBar,它们有相同的属性、事件、方法,见下面图6.15所示: 6.3.7 滚动条HScrollBar、VScrollBar

  39. 1. 常用属性 (1)Value属性 该属性指定滚动条的当前位置或当前值,其返回值始终介于 Max 和 Min 属性值之间(包括这两个值)。 (2)Max、Min属性 Max属性指定当滚动块处于底部或最右位置时滚动条的最大位置或最大值,缺省值为32767;Min属性指定当滚动框处于顶部或最左位置时滚动条的最小位置或最小值,缺省值为0。二者取值为-32,768 和 32,767 范围之间的整数。 (3)LargeChange、SmallChange属性 LargeChange属性指定当用户单击滚动条内的空白区域时,滚动条控件(HScrollBar 或 VScrollBar)的 Value 属性值的改变量;SmallChange属性指定当用户单击滚动箭头时,滚动条控件的 Value 属性值的改变量。二者的缺省值皆为1。

  40. 定时器可以有规律地每隔一段时间引发一次 Timer 事件。定时器用于应用程序的后台处理,在运行时定时器是不可见的。 1.常用属性 (1)Enabled属性 该属性指示是启动还是暂停定时器操作。 (2)Interval属性 该属性指定定时器的计时事件之间的毫秒数,最大值为 65,535 毫秒。 2.事件 定时器只有一个Timer事件,在一个定时器的预定的时间间隔过去之后发生此事件。 6.3.8 定时器Timer

  41. 框架是一个容器,为控件提供可标识的分组。Frame 可以从功能上进一步分割一个窗体,例如,把 OptionButton 控件分成几组。 首先需要绘制 Frame 控件,然后绘制 Frame 里面的控件。这样就可以把框架和其内部的控件同时移动。如果在 Frame 外部绘制了若干个控件并试图把它移到框架内部,可以通过剪切与粘贴的方式实现。 框架的常用属性有Name、Caption、Font等。框架通常不响应事件,只起到单纯的容器作用。 6.3.9 框架Frame 框架

  42. Visual Basic提供的高级鼠标器事件有MouseDown、MouseUp、MouseMove。大多数控件都能识别这些鼠标事件。三种事件的特点如下: MouseDown事件— 当按下鼠标按钮时发生的事件。 MouseUp事件— 当释放鼠标按钮时发生的事件。 MouseMove事件— 在移动鼠标时发生的事件。 说明: (1)当鼠标指针位于窗口无控件的空白处上方操作时,窗体将识别鼠标事件;当鼠标指针位于窗口某个控件上方操作时,控件将识别鼠标事件。 (2)在窗体或控件上连续移动鼠标,会连续发生MouseMove事件;如果鼠标被持续地按下并被拖动,则第一次按下之后发生MouseDown事件,接着发生若干MouseMove事件,释放鼠标时发生MouseUp事件。 6.4.1 鼠标器事件

  43. 以上三种鼠标事件的事件过程的格式相同: Private Sub 对象名_事件名(Button As Integer, Shift As Integer, X As Single, Y As Single) Button、Shift、X、Y等参数是Visual Basic为鼠标事件过程提供的参数。对于窗体而言,对象名始终为Form。事件过程的参数说明如下: (1)X,Y:返回鼠标指针当前位置的坐标值(X,Y)。 (2)Button:返回一个整数,用来标识该事件发生时用户按下或者释放了哪些鼠标按钮。Button 参数具有对应于左按钮(位 0)、右按钮(位 1)、以及中间按钮(位 2)的一个位字段,某个键被按下后,其对应位为1。 例如Button值为4=(100)2,表示鼠标中键按下或释放;若为3=(011)2,则表示鼠标左键、右键同时按下或释放。

  44. (3)Shift:返回一个整数,该整数反映在鼠标的操作过程中Shift、Ctrl、Alt 键是否被按下。与Button参数类似,Shift参数也以一个位字段的方式反映三个控制键的状态。 例如Shift 的值为 6=(110)2,表示Ctrl和Alt键都被同时按下。

  45. 1. KeyPress事件 当用户按下某个ASCII字符键时发生KeyPress事件,该事件只识别 ENTER、TAB 和 BACKSPACE三个控制 键 。事件过程声明: Private Sub对象名_KeyPress(keyAscii As Integer) KeyAscii:是所按ASCII字符键的ASCII码值,该值由VB系统提供。通过KeyAscii 引用传递给程序员,对它进行改变可给对象发送一个不同的字符。将 keyAscii 改变为 0 时可取消击键。例如: Private Sub Form_KeyPress(KeyAscii As Integer) If (KeyAscii >=Asc(“A”) And KeyAscii <=Asc(“Z”) _ Or (KeyAscii >= Asc(“a”) And KeyAscii <= Asc(“z”) Then KeyAscii = Asc(UCase(Chr(KeyAscii))) ’更改发向控件的输入为大写字母 Else Beep ’响铃 KeyAscii = 0 ’取消输入 End If End Sub 6.4.2键盘事件 本例要求设置窗体属性KeyPreview为True,可实现在窗体上的所有控件中只能输入字母,且小写自动转为大写:

  46. 2. KeyUp事件及KeyDown事件 KeyUp事件及KeyDown事件是当一个对象具有焦点时按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生。事件过程的声明如下: Private Sub对象名_事件名(keycode As Integer, shift As Integer) (1)Shift:反映在该事件发生时Shift、Ctrl、Alt键的状态的一个整数。 (2)Keycode:一个唯一标识键盘按键的键代码。对同一个键,不管按下的是大写还是小写字母,都返回相同的Keycode值(为该键的大写字母的ASCII值)。 (3)一般用KeyUp事件及KeyDown事件来捕获程序执行时用户的按键信息(包括所有功能键与控制键),而使用KeyPress事件捕获用户按键所输入的数据信息。

  47. 点击控件,按住鼠标按钮不放并移动控件的操作称为拖动(Drag),之后的释放鼠标按钮的操作称为放下(Drop)。拖放操作涉及两个对象:一个是被拖动的源对象(即源控件);另一个是目标对象(目标控件),即在其上面放置源对象的对象。点击控件,按住鼠标按钮不放并移动控件的操作称为拖动(Drag),之后的释放鼠标按钮的操作称为放下(Drop)。拖放操作涉及两个对象:一个是被拖动的源对象(即源控件);另一个是目标对象(目标控件),即在其上面放置源对象的对象。 对源控件的拖放方式有两种,一种是自动拖放,另一种是手工拖放。在自动拖动方式下,在没有任何启动“拖操作”代码的情况下,源控件可以被用户拖动到窗口的任何地方或任何其他对象上。在手工方式下,使用一次Drag方法,用户可以对控件进行一次拖动,在实际编程中,通常在源控件上发生了Click事件或MouseDown事件后启动拖放操作。 在拖动源控件过程中,源控件不能识别用户发出的其它鼠标或键盘事件(KeyDown、KeyPress 或 KeyUp,MouseDown、MouseMove 或 MouseUp)。 源控件在被拖动的路途中,可能要越过一些控件。在这些被经过的控件上面,会发生DragOver事件。在目标控件上也是先发生DragOver事件,然后发生DragDrop事件。 6.4.3 对象拖放

  48. 1.源控件的DragMode、DragIcon属性 (1) DragMode属性 该属性指定源控件的拖放方式,其设置值如下: 0—Manual(缺省值)手动方式。 1—Automatic 自动方式。 当源控件的DragMode 属性设置为 1(自动方式)时,源控件不能接受Click事件及MousDown事件。 (2)DragIcon属性 该属性指定拖放操作中显示的图标。该属性的缺省是矩形框。如果要指定新的拖动图标,在设计阶段,在属性窗口设置图标;在运行阶段,用LoadPicture 函数加载图标文件,所加载的文件必须是.ico扩展名的图标文件。

  49. 2. Drag方法 功能:用于除了 Line、Menu、Shape、Timer 或 CommonDialog 控件之外的任何源控件的开始、结束或取消拖动操作。 格式:(不支持命名参数) [源控件对象名].Drag [Action] 如果省略 Action,则缺省值为开始拖动对象。如果为Action指定值,其取值有: 0— 取消拖动操作 1— 开始拖动源对象 2— 结束拖放源对象 只有当源对象的 DragMode 属性设置为手工(0)时,才需要使用 Drag 方法控制拖放操作。

  50. 3. DragDrop、DragOver事件 (1)DragDrop事件 该事件发生在目标控件上,当将一个源控件拖动到一个目标控件上,并释放鼠标按钮时发生。或使用 Drag 方法,并将其Action参数被设置为 2 (Drop) 时发生。 若在某目标控件上放下被拖动的源控件,则目标控件的DragDrop事件过程声明如下: Private Sub 目标控件名_DragDrop(source As Control, x As Single, y As Single) 参数说明: Source— 正在被拖动的控件,由VB自动传递。 x, y— 表示鼠标指针在当前目标窗体或控件中的位置坐标。 例如,在窗体上将源控件移到鼠标所指位置: Private Sub Form_DragDrop(source As Control, x As Single, y As Single) Source.move x,y End Sub

More Related