VB编书学习资源资料(下).ppt_第1页
VB编书学习资源资料(下).ppt_第2页
VB编书学习资源资料(下).ppt_第3页
VB编书学习资源资料(下).ppt_第4页
VB编书学习资源资料(下).ppt_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章,菜单程序设计,主要内容,9-1 菜单的组成 9-2 Visual Basic的菜单 9-3 菜单编辑器 9-4 建立菜单 9-5 应用菜单的有效属性与复选属性 9-6 动态增减菜单项 9-7 弹出式菜单 9-8 思考题,9-1-1 菜单栏 9-1-2 菜单 9-1-3 菜单项 9-1-4 菜单的快速访问键与快捷键,9-1 菜单的组成,菜单栏位于应用程序窗口上部,标题栏的下面,包含多个下拉式菜单。位于菜单栏的各个下拉式菜单也被称为主菜单。,9-1-1 菜单栏,菜单是菜单栏内排列的各个下拉式菜单,也被称为主菜单或一级菜单。例如画图程序的菜单栏内共包含了“文件”菜单、“编辑”菜单、“查看”菜单、“图像”菜单、“颜色”菜单和“帮助”菜单。应用程序的主菜单分类列出了程序的各个功能。,9-1-2 菜单,9-1-2 菜单,菜单项是菜单列表内列出的各个条目。多数菜单项代表一个相关的命令,用户用鼠标单击菜单项将执行该命令。这样的菜单项也被称为菜单命令。,9-1-3 菜单项,1快速访问键 大多数菜单或菜单列表内的菜单项都带有一个快速访问键,快速访问键由一个字母表示,通常显示在菜单/菜单项文本右面的括号里。通过快速访问键,应用程序用户可以通过键盘来打开各个菜单,或执行菜单列表的菜单命令。 使用主菜单上的快速访问键,需要同时按下键盘上的Alt键,如按下Alt+V将打开“查看”菜单。在主菜单打开后通过菜单列表内各个菜单项的快速访问键执行菜单命令或展开子菜单时,只需要单击相关的快速访问键即可。如在“查看”菜单打开后单击V键将执行“查看位图”命令;单击Z键将展开“缩放”子菜单。,9-1-4 菜单的快速访问键与快捷键,2快捷键 为了快速地执行系统的一些常用菜单命令,可以给相应的命令指定一个快捷键(菜单或子菜单没有快捷键),快捷键被列在菜单项文本的右侧,如画图程序里的“查看”“工具箱”命令的快捷键是“Ctrl+T”。通常快捷键由“Ctrl”键加上字母或数字键构成。,9-1-4 菜单的快速访问键与快捷键,无论是菜单(主菜单和子菜单)还是菜单项(菜单命令),在Visual Basic中都用菜单对象来表示,称为菜单控件(Menu Control)。Visual Basic开发环境中的菜单编辑器提供了一个集成管理窗体内所有菜单控件的环境,用户可以通过菜单编辑器来建立、修改、删除菜单控件。由菜单编辑器建立的各个菜单控件也将被添加在Visual Basic属性窗口的对象列表内,并可以通过属性窗口设置其属性。,9-2 Visual Basic的菜单,与其他多数对象不同,菜单对象只响应唯一的单击事件。设计时需要将单击菜单命令执行的程序代码添加到对应菜单控件的单击事件中。通常只对菜单命令添加单击事件,而不对菜单或子菜单添加单击事件过程。,9-2 Visual Basic的菜单,在Visual Basic开发环境中,单击“工具”“菜单编辑器”命令打开Visual Basic菜单编辑器。菜单编辑器内包含了菜单控件(Menu Control)列表框、菜单控件控制命令按钮、菜单控件的属性选项三部分。菜单控件(Menu Control)列表框列出了当前窗体的所有菜单控件;菜单控件的属性选项区域用来显示与设置当前选中菜单控件的属性;菜单控件控制命令按钮用来添加、删除菜单控件或移动菜单控件的位置。,9-3 菜单编辑器,9-3 菜单编辑器,9-3-1 菜单控件列表框 9-3-2 菜单控件控制命令 9-3-3 菜单控件的属性,9-3 菜单编辑器,位于菜单编辑器下部的菜单控件列表框列出了当前窗体所有的菜单控件。选择其中一个菜单控件,位于菜单编辑器上部的属性选项区域显示该菜单对象的属性,用户也可以在此编辑菜单对象的属性。 菜单控件在菜单控件列表框中的位置决定了该控件是主菜单、菜单命令、或是子菜单。列表框内与列表框中左侧靠齐的菜单控件作为主菜单,其标题直接显示在菜单栏中。各主菜单下向右缩进的菜单控件将被排列在相应主菜单的菜单列表内,表示主菜单下的菜单项。,9-3-1 菜单控件列表框,如果一个向右缩进过的菜单控件下面还紧跟着再次缩进的菜单控件,则它是一个子菜单,在子菜单以下缩进的各个菜单控件,就成为该子菜单下的菜单项。Visual Basic一共可以创建四个子菜单等级。 以连字符(-)作为标题的菜单控件,将在菜单列表中作为一个分隔条出现。分隔条可以把菜单项划分成若干个部分。,9-3-1 菜单控件列表框,在菜单控件列表框的上面是几个菜单控件控制命令,对当前选中的菜单控件执行下面操作。 “下一个”按钮:将光标移动到下一个菜单控件上。新建菜单时,通过单击“下一个”按钮,将光标移动到菜单控件下面的空白处,此时输入标题与名称将新建一个菜单控件。 “插入”按钮:在当前菜单控件上面插入一个新的菜单控件。 “删除”按钮:删除当前选中的菜单控件。 “上箭头”与“下箭头”按钮:把选定的菜单控件向上或向下移动一个位置。 “右箭头”与“左箭头”按钮:把选定的菜单控件向右或向左移动一个等级。,9-3-2 菜单控件控制命令,菜单编辑器的属性选项区域内列出了被选中菜单控件的各个属性,其中各属性的含义如下。 “标题”(Caption)属性:菜单控件的标题,这些标题显示在菜单栏或菜单列表中。标题属性中以&符号开头的字母表示该菜单控件的快速访问键。如果在菜单列表中加入分隔条,只需在菜单控件的标题属性中键入一个连字符(-)即可。 “名称”(Name)属性:菜单控件的名称。同一窗体内的控件名称不能重复。 “索引”(Index)属性:用来定义菜单控件数组,并指定该菜单控件在控件数组中的位置。对于非控件数组此项保留为空。 “快捷键”属性:设置菜单命令的快捷键。 “复选”(Checked)属性:在菜单项的左边设置复选标记。通常用它来表示切换选项的开关状态。 “有效”(Enabled)属性:决定菜单/菜单项是否为可用。对于不可用的菜单/菜单项窗体运行时将显示为灰色,并且不响应用户的单击操作。 可见”(Visible)属性:决定菜单/菜单项是否显示。,9-3-3 菜单控件的属性,9-4 建立菜单,制作菜单之前,用户需要首先设计好窗体的菜单以及各个菜单下的菜单项。在设计菜单时需要注意以下几个问题。 菜单应包含与窗体相关的全部操作。 菜单命令按实际功能分类,并列在相应的主菜单下。 给菜单/菜单项添加适当的快速访问键。 给常用的菜单命令添加快捷键。,9-5 应用菜单的有效属性与复选属性,依据应用程序运行状态的不同,菜单/菜单项并不总是有效的。例如在很多应用程序的“编辑”菜单中,如剪贴板内没有剪切或复制的对象时,“粘贴”菜单项是无效的。Visual Basic通过菜单项的Enabled属性来控制菜单项的有效性。,9-5 应用菜单的有效属性与复选属性,应用程序利用菜单项的复选(Checked)属性来表示应用程序的状态。右图所示的“工具栏”子菜单的菜单列表中的各个菜单项,通过复选属性的设置表示当前显示出的工具栏。 菜单控件的有效属性与复选属性既可以在窗体的设计阶段通过菜单编辑器设置、在Visual Basic6开发环境的属性窗口设置,也可以在程序运行中使用语句来改变。有效(Enabled)属性与复选(Checked)属性的值都是逻辑类型,在程序的代码中用True或False对其赋值。,9-6 动态增减菜单项,Visual Basic动态添加菜单控件是通过加载或卸载菜单控件数组元素来实现的,如: Load mnuShapeSel(i) Unload mnuShapeSel(i),9-7 弹出式菜单,弹出式菜单独立于菜单栏,以浮动菜单的形式显示在窗体上。在 Microsoft Windows中,可以通过单击鼠标右键来激活上下文菜单。在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处的位置;因此弹出式菜单也被称为上下文菜单。弹出菜单通常列出了对被单击对象的最常用的操作。Microsoft Windows资源管理器内使用鼠标右键单击文件夹时出现的弹出式菜单,其中罗列了对该文件夹的常用操作。,9-7 弹出式菜单,弹出式菜单的设计与普通菜单一样,需要在菜单编辑器内添加菜单对象与该菜单列表内的菜单项。一般弹出式菜单控件的可视(Visible)属性设置为False,这样在窗体执行时,菜单栏内不显示该菜单,而在用鼠标右键单击相关对象时弹出该菜单。Visual Basic提供了PopupMenu方法以实现弹出式菜单的操作。其语法格式如下: object.PopupMenu menuname, flags, x, y, boldcommand 其中各部分含义为: object:可选,对象表达式,缺省object对象为当前窗体。 menuname:必选,被弹出的菜单控件名,可以是窗体内(菜单编辑器内)的带有下级菜单项列表的菜单或子菜单控件。 flags:可选,整数值或常数,用以指定弹出式菜单的位置和行为。用以表示位置的flags值可以与用以表示弹出式菜单项行为的flags值相加,其含义为弹出式菜单的位置与行为的组合。,9-7 弹出式菜单,boldcommand:可选,用以指定弹出的菜单列表内文本被加粗的菜单项的名字,如省略则被弹出菜单列表内没有文本被加粗的条目。 打开弹出式菜单的语句代码一般添加在相关对象的MouseUp 或者 MouseDown 事件中,标准用法是使用 MouseUp 事件。,9-8 思考题,在Visual Basic中菜单使用什么对象表示的?如何给窗体添加菜单? 在Visual Basic中如何区分菜单与菜单内的菜单项? 如何实现动态增减菜单项? 试设计一个应用程序,利用菜单命令改变窗体内标签控件文本的字体、字号、颜色。 利用弹出式菜单实现思考题4的功能。,第10章,对话框程序设计,第10章 对话框程序设计,对话框是辅助应用程序输入/输出信息、进行设置等用户与应用程序交互的窗口。与窗体窗口不同,对话框的是应用程序窗口的辅助窗口,其大小通常不可调节。在Visual Basic中对话框分为:消息框(MsgBox)与输入框(InputBox)、公共对话框、自定义对话框等。,主要内容,10-1 消息框与输入框 10-2 自定义对话框 10-3 公共对话框 10-4 思考题,消息框与输入框是Visual Basic为程序开发者提供的预定义对话框,用于在程序运行时显示消息或输入信息。用户不必考虑设计、加载或者显示对话框等方面的问题,只需要简单引用并设置相关参数就可以调用预定义对话框并通过对话框实现应用程序的输出、输入操作。预定义对话框总是模式的,即当对话框显示时,用户不能进入应用程序的其他窗口。,10-1 消息框与输入框,10-1-1 消息框(MsgBox) 10-1-2 输入框(InputBox),10-1 消息框与输入框,消息框(MsgBox)用于显示程序执行过程中的提示消息。消息框以函数的形式调用,返回一个整数值,用来表示消息框关闭时用户的按键信息。 消息框函数的语法格式如下: MsgBox(prompt,buttons,title ,helpfile,context),10-1-1 消息框(MsgBox),其中各参数说明如下表所示,10-1-1 消息框(MsgBox),消息框函数(MsgBox)中的Buttons参数以整数的形式来表示消息框中四组信息。第一组值(05)描述了对话框中显示的按钮的类型与数目;第二组值(16,32,48,64) 描述了图标的样式;第三组值(0,256,512)说明哪一个是缺省按钮;第四组值(0,4096)则决定消息框的强制返回性。这四组信息可以叠加(等效于进行二进制形式的Or运算)。,10-1-1 消息框(MsgBox),10-1-1 消息框(MsgBox),输入框(InputBox)用来向程序中输入数据。输入框以函数的形式调用的,返回的函数值是在输入框内输入的文本。 输入框函数的语法格式如下: InputBox(prompt , title , default , xpos , ypos , helpfile, context),10-1-2 输入框(InputBox),输入框函数中的参数说明。,10-1-2 输入框(InputBox),自定义对话框是用户创建的作为对话框使用的窗体,这些窗体可以显示应用程序的输出信息,也可以为应用程序接收信息。用户可以自由定义自定义对话框的外观、设计对话框的功能。自定义对话框可以是固定的或可移动的、模式或无模式的。它可以包含不同类型的控件。,10-2 自定义对话框,10-2-1使用窗体作为对话框 10-2-2 模式与无模式对话框,10-2 自定义对话框,通常用于作为自定义对话框的窗体是临时性的,用户不需要对其进行移动、改变尺寸、最大化或最小化等操作。因此对话框窗体一般不需改变窗体大小,不需要菜单栏、窗口滚动条、最小化与最大化按钮、状态栏等控件。 在设计自定义对话框时经常需要设置窗体的下列属性。,10-2-1 使用窗体作为对话框,自定义对话框在程序执行时用show方法打开,依打开的方式不同,对话框分为模式或无模式两种类型。所谓模式对话框,在其打开时,无法将操作焦点切换到应用程序的其他部分。必须首先关闭对话框,才可以切换到其它窗体。或对话框之前要求先单击“确定”或“取消”,则它就是模式的。显示重要消息的对话框通常是模式的,即在继续其他操作之前,需要首先对对话框做出响应。无模式对话框允许在对话框与其他窗体之间转移焦点而不用关闭对话框。当对话框显示时,可以在当前应用程序的其他地方继续工作。这种无模式对话框在实际应用程序中很少使用。,10-2-2 模式与无模式对话框,大多数应用程序都具有打开和保存文件、选择颜色和字体、打印和打印设置等操作,为了减少程序员的工作,Windows以动态链接库的形式提供了上述操作的统一界面,即公共对话框。使用公共对话框,程序员只需要简单的属性设置与代码编写就可以在程序中调用标准的打开和保存文件对话框、选择颜色和字体对话框、打印和打印设置对话框等已完成相关操作。下图是Windows画图程序的“另存为”对话框。,10-3 公共对话框,10-3-1 公共对话框控件 10-3-2 “打开”与“另存为”对话框 10-3-3 “颜色”对话框 10-3-4 “字体”对话框 10-3-5 “打印”对话框,10-3 公共对话框,Visual Basic通过公共对话框控件(CommonDialog Control) 实现公共对话框的功能。公共对话框控件可以调出“打开”、“另存为”、“颜色”、“字体”、“打印”、“帮助”等标准对话框。 在Visual Basic窗体中使用CommonDialog控件的过程如下: 1在工程中加载AcctiveX控件COMDLG32. OCX 2在需要引用标准对话框的窗体内添加公共对话框对象 3在程序运行中通过公共对话框对象打开标准对话框,10-3-1 公共对话框控件,程序中运行时,有两种方式可以调出公共对话框。一种是执行公共对话框对象的方法,一种是设置公共对话框对象的Action属性值。 . .action=,10-3-1 公共对话框控件,最常用的标准对话框是“打开”与“另存为”对话框。对话框用以指定驱动器、目录、文件名和文件扩展名。通过使用 CommonDialog 控件对象的 ShowOpen 和 ShowSave 方法或Action属性值的设置可显示“打开”和“另存为”对话框。当用户在对话框内选择一个文件后单击“确定”命令按钮关闭对话框时,对话框通过其FileName 属性将用户选择的文件名与路径传递给程序。 通过给CommonDialog 控件的Action属性赋值的方法调用“打开”或“另存为”对话框的形式为: .action=1 调用“打开”对话框。 .action=2 调用“另存为”对话框。,10-3-2 “打开”与“另存为”对话框,在使用“打开”和“另存为”对话框时,通常需要首先指定对话框的Filter 属性,用来指定对话框文件类型内的文件类型列表。 给Filter属性赋值语句的格式如下: .Filter = 类型说明1 |扩展名1 |类型说明2 |扩展名2. 其中“类型说明”表示文件列表内各个文件类型的说明文字,如“所有文件(*.*)”;“扩展名”用来指定文件类型,如“*.bmp;*.ico”。Filter属性是字符型,需要用双引号将整个类型说明引起来,如“所有文件(*.*)|*.*|位图(*.bmp)|*.bmp|JPEG图像(*.jpg)|*.jpg|GIF图像(*.gif)|*.gif”。,10-3-2 “打开”与“另存为”对话框,通过使用CommonDialog控件对象的ShowColor 方法或Action属性值的设置可显示“颜色”对话框。“颜色”对话框用以从调色板选择颜色,或是创建和选择自定义颜色。,10-3-3 “颜色”对话框,使用“颜色”对话框,需要首先设置CommonDialog控件对象中与颜色对话相关的属性。然后使用ShowColor方法或Action属性值的设置显示对话框,运行时,选定颜色并关闭对话框后可用CommonDialog对象的Color属性获取选定的颜色。 为了该属性能返回“颜色”对话框中的一种颜色,必须先设置CommonDialog控件对象的cdlCCRGBInit标志以规定颜色的初始值。 .Flags = cdlCCRGBInit,10-3-3 “颜色”对话框,字体对话框用于选择文本的字体、字形、字号等效果。Visual Basic使用CommonDialog控件的ShowFont方法或Action属性值(公共对话框对象.Action=4)的设置来显示标准的“字体”对话框。,10-3-4 “字体”对话框,显示“字体”对话框之前必须将CommonDialog控件的Flags属性设置为下列数值之一,否则将发生不存在字体错误。 cdlCFScreenFonts(只显示屏幕字体) cdlCFPrinterFonts(只显示打印机字体) cdlCFBoth(既显示屏幕字体又显示打印机字体) 如果需要字体对话框设置字体的删除线,下划线,以及颜色效果,需要设置对话框的下面Flags属性。 cdlCFEffects(它指定对话框允许删除线,下划线,以及颜色效果。),10-3-4 “字体”对话框,“字体”对话框通过一组属性来返回给程序用户在对话框内选择的有关字体的信息。,10-3-4 “字体”对话框,“打印”对话框用于确定打印输出的有关设置。用户在对话框内可以指定打印页数范围、打印质量、复制数目等等。此对话框还显示有当前安装的打印机信息,并允许用户进行配置或重新安装新的缺省打印机。,10-3-5 “打印”对话框,通过使用CommonDialog控件对象的ShowPrinter方法或Action属性值(对话框对象.Action=5)的设置可显示“打印”对话框。在“打印”对话框内可以进行如下有关打印的属性设置。,10-3-5 “打印”对话框,1对话框分为哪几种?各有什么特点,如何在Visual Basic中实现这些对话框? 2为了利用窗体制作自定义对话框,需要设置窗体的那些属性? 3什么是模式与无模式对话框? 4试编写程序,利用“打开”对话框给image对象添加图片。 5试编写程序,利用“字体”与“颜色”对话框设置标签的文本属性。,10-4 思考题,第11章,访问数据库,主要内容,11-1 数据库的基本概念 11-2 使用Data控件访问数据库 11-3 使用ADO访问数据库 11-4 使用DAO访问数据库,11-1 数据库基本概念,数据库是具有一定组织结构的相关信息的集合。 它是将一些相关的数据表组织在一起,通过设置某些 功能,使数据表之间建立关系,这样就构成了一个完 整数据库。 11-1-1 数据库概念 数据库(DataBase,简称DB)是指具有统一的 结构形式并存放在计算机中的存储介质上、有组织 的、可共享的数据集合。,1. 数据库、数据表基本概念 数据库的结构形式(即数据之间的联系)称为数据 模型。目前最为流行的是关系模型。关系模型是建立在 严格的数学理论基础上,采用我们所熟悉的二维表格形 式来存储数据。 一个关系对应一张数据表,由一组相关的数据组成 。表中的每一列称为一个字段,表中的第一行是字段名 称。从表的第二行开始,每一行称为一条记录,每条记 录含有相同类型和数量的字段。,2.数据库管理系统 数据库管理系统(DataBase Management System ,简称DBMS)是位于用户与操作系统之间的数据管理软 件。 3.数据库系统 数据库系统(DataBase System,简称DBS)是指 在计算机系统中引入数据库后的系统。一个完整的数据 库系统是由数据库、数据库管理系统、应用系统、数据 库管理员和用户及硬件系统构成。,11-1-2 数据库和表的建立,【例11.1】使用数据管理器建立一个学生管理数据库。,建立步骤如下: (1)启动数据管理器。选择【外接程序】|【可视化数据管理器】命令,打开如图所示的数据管理器窗口;,(2)建立数据库。选择数据管理器窗口中的【文件】|【新建】|【Microsoft Access】|【Version 7.0 MDB】命令,在出现的保存数据库对话框中,选择好路径、输入数据库文件名stu.mdb后,打开如图所示的窗口;,(3)建立数据表结构。新建的数据库stu.mdb是不含任何数据表的空库,需在该库中添加数据表。方法是在数据库窗口中按鼠标右键,在弹出的快捷菜单中选择“新建表”后,打开图所示的“表结构”对话框;,在“表名称”框中输入表名“学生基本信息”。单击“添加字段”按钮,打开如下图所示的“添加字段”对话框,在此可以向“学生基本信息”表中添加字段。,“学生基本信息”表结构,(4)编辑数据表中的数据。所建立的“学生基本信息”表,是一个仅有表结构的空表,还需向表中添加数据信息。方法是双击“学生基本信息”表,打开如下图所示的编辑记录窗口。,在记录操作对话框中,单击“添加”按钮出现如下图所示的对话框,在其中依次输入“学生基本信息”表中第1条记录的6项字段值后,单击“更新”按钮,即完成一条记录的添加操作,重复以上操作,将表中所包含的 8条记录均添加到“学生基本信息”数据表中。,11-2 用Data控件访问数据库,【例11.2】制作一个浏览信息的用户界面。将【例11.1】所建立的数据库中的记录信息显示在6个文本框中,运行结果如图所示。,【解析】Data数据控件是VB的标准控件,利用它能方便地创建应用程序与数据库之间的连接,并实现对数据资源的访问。为了在程序运行时,使Data数据控件能够访问student表中的记录信息,应设置该控件的DatabaseName属性和RecordSource属性。 DatabaseName属性指定具体要访问的数据库文件名,包括所有的路径名,实现Data数据控件与数据库的连接。 RecordSource属性指定要访问的数据库中具体的数据表,实现Data数据控件与数据表的连接。,要在各文本框中显示Data控件所连接的数据表中的数据,必须将文本框与Data数据控件进行绑定。其方法是: 单击用于显示“学号”信息的文本框,在属性窗口设置DataSource属性为Data1(实现与数据控件Data1的绑定),再设置DataField属性为“学号”(即绑定到数据表中具体的字段上)。同理,设置其他5个文本框的DataSource属性均为Data1,DataField属性分别为姓名、性别、出生日期、入学成绩和系别。 注意: 需先设置DataSource属性,后设置DataField属性。,完成上述步骤后,运行程序时,在6个文本框中将自动显示student表中的第一条记录信息。Data数据控件上有4个按钮,其中图标 、 、 、 分别表示移动到表中第一条记录、最后一条记录、前一条记录、后一条记录。通过这4个按钮,可以浏览表中的不同记录信息。,编写代码:,Private Sub Form_Load() For i = 0 To 5 Text1(i).Locked = True 设置文本框不可编辑 Next i End Sub Private Sub Data1_Reposition() Data1.Caption = “第“ & _ Data1.Recordset.AbsolutePosition + 1) & “条记录“ End Sub,说明:,(1)将文本框控件与Data数据控件绑定后,当改变文本框中的数据时,数据库中相应的数据会随之改变,为了控制用户在文本框中编辑数据,在Form_Load事件中将文本框的Locked属性设为True; (2)当用户单击 Data控件上的某个按钮,进行记录间的移动或在程序代码中使用改变当前记录的属性或方法,使某条记录成为当前记录后,会触发Data1的Reposition事件。 在该事件中出现的Recordset是Data1控件所控制的记录集对象,通过此对象对数据表中的记录进行浏览和操作。访问数据库的记录集可用Data1.Recordset实现。,Recordset对象有多种属性和方法,本例中用到的AbsolutePosition属性表示返回当前指针值,第一条记录的指针值为0。因此语句Data1.Recordset.AbsolutePosition + 1表示当前记录数。 从本例可以看出要用Data控件访问数据库,需要做两件事情,一是将Data控件与数据库中的数据表连接;二是将用于显示数据的控件与Data控件绑定。能与Data数据控件绑定的控件有文本框、标签、图片框、图像框、复选框、列表框、组合框等。,【例11.3】在【例11.2】所建立的浏览信息窗体基础上增加4个按钮(名称分别为cmdAdd,cmdEdit,cmdDelete,cmdExit),并实现如下功能: 单击“添加”按钮后,在数据表中添加一条空记录,同时“添加”按钮和“退出”按钮的标题分别变为“保存”和“取消”。在文本框中输入数据后,单击“保存”按钮,将文本框中的数据添加到数据表的相应字段中。单击“取消”按钮,则取消添加记录的操作,回到初始界面; 单击“修改”按钮后,可对当前显示的一条记录重新编辑,同时按钮变为“保存”按钮。单击“保存”按钮后,将修改后的记录保存到数据表中。单击“取消”按钮,则取消所做的操作,回到初始界面; 单击“删除”按钮后,在弹出的消息框中显示“确实删除该记录吗?”,单击“是”,则删除当前所显示的一条记录,单击“否”,则取消这次操作,回到初始界面; 单击“退出”按钮,退出程序。,(a)初始界面,(b)添加新记录界面,编写代码:,Private Sub Form_Load() For i = 0 To 5 Text1(i).Locked = True Next i End Sub,Private Sub cmdAdd_Click() cmdEdit.Enabled = Not cmdEdit.Enabled cmdDelete.Enabled = Not cmdDelete.Enabled For i = 0 To 5 Text1(i).Locked = Not Text1(i).Locked Next I If cmdAdd.Caption = “添加“ Then Data1.Recordset.AddNew 添加一条空记录 Data1.Caption = “新记录“ cmdAdd.Caption = “保存“ cmdExit.Caption = “取消“ Text1(0).SetFocus Else Data1.Recordset.Update 将数据加入到新添加的空记录中 Data1.Recordset.MoveLast 使记录集中的最后一条记录成为当前记录 cmdAdd.Caption = “添加“ End If End Sub,Private Sub cmdEdit_Click() cmdAdd.Enabled = Not cmdAdd.Enabled cmdDelete.Enabled = Not cmdDelete.Enabled For i = 0 To 5 Text1(i).Locked = Not Text1(i).Locked Next i If cmdEdit.Caption = “修改“ Then Data1.Recordset.Edit 使当前记录成为可编辑状态 cmdEdit.Caption = “保存“ cmdExit.Caption = “取消“ Else Data1.Recordset.Update 用修改后的数据替换原来的记录 cmdEdit.Caption = “修改“ End If End Sub,Private Sub cmdDelete_Click() answer = MsgBox(“确实删除该记录吗?“, vbYesNo + vbQuestion, “警告“) If answer = vbYes Then Data1.Recordset.Delete 删除当前记录 Data1.Recordset.MoveNext 记录指针下移一条 If Data1.Recordset.EOF Then Data1.Recordset.MoveLast 使最后一条记录成为当前记录 End If End If End Sub,Private Sub cmdExit_Click() If cmdExit.Caption = “退出“ Then End Else Data1.Recordset.CancelUpdate 取消所做的添加、修改记录的操作 cmdAdd.Enabled = True cmdEdit.Enabled = True cmdDelete.Enabled = True For i = 0 To 5 Text1(i).Locked = Not Text1(i).Locked Next i cmdExit.Caption = “退出“ cmdAdd.Caption = “添加“ cmdEdit.Caption = “修改“ Data1.Refresh 刷新记录集中的记录 End If End Sub,Private Sub Data1_Reposition() Data1.Caption = “第“ & Data1.Recordset.AbsolutePosition + 1 & “条记录“ End Sub,说明:,(1)本例主要的功能是增加、修改、删除数据表中的记录。需要使用Data控件的记录集(Recordset)对象特有的属性和方法,VB使用这些属性和方法对数据库中的记录浏览和操作。 Recordset记录集除上例用到的AbsolutePosition属性外,还有BOF和EOF两个常用属性,这两个属性值为True或False,值为True时,表明记录指针已移到数据表中第一条记录之前或最后一条记录之后,否则就是记录指针没有移到那样的位置。,Recordset记录集的常用方法有: AddNew方法 在记录集的尾部添加一条新的空白记录。 Edit方法 使记录集中的当前记录进入编辑状态。 Delete方法 删除记录集中的当前记录。 Update方法 在调用AddNew方法新添加一条记录或调用Edit方法修改记录后, 需要调用Update方法来更新数据库中的数据。 CancelUpdate方法 取消所做的添加、修改记录的操作。 Move方法 使用Recordset的MoveFirst、MoveLast、MovePrevious、 MoveNext方法可以浏览数据库中的数据。,11-3 用ADO数据控件访问数据库,【例11.5】使用ADO Data控件查询数据。运行程序时,在窗体上选择组合框中“全体”、“信息科学”、“环境科学”、“管理”、“广告”等不同系别后,在DataGrid网格控件中显示与查询条件相匹配的学生信息,程序运行结果如图所示的窗体。,建立步骤如下: (1)首先在窗体上添加2个标签、1个组合框,并设置标签的Caption属性分别为“各系学生信息”和“选择系别:”;组合框的List属性为“全体”、“信息科学”、“环境科学”、“管理”和“广告”4个选项,Text属性为“全体”。,(2)添加ADO Data控件 在“部件”对话框中,选择Microsoft ADO Data Control6.0(OLEDB)项, 如图所示。 将ADO控件添加到工具箱中,再将该控件添加到窗体上,默认的名称为Adodc1。在窗体的ADO控件上按鼠标右键选“ADODC属性”项,打开“属性页”对话框。在属性页的“通用”选项卡中选“使用连接字符串”方式连接数据源,单击其右侧的“生成”按钮,出现“数据链接属性”对话框,在“提供程序”选项卡中选中“Microsoft Jet 4.0 OLE DB Provider”项。,(3)添加DataGride数据网格控件 DataGride数据网格是一种类似于电子表格形式的数据绑定Active控件,该控件需要与ADO数据控件一起使用,实现对数据库的访问。DataGride控件可以以表格形式显示数据,并具有对记录编辑的功能。 在工具箱空白处按鼠标右键,在“部件”对话框中选择Microsoft DataGrid Control6.0(OLEDB)选项,如图所示。,编写代码:,Private Sub Combo1_Click() With Adodc1 .CommandType = adCmdText If Combo1.Text “全体“ Then .RecordSource = “select * from 学生基本信息 where 系别 _ = “ & Combo1.Text & “ Else .RecordSource = “select * from 学生基本信息“ End If .Refresh End With End Sub,【例11.6】在【例11.5】基础上增加下列功能,即除了能够按不同系别显示学生信息外,还能统计该系学生总人数、入学成绩平均分,窗体运行结果如图所示。,查询全体学生信息及成绩统计,查询信息系学生信息及成绩统计,编写代码:,Private Sub Form_Load() Dim s As Integer n = Adodc1.Recordset.RecordCount 获取记录集中的记录总数 For i = 0 To n - 1 s = s + Adodc1.Recordset.Fields(4) 累加 Adodc1.Recordset.MoveNext 将记录指针移向下一条记录 Next i Label4.Caption = n 显示人数 Label6.Caption = Format(s / n, “#.#“) 统计平均分 End Sub Private Sub Combo1_Click() With Adodc1 .CommandType = adCmdText If Combo1.Text “全体“ Then .RecordSource = “select * from 学生基本信息 where 系别 = “ & _ Combo1.Text & “ Else .RecordSource = “select * from 学生基本信息 “ End If .Refresh End With Form_Load End Sub,11-4 用ADO数据对象访问数据,ADO对象模型简图如下图所示。它提供了一系列数据对象, 使用时,在程序中创建对象变量,通过对象变量来调用访问对象 的方法、设置属性等,从而实现对数据库的各种操作。,ADO的对象说明,使用ADO对象模型访问数据库一般步骤和方法: (1) 声明对象变量 在代码编写窗口的通用声明段中用Dim语句声明对象变量,同时创建Connection对象和Recordset对象的实例。 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset,(2)用创建的Connection对象实现与数据库的连接,再用创建的Recordset对象打开指定记录集。 cn.Provider = “microsoft.jet.oledb.4.0“ cn.Open App.Path & rs.Open 设置cn的Provider属性为microsoft.jet.oledb.4.0,即设定Connection对象的连接的数据源提供者的名称(Access2000及以上版本的Access数据库),并调用Connection对象的方法Open连接指定数据库。 如果操作本地数据库,上述语句也可用“Set cn = CurrentProject.Connection”一条语句来代替。,(3)进行数据库访问操作 (4)关闭记录集、关闭连接,释放相应的资源 rs.Close Set rs=Nothing cn.Close,11-5 小结,数据库技术是当前计算机领域发展最快的技术之一,是计算机应用技术中的重要组成部分,对于大量数据的处理,使用数据库存储管理比通过文件管理数据更有效。本章主要介绍数据库的基本概念,VB中使用Data数据控件、ADO数据控件及ADO数据对象访问数据库的基本方法。,第12章,键盘与鼠标事件过程,主要内容,应用程序运行时用户可以通过键盘或鼠标与程序进行交互、控制应用程序的运行。Visual Basic提供了一系列事件过程来响应用户的键盘与鼠标操作。本章向读者展示Visual Basic的键盘、鼠标事件过程,介绍与这些过程相关的知识,并以实例的形式详细讲解键盘、鼠标事件过程的应用。,主要内容,12-1 键盘与鼠标事件过程 12-2 KeyPress事件 12-3 KeyDown事件与KeyUp事件 12-4 窗体的键盘事件 12-5 鼠标指针的形状 12-6 鼠标事件 12-7 鼠标拖放 12-8 思考题,一些控件,如文本框、复合框、命令按钮、复选框与窗体等,响应用户的键盘操作。当用户按下按键时,程序捕捉到按键操作,并执行相应的事件过程。在Visual Basic中键盘事件过程包括KeyPress事件、KeyDown事件与KeyUp事件。 键盘事件彼此不互相排斥。按下某一按键时触发KeyDown和KeyPress事件,松开按键后触发KeyUp事件。当用户按下一个KeyPress事件不能检测的键时,按键操作只触发KeyDown事件,抬起按键时触发KeyUp事件。,12-1 键盘与鼠标事件过程,随着图形界面应用程序的普及,鼠标已经是人们计算机操作中使用的最为常用的工具。Visual Basic通过鼠标相关的事件过程来响应用户使用鼠标的操作。如用户单击鼠标、双击鼠标、移动鼠标等,将触发相应的鼠标事件过程。 鼠标事件过程包括Click与DblClick事件过程、MouseDown与MouseUp事件过程、MouseMove事件过程、DragDrop与DragOver事件过程等。,12-1 键盘与鼠标事件过程,当用户在窗体或响应KeyPress事件的对象上按下和松开一个键盘按键时触发具有焦点对象的KeyPress事件过程,并将按键信息传递给过程。KeyPress的语法如下: Private Sub object_KeyPress(keyascii As Integer) 其中:Object为发生单击事件的对象,Ascii为单击按键对应的Ascii码。,12-2 KeyPress事件,KeyDown和KeyUp事件提供了最低级的键盘响应。当用户按下或抬起键盘按键时触发具有焦点对象的KeyDown或KeyUp事件过程。其语法如下: Private Sub object_KeyDown(keycode As Integer, shift As Integer) Private Sub object_KeyUp(keycode As Integer, shift As Integer) 其中: object表示在按键操作时具有焦点的对象。 Keycode参数是按键代码,表示按下或抬起的物理键。 Shift参数返回一个整数,表示Shift键、Ctrl键和Alt键的状态。Shift参数用二进制001或十进制值1表示键盘事件发生时Shift键被按下,用二进制010或十进制值2表示键盘事件发生时Ctrl键被按下,用二进制100或十进制值4表示键盘事件发生时Alt键被按下。这三个键可以组合,如同时按下Shift、Ctrl、Alt键,Shift参数值将为7。,12-3 KeyDown事件与KeyUp事件,注意:KeyCode参数表示按下的物理键,如字母“A”与“a”是同一个按键,因此具有相同的KeyCode值(65,字母键的KeyCode值取相应键的大写字母的Ascii值),与此相区别的是,KeyPress事件将字母的大小写视为两个不同的Ascii码来处理。键盘上的“1”和数字小键盘的“1”作为不同的键,返回不同的KeyCode参数值,尽管它们生成相同的字符。,12-3 KeyDown事件与KeyUp事件,如果一个窗体上包含可以响应键盘事件的控件,则在满足下面两种情况之一时执行窗体的键盘事件: 窗体上所与能响应键盘事件的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论