窗体对象功能设计.ppt

上传人:za****8 文档编号:3239804 上传时间:2019-12-09 格式:PPT 页数:46 大小:1.14MB
返回 下载 相关 举报
窗体对象功能设计.ppt_第1页
第1页 / 共46页
窗体对象功能设计.ppt_第2页
第2页 / 共46页
窗体对象功能设计.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第7章窗体对象功能设计,教学目标:通过本章学习,使读者能够完成“迷你超市业务信息管理系统”的窗体对象功能设计,主要能力目标:能够掌握VBE的使用方法。能够掌握在窗体设计视图中进行窗体对象功能程序设计的方法。工作任务:上章我们掌握了Access数据库中窗体对象的界面设计方法,并创建了窗体对象的界面设计,本章完成“商品进货数据录入”和“商品销售录入”的窗体功能程序的设计。,理论知识,一、VBA模块概述建立完用户窗体只是实现功能的一半,还需要为窗体中的控件编写VBA来真正实现其功能。VBA(VisualBasicforApplications)是MicrosoftOffice系列的内置编程语言,功能强大,面向对象,同其他任何面向对象的编程语言一样,VBA里也有对象、属性、方法和事件。1.对象:就是代码和数据的组合,可将它看作单元,如表、窗体和文本框等是对象。每个对象由类来定义。2.属性:是指定义了对象的特性,如大小、颜色、对象状态等。3.方法:指对象能执行的动作,如刷新、获得焦点等。4.事件:是一个对象可以识别的动作,如鼠标单击或按下某键等,并且可以写某些代码针对此动作来做出响应。,二、VBA编程基础1、VBA代码的实现方法所有VBA代码都以模块的方式保存在数据库里。创建模块有两种方法:(1)作为模块对象(2)作为窗体和报表对象的一部分(1)模块对象创建模块对象,方法如下:1)单击“数据库”窗口的“模块”按钮可查看模块对象;2)单击“新建”按钮创建一个新模块;3)单击完“新建”按钮后,弹出MicrosoftVisualBasic代码设计窗口,在代码窗口中输入代码,以实现模块的功能。(2)窗体和报表模块在窗体和报表类模块中,可以创建特别命名的事件过程来响应事件。可以通过在“设计”视图中打开窗体或报表,从“视图”菜单中选择“代码”来编辑该窗体或报表的模块。,2、注释语句注释语句用于对程序或语句的功能给出解释和说明。在VBA程序中,注释内容被显示成绿色文本。可以通过两种方式添加注释:使用Rem语句,格式如下:Rem注释语句注释语句可以放在其他语句之后,但需要用冒号隔开。使用“”,格式如下:注释语句注释语句可以直接放在其他语句之后而无需分隔符。3、连写和换行程序语句一般一句一行,但有时候可能需要在一行中写几句代码,这时需要用到“:”来分开不同用途的几个语句。有时一句代码太,书写起来不方便,看上去也不美观,希望将一句代码分开写成几行,这时需要用到空格加下划线“_”。,4、赋值语句赋值语句指定一个值或表达式给变量。赋值语句通常会包含一个等号“=”语法格式如下:Let=Set=Let语句赋值,对应的数据类型为字符、数值类型等,Let通常可以省略Set语句赋值,对应的是复杂数据类型,可以是用户自定义的数据类型或对象类型的数据。5、常量和变量(1)声明常量和变量常量是指在程序过程中始终固定不变的量。VBA的常量包括数值常量、字符常量、日期常量、符号常量、固有常量和系统定义常量等。变量是指在程序运行过程期间取值可以变化的量,除了使用VBA代码来操作各种打开的窗体或报表的控件外,还可以在VBA代码中声明和使用指定的变量来临时存储值、计算结果或操作数据库中的任意对象。,(2)常量和变量的作用域常量或变量的作用域决定了这个常量或变量是只能在一个过程中使用,还是在一个模块中所有过程中使用,还是可以在数据库的所有过程中使用。如果希望一个变量能被数据库中所有过程(即公共作用域)所访问,需要在声明时加上关键字Public。也可以用关键字Private将一个变量的适用范围显式声明为模块内(私有作用域)。6、数据类型VBA一般用变量保存计算的结果、进行属性的设置、指定方法的参数以及在过程间传递数值。为了提高执行效率,VBA为变量定义了一个数据类型的集合,VBA支持多种数据类型,下表列出了VBA程序中基本数据类型,以及它所占用的存储空间、取值范围和默认值。,7、流程控制语句8、过程和函数过程和函数就是能执行特定功能的语句块。过程是用VBA语言的声明和语句组成的单元,作为一个命名单位的程序段,它可以包含一系列执行操作或计算值的语句和方法。函数也是过程,不过它是一种特殊的、能够返回值的Function过程。能否返回值,也是过程和函数之间最大的区别。过程在一个地方写了一个功能模块之后,如果要在其他地方实现同样的功能,不必将该代码重新写一遍,只要直接调用就行。当功能模块有错误时,不必在整个应用程序中查找错误,只需要改正过程和函数调试成功即可。,9、事件过程事件过程用于响应由用户或系统引发的事件。当事件被触发时,应用程序启动相应的模块处理当前事件,然后等待下一个事件的发生。在Access系统中,不同对象可以触发的事件不同,主要有键盘事件、鼠标事件、窗口事件、对象事件和操作事件等。10、事件过程编写格式例如:“单击”事件当在某对象上按下并释放鼠标左键时将触发该事件,其事件处理程序的定义格式如下:PrivateSub对象名_Click()过程代码EndSub,7.1窗体的常用控件与编程设计,7.1.1“商品进货数据录入”窗体页眉功能设计7.1.2“商品进货数据录入”窗体页脚功能设计7.1.3“商品进货数据录入”窗体主体功能设计7.1.4“销售数据录入”窗体功能设计7.1.5“销售数据录入”窗体页眉功能设计7.1.6“销售数据录入”窗体主体功能设计7.1.7“销售数据录入”窗体页脚功能设计,7.1.1“商品进货数据录入”窗体页眉功能设计,7.1.1“商品进货数据录入”窗体页眉功能设计,在页眉中有“进货货号”文本框、“进货日期”文本框、“进货名称”文本框、“规格”文本框、“计量单位”文本框、“进货单位”文本框、“进货数量”文本框,“收货人”组合框和“供货商”组合框。功能要求:当用户在“进货货号”文本框输入了货号后,系统会在“库存数据记录”表中查找该货号的商品,如果找不到,说明用户输入了一个新的货号,此时会弹出一个对话框提示,并在“库存数据记录”表中插入一个新记录,同时会将新的货号保存在新记录中;如果找到了该货号的商品,则在窗体页眉中的控件除了“收货日期”、“收货人”组合框和“供货商”组合框以外,其余的文本框中会显示出该商品的相应信息。这样既防止用户货号输入错误,也能减少用户输入信息的工作量。当然各个文本框的内容是可以被用户修改的。“收货日期”会自动读取系统当前的日期。“收货人”组合框和“供货商”组合框需要用户自己选择其内容,如果不选择,那么在最后保存数据时会有提示。,演示操作步骤,代码讲解:,PrivateSubText12_LostFocus()当“Text12”控件失去焦点时将执行的代码Me!货号.SetFocus本窗体中“贷号”控件获得焦点IfMe!Text12=Then如果“Text12”控件的值为空字符串值,则执行MsgBox(请输入进货货号!)弹出一个对话框,给出提示:请输入进货货号!Me!Text12.SetFocus“Text12”控件获得焦点,让用户重新输入进货货号Else否则(即用户已经输入了货号)DoCmd.FindRecordMe!Text12,True,True查找数据源中第一个当前字段(货号)为“Text12”控件的值的记录IfMe!货号Me!Text12Then如果货号字段的值不等于“Text12”控件的值(即没有找到记录)IfMsgBox(增加一种新商品?,vbOKCancel,请确定!)=vbOKThen弹出一个提示对话框“增加一种新商品?”,并要求用户判断是否确定。如果用户点击了“请确定”按钮,则执行下面语句DoCmd.GoToRecord,acNewRec增加一条新记录,即增加一个新的货物,代码讲解:,Me!货号=Me!Text12新记录中,货号字段的值为“Text12”控件的值Me!库存数量=0库存数据字段的值为“0”Else否则(用户选择取消,不增加一个新的货物)ExitSub退出程序,即不增加新记录EndIf结束IF语句EndIf结束IF语句。此时状态为货号字段的值等于“Text12”控件的值(即找到记录)Me!Text20=Me!货名将记录中货名字段的值赋值给“Text20”控件Me!Text22=Me!规格将记录中规格字段的值赋值给“Text22”控件Me!Text24=Me!计量单位将记录中计量单位字段的值赋值给“Text24”控件Me!Text26=Me!进货单价将记录中进货单价字段的值赋值给“Text26”控件Me!Text28=0将“0”赋值给“Text28”控件(进货数量)Me.Refresh刷新本窗体,刷新后“Text20”等控件的值就会显示出来EndIf结束IF语句EndSub结束程序,本窗体所有代码中涉及到的各控件名称列于下表(若读者所建各控件名称不同,请用正确的控件名称替换上述各控件名称):,表“商品进货数据录入”窗体各控件名称列表,7.1.2“商品进货数据录入”窗体页脚功能设计,“保存记录”按钮中我们需要添加代码。PrivateSubCommand35_Click()OnErrorGoToErr_Command35_ClickIfMe!Text28.Value=0ThenMsgBox(请检查您的数据!)ElseIfMsgBox(确定吗?,vbOKCancel,请确定!)=vbOKThenMe!货名=Me!Text20Me!规格=Me!text22Me!计量单位=Me!text24Me!库存数量=Me!库存数量+Me!Text28Me!进货单价=Me!Text26Me!收货人=Me!Combo16Me!供货商=Me!Combo18Me!进货日期=Me!Text14,演示操作步骤,代码讲解:,DoCmd.DoMenuItemacFormBar,acRecordsMenu,acSaveRecord,acMenuVer70Me.RefreshElseExitSubEndIfEndIfExit_Command35_Click:ExitSubErr_Command35_Click:MsgBoxErr.DescriptionResumeExit_Command35_ClickEndSub,7.1.3“商品进货数据录入”窗体主体功能设计,为了数据的安全性,设定主体中各个控件为只读。选定主体中的各个控件,单击工具栏的“属性”按钮,进入“数据”选项卡,将“是否锁定”的属性值改为“是”。注意:因为主体中的各个控件是与数据库绑定的,用户在修改了控件中的值以后,数据库中相应记录的值也会随之更改。这样是极不安全的。我们的目的是用户只能通过在窗体页眉中输入数据,并经过“保存记录”按钮进行保存之后,才能更改数据库中的数据。,7.1.4“销售数据录入”窗体功能设计,功能讲解:,必要功能:1它能够实现销售数据的录入,因此它应当提供用户对商品“销售数据记录”表中所有字段数据的录入;2在用户输入一种销售商品的信息之后,系统应当对该信息进行检查,如果在“柜存数据记录”表中没有该种商品,则需给出错误提示;3在用户输入过程中应对输入信息的合法性作出判断;4在向“销售数据记录”表中添加记录的同时,应在“柜存数据记录”表中的“柜存数量”字段值上减去相应的销售数量值。,功能讲解:,辅助功能:1为简化用户输入,在打开窗体时即要求用户在“商品货号”组合框中进行选择,“商品货号”组合框数据源为“柜存数据记录”表中的货号字段;用户选择后,系统会自动从“柜存数据记录”表中读取该商品的“商品名称”、“规格”、“计量单位”和“销售单价”等信息并显示(这些信息为只读显示);“销售员”和“销售数量”则要求用户必须手工输入;2为保证用户输入的正确性,在用户输入完一件商品的销售信息后,单击“确认”按钮,信息会添加到窗体中间的列表中,用户可进行检查;用户可以输入多条销售信息;在全部信息输入完成后单击“现金收讫”按钮,信息才会被写入“销售数据记录”表中;3窗体中增加一个“柜存信息”按钮,以方便用户查询商品相关的柜存数据;4在窗体下方有两个文本框,用于显示本次用户录入的商品销售数据之和,即本次录入的商品销售数量和销售总金额。,操作演示及代码解读:,表“销售数据录入”窗体各控件名称列表,7.1.5“销售数据录入”窗体页眉功能设计,代码讲解:IfIsNull(Me!Combo3)Then如果Combo3组合框值为空,即用户未选择商品货号MsgBox(请选择商品货号!)弹出警告窗口“请选择商品货号!”Me!Combo3.SetFocusCombo3组合框获得焦点以便用户选择商品货号ElseMe!Text5.ControlSource=货名将表单中Text5文本框的ControlSource属性值设为“货名”,这样Text5文本框便与货名字段绑定了Me!text7.ControlSource=规格Me!Text9.ControlSource=计量单位Me!Text11.ControlSource=销售单价Me!Text19.SetFocusText19文本框获得焦点以便用户选择销售员DoCmd.FindRecordMe!Combo3,True,True查找数据源中第一个当前字段(货号)等于“Combo3”控件的值的记录Me.RefreshMe!Combo15.SetFocusEndIf,演示操作步骤,更新销售记录:,IfIsNull(Me!Combo15)ThenMsgBox(请选择商品货号!)Me!Combo15.SetFocusElseMe!Text17.SetFocusEndIf在“事件”选项卡中的“不在列表中”项中选择“代码生成器”,输入以下代码:Response=acDataErrContinueMsgBox(请选择正确的售货员!),确认按钮代码讲解:,IfIsNull(Me!Text17)Then一步如果控件Text17的值为空,即用户未输入销售数量Me!Text17.SetFocusMsgBox(请输入销售数量!)ElseIfMe!Text17=0Then如果控件Text17的值为0,即用户输入的销售数量非法Me!Text17.SetFocusMsgBox(销售数量输入错误!)ElseIfMe!Text17-Me!text200Then如果控件Text17的值大于控件Text20的值Me!Text17.SetFocusMsgBox(您输入的销售数量超过了本商品的柜存数量!)ElseIfMe!Text170Then如果控件Text17的值小于0,由于主体中子窗体内的临时表禁用户进行删除操作,所以用户可输入负数来对冲错误的销售记录IfMsgBox(您输入的销售数量是负值!”。设置窗体主体中所有的文本框控件的属性对话框中“数据”选项卡内“是否锁定”属性值为“是”。打开窗体页脚中的Text28文本框的属性对话框,设置“数据”选项卡中“控件来源”属性值为“=Sum(销售记录临时表!销售数量)”;打开Text29文本框的属性对话框,设置“数据”选项卡中“控件来源”属性值为“=Sum(销售记录临时表!销售数量*销售记录临时表!销售单价)”,PrivateSubCommand26_Click()OnErrorGoToErr_Command26_ClickDoCmd.SetWarningsFalseDoCmd.OpenQuery销售记录临时表删除查询,acViewNormal,acReadOnlyDoCmd.SetWarningsTrueDoCmd.CloseExit_Command26_Click:ExitSubErr_Command26_Click:MsgBoxErr.DescriptionResumeExit_Command26_ClickEndSub,4将“销售数据记录查询子窗体”添加到“销售数据录入”窗体的主体中。设置子窗体属性,将“数据”选项卡中的“允许删除”项设置为“否”。注意:将主体中各控件设为锁定,而子窗体设为不允许删除,是为了防止用户直接修改其数据从而造成销售数据录入时的混乱。,7.1.7“销售数据录入”窗体页脚功能设计,窗体页脚中有两个文本框控件和三个按钮控件。操作步骤(包含准备工作)如下:1创建“销售记录临时表追加查询”,其设计视图如图所示。其数据源为“销售记录临时表”,追加的目的表为“销售数据记录”表。查询执行后将把“销售记录临时表”中的数据添加到“销售数据记录”表中。,“销售记录临时表追加查询”设计视图,2创建“销售记录临时表删除查询”,其设计视图如图所示。查询执行后将删除“销售记录临时表”中所有的记录。,“销售记录临时表删除查询”设计视图,3设置好相应地大小及位置。4打开Command25(现金收讫)按钮控件的属性对话框,设置“事件”选项卡中“单击”属性,打开代码生成器,输入以下代码(右侧斜体文字为代码的说明,不可以输入):PrivateSubCommand25_Click()OnErrorGoToErr_Command25_ClickIfMsgBox(您确定要将这些销售数据输入销售记录表中吗?,vbOKCancel,请确认)=vbOKThen弹出对话框要求用户确认现金已收讫,如果用户确认,则DoCmd.SetWarningsFalse屏蔽系统提示信息Me!Text22=0文本框值归零Me!Text24=0,DoCmd.OpenQuery销售记录临时表追加查询,acViewNormal,acReadOnly执行“销售记录临时表追加查询”DoCmd.OpenQuery销售记录临时表删除查询,acViewNormal,acReadOnly执行“销售记录临时表删除查询”DoCmd.SetWarningsTrue打开系统提示信息Me!Text5.ControlSource=销售记录添加到销售数据记录表中后,窗体各控件数值清空Me!text7.ControlSource=Me!Text9.ControlSource=Me!Text11.ControlSource=Me!Combo3=Me!Combo15=Me!Text17=Me!Combo3.SetFocusMe.Refresh刷新表单Else如果用户选择了取消,则,Me!Combo3.SetFocusCombo3控件获得焦点,用户继续输入销售数据EndIfExit_Command25_Click:ExitSubErr_Command25_Click:MsgBoxErr.DescriptionResumeExit_Command25_ClickEndSub5打开Command26(退出)按钮控件的属性对话框,设置“事件”选项卡中“单击”属性,打开代码生成器,输入以下代码:,6打开柜存信息按钮控件的属性对话框,设置“事件”选项卡中“单击”属性,使用宏来打开一个窗体。在“单击”属性右侧的文本框内单击后,选择“宏生成器”,此时会打开宏生成器窗口。在第一行中的“操作”列中选择MsgBox,在下方的“消息”中输入“进入柜存记录查询”,在“标题”中输入“柜存信息”,为加强程序的可读性,在“注释”列中输入“给出进入柜存数据查询的提示”。在第二行中的“操作”列中选择OpenForm,在下方的“窗体名称”中选择“商品柜存数据查询”(此查询应事先做好),在“数据模式”中选择“只读”,在“注释”列中输入“打开商品柜存数据查询窗体”。完成后如图7.11所示:,完成后的宏生成器窗口,7.2窗体的修饰,7.2.1安排控件的空间布局7.2.2修改控件外观7.2.3改善窗体的外观,7.2.1安排控件的空间布局,在设计窗体时,当拖动字段到窗体上使其成为窗体的控件时,是不大可能精确地控制其放置位置、字段大小的。这就需要我们修改各控件的大小、间距以及它们的排列方式。在“窗体对象集合”中新建一个窗体,并在其中新建一些控件对象。操作方法如下:1.选取控件在窗体的“设计视图”中,单击控件中的任何位置,控件就会被选取。在“设计视图”中,以任何一点开始,用鼠标左键拖出一个矩形区,则被矩形框碰到的所有控件都将被选中。如果要选择的多个控件不相邻无法通过拖动鼠标来同时选择,则可按下Shift键,然后逐一单击要选择的每一个控件。,2.移动控件很多控件都是由两个部分组成的,例如文本框控件,由标签和文本框组成。如果要同时移动控件和附加标签,应在选取控件之后,将鼠标移动到控件和附加标签的边框(不是移动点)上,鼠标将会变成手掌图标。按住鼠标左键不放,此时就可以同时拖动标签和文本框了。如果要分别移动控件的标签和文本框,则在选取控件之后,将鼠标移到其标签或文本框的左上角的最大的移动控点上。当鼠标变成手指图标时,就可以单独拖动文本框或标签。,3.缩放控件选取要调整大小的控件,将鼠标指向控件边缘的七个较小的控点上,当它变成某一方向的双向箭头时,按住鼠标,拖动控点,就可以调整控件在此方向上的大小。如果确定精确地调整一个控件的大小,可以在这个控件的属性中修改它的宽度和高度值即可,数值以厘米为单位。如图所示为某个控件的属性对话框。4.对齐控件在Access的“格式”菜单中有“对齐”、“大小”、“水平间距”和“垂直间距”等命令,它们是用来排列所选取的控件的。如图7.14所示。首先选取要排列的各控件,再执行“格式”菜单中的各个命令。,7.2.2修改控件外观,排列完控件的布局,下面我们来介绍修改控件外观方法。1.修改标签属性单击选取某个标签,选取标签后的工具栏在这里可以修改标签中文字的字体,字号,样式,对齐方式,颜色,下划线等属性;以及标签的边框线颜色,边框样式,边框特殊效果等属性。2.修改文本框控件的背景样式属性选取一个文本框控件,单击工具栏上的“属性”按钮,在“属性”对话框中单击“背景样式”属性下拉列表框,我们可以看到其中有“常规”,“透明”两个选择项。还可以设定其背景色,特殊效果,边框样式,边框线颜色,边框线宽度等属性的值。,7.2.3改善窗体的外观,为了美化窗体,我们可以为窗体加上直线或矩形,添加辅助图片、日期;还可以给窗体添加背景图片;并可以对滚动条、记录选定器、导航按钮及分隔线等进行设置;除此之外,还可以将窗体运行后标题栏上的“最大化”、“最小化”、“关闭”按钮去除,并设定窗体边框不可调整等等。,演示操作步骤,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!