




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章可视化表单设计,8.1面向对象程序设计简介8.2表单设计概述8.3表单设计器的使用8.4数据环境与数据绑定8.5常用表单控件8.6表单集与多重表单,8.1面向对象编程简介,8.1.1面向对象程序设计概述面向对象程序设计(OOP):将客观事物称为对象,对对象的抽象得到类。面向对象程序设计的主要工作有两部分:一是创建类,包括定义类中的成员和类提供的功能(即方法)二是通过类创建对象,并按应用程序的需求建立对象之间的协同工作能力。OOP方式不再是以操作和过程作为程序设计的中心,而是将对象和数据结构作为程序设计的中心。,1.对象(Object)对象是类的运行实例,客观世界里的任何实体都可以被看作是对象。对象可以是具体的事物,也可以指某些概念。从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。事实上程序中的对象就是对客观世界中对象的一种抽象描述,8.1.2对象与类的概念,2.属性:对象所具有的特征被称为对象的属性。每个对象都有多个属性,如对象的显示标题、对象的名称、对象的前景色背景色、对象的文本大小等。3.方法:描述对象行为的过程。即程序代码4.事件:是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应。事件集是固定的,用户不能定义新的事件。当用户执行相应的操作时都会引发一个事件。5.类:类是一种对象的归纳和抽象,是对一类相似对象的性质描述,这些对象具有相同种类的属性(变量)以及方法(函数),8.1.3对象与类的特性,1.封装性对象的属性与方法被封装在一个独立的一段源代码中,对其中的数据的访问必须通过方法实现,不能直接访问。2.层次性类具有层次性,在一个类的基础上通过添加一些属性和方法可以得到一个新的类,称原来的类为基类或父类,产生的新类为派生类或子类。子类继承了父类的所有属性和方法。,3.继承性即子类具有父类的所有属性和方法。对父类所作的修改会被子类自动继承。4.抽象性用户对对象进行操作时,可忽略对象内部的实现细节。5.多态性同一类的对象可以有不同的表现形式。,8.1.4VisualFoxpro的基类,VisualFoxPro提供了一系列的基本对象类,称为基类(BaseClass)。每个对象都有各自的属性和方法。基类的分类:基类一般可分为控件类和容器类控件类:该类的对象必须作为一个整体来访问或处理。如命令按钮和文本框等。容器类:该类对象可以容纳控件类对象,可以单独对其中的组件进行修改和操作。如表单、命令按钮组、页框等。,1控件类控件:通常是指容器类对象内的一个图形化的、并能与用户进行交互的对象。常见的控件类对象见下表,2容器类常见的容器类对象见下表,一个对象被创建后,对对象的操作主要是访问其属性及调用其方法。这些操作通过对该对象的引用进行。其基本格式为:对象引用.属性对象引用.方法其中对象引用分为绝对引用和相对引用1.绝对引用从最顶层的容器开始的引用。如:FormSet1.Form1.CommandGroup1.Command.Enabled=.f.,8.1.5对象的引用,2.相对引用,引用时使用下面关键字的引用,【例8.1】对象的相对引用thisform.refreshthisform.Label1.Caption=你好,信息世界this.value=3thisformset.form1.refreshthis.pqrent.text1.setfocus,8.2表单设计概述,8.2.1创建表单的途径1.使用表单向导创建表单2.在表单设计器中使用表单生成器创建表单3.使用表单设计器创建表单4.通过编写程序创建表单打开表单设计器的方法:1.通过“文件/新建/表单/新建”2.使用命令:createform表单文件名,8.2.2表单的修改与运行,1.表单的修改(1)菜单方式:通过文件菜单的打开命令(2)命令方式:modifyform表单文件名2.表单的运行(1)菜单方式打开表单后使用工具栏中的!,或使用表单菜单中的执行表单命令(2)命令方式doform表单文件名with参数表说明:参数是传给Init事件代码中的PARAMETERS或LPARAMETERS中的参数。,8.2.3常用表单事件与方法,1.常用表单事件:(1)Init事件在对象建立之前引发,在表单的Init事件前引发(2)Activate事件当一个表单、表单集或页面成为当前活动对象时引发(3)Destroy事件在控件对象释放时表单对象的Destroy事件之前引发(4)Load事件在表单对象被创建之前即Init事件之前引发(5)Unload事件在表单对象的Destroy事件后引发(6)Error事件:出错时引发(7)GotFocus事件:对象被选定时引发(8)Click事件:单击时引发,2.常用表单方法(1)Relase方法:将表单从内存中释放。ThisForm.Release表单运行时,用户单击表单右上角的关闭按钮,系统会自动执行Relase方法。(2)Refresh方法:刷新表单。(3)Show方法:显示表单。该方法将表单的Visible属性设置为.T.。(4)Hide方法:隐藏表单。(5)SetFocus方法:使对象成为活动对象。,8.2.4使用表单向导创建表单,1.创建单表表单【例8-2】使用表单向导创建一个可维护职工档案表zgda.dbf的表单2.创建一对多表单【例8-3】使用student表和borrow表创建一个一对多表单,8.3表单设计器的使用,操作步骤1.启动表单设计器创建空表单2.指定数据源(不是必须)3.添加控件4.设置控件属性5.添加代码6,运行表单,8.3.1表单设计器的启动8.3.2表单设计工具栏通过“显示”菜单中的“工具栏”命令可打开或关闭工具栏。1.表单设计器工具栏2.表单控件工具栏3.布局工具栏4.属性窗口5.代码窗口,8.3.3表单生成器在表单设计器中通过下面方法之一可以打开表单生成器:1.单击“表单设计器”工具栏中的”表单生成器“按钮”2.从快捷菜单中选择“生成器”命令3.从“表单”菜单中选择“快速表单”命令【例8-4】使用“表单生成器”快速生成一个职工档案表单。样式选择“新奇式”,8.3.4用表单设计器设计表单,主要操作步骤1.使用“文件/新建”命令新建一个空表单2.向数据环境中添加表(当表单中要使用表时)3.向表单中添加控件,并对控件进行合理布局4.选择控件,修改控件的属性5.为命令按钮添加事件代码6.运行表单,【例8-5】设计一个名为“身分验证”的应用程序的密码输入对话框。要求用户输入的密码字符自动显示为“”。密码正确,显示“密码正确,欢迎进行本系统!”,否则,显示“密码错,禁止进行本系统!”,最多允许输入3次密码。要点:1.使用表单完成,表单中要添加:一个标签控件、一个文本框控件、二个命令按钮2.修改控件的属性:控件上显示的文字,文本框输入的内容显示为*号3.要给命令按钮添加代码,使其完成指定的功能。操作步骤:1.创建空表单,2.向表单中添加控件,3.修改控件的属性,4.添加代码,控件的属性,添加代码,Form1对象的Load事件代码:publicii=0Command2对象的Click代码:thisform.text1.value=thisform.text1.setfocus,Command1对象的Click代码:i=i+1ifi3ifthisform.text1.value=3721messagebox(密码正确,欢迎进行本系统!)thisform.releaseelsemessagebox(密码错,重新输入!)thisform.text1.value=thisform.text1.setfocusendifelsemessagebox(密码错,禁止进行本系统!)this.enabled=.f.endif,8.4数据环境与数据绑定,8.4.1数据环境数据环境指表单或表单集中使用的数据源,即表单或表单集中所有用到的数据所在的表。1.启动“数据环境设计器”通过表单设计器工具栏中的数据环境按钮或显示菜单中的“数据环境”命令2.向数据环境添加表或视图使用快捷菜单中相应命令添加,3.在数据环境中设置关系方法:将主表中的字段拖动到子表中的相应索引字段上即可。8.4.2数据绑定即为表中的控件指定相关的数据源。通常由控件的ControlSource属性指定8.4.3向表单添加字段直接将数据中的字段拖动到表单中。,8.5常用表单控件,8.5.1标签与命令按钮1.标签用于显示静态文本(运行后不能改变的文字),一般用于提示。文本内容保存在Caption属性中。标签的主要属性有:Caption,Autosize,Fontsize,Forecolor,BackStyle,BackColor,Name,Alignment,2.命令按钮,Caption属性内容为命令按钮上显示的内容。添加命令按钮的操作主要有:设置Caption属性(后面加E可以将E设置为热键)和输入代码(Click事件),【例8-6】设计一个简单表单,含一个显示“欢迎使用档案管理系统”文字的标签以及“进入”、“退出”两个命令按钮,1.文本框(TextBox)和编辑框(EditBox)的区别相同之处:都可以由用户直接输入数据与编辑数据,输入的数据保存在Value属性中。不同之处:文本框只能输入一行文本,编辑框可以输入多行文本(有滚动条);文本框可以输入字符型(默认类型)、数值型、日期型和逻辑型数据,而编辑框只能输入字符型数据。要使得文本框中输入的数据为某一确定的类型,必须先设置其Value属性值为该类型的数据或通过文本框生成器设置其属性。,8.5.2文本框和编辑框,添加文本框和编辑框后的主要操作:1.设置框中的默认值:在Value属性中设置,设置后的值要运行时才能看见。2.右击文本框控件或编辑框控件,从快捷菜单中选择“生成器”,然后在生成器对话框中设置其格式及与其对应的字段等。【例8-7】设计一个如图8-21所示的“日期与时间”表单,只含一个文本框,逐次单击之,即可轮流显示系统当前的日期或时间。日期格式为年月日,日期分隔符为“.”,操作步骤1.通过“文件/新建”命令建立一个空表单2.向表单中添加一个文本框控件3.设置属性:设置Form1的Caption属性为“日期与时间”4.添加代码:双击表单空白处,添加Form1的Load事件代码如下:publicii=.t.,4.修改文本框Text1的属性:FontSize为28BackStyle为15.编写文本框Text1的Click事件代码如下:ifi=.t.thisform.text1.value=date()&取得当前日期thisform.text1.dateformat=12&日期格式为年月日thisform.text1.datemark=.i=.f.elsethisform.text1.value=time()i=.t.endif,【例8-7】设计一个如图8-22所示的表单,在职工档案表中查询指定姓氏的职工姓名,并将结果显示在编辑框中。操作要点:1.向数据环境中添加表2.创建表单,并添加2个标签控件、1个文本框控件、1个编辑框控件、2个命令按钮并修改其标题属性3.添加命令按钮的Click事件代码。其中查找按钮的代码主要功能是在表中查找与文本框中输入的姓氏相符的姓名,并将其累加到编辑框的value属性中。,setexactoffthisform.text1.setfocus作用:设置字符串的非严格匹配并将光标定位到文本框中。执行时间:当表单激活时执行,Form1的Activate事件代码,查询命令按钮代码,thisform.edit1.value=xs=alltrim(thisform.text1.value)gotopk=0scanforzgda.姓名=xsthisform.edit1.value=thisform.edit1.value+zgda.姓名+chr(13)k=1endscanifk=0messagebox(职工表中无此姓氏,0,查找失败)endifthisform.text1.value=thisform.text1.setfocusreturn,退出命令按钮代码,releasethisform,8.5.3列表框和组合框,1.列表框和组合框的区别共同之处:列表框(ListBox)和组合框(ComboBox)都有一个供用户选择的列表。不同之处:列表框中内容只能选择不能输入,当其内容不能完全显示时在其右边有一个滚动条。而组合框则可进行输入操作(Style属性必须为0),也可通过其右边的下拉按钮进行选择。,2.列表框生成器与组合框生成器列表框与组合框控件的主要操作是添加列表内容,添加的方法可以通过各自的生成器进行。3.列表框与组合框的数据源通过修改其RowSourseType(列表内容的来源类型)和RowSourse(列表内容)属性使其与表中的字段建立关联。,【例8-9】设计一个表单,将职工档案表zgda.dbf中所有记录的姓名显示在一个列表框中,当选择某一姓名后,将选择的姓名显示在一个文本框中。操作要点:1.建立一个空表单,然后添加一个标签控件、一个文本框控件和一个列表框控件2.向数据环境中添加表zgda3.修改控件的属性标签控件的Caption为“姓名”将列表框控件的RowSourceType属性为6字段,RowSource属性为zgda.姓名,4.编写列表框(List1)的InteractiveChange事件代码(交互式改变:当鼠标单击或使用键盘的移动键时激发)如下:thisform.text1.value=this.value,8.5.4复选框与选项按钮组,复选框(CheckBox)又称多选框,选项按钮组(OptionGroup)又称单选框1.复选框只有选定与末被选定两种状态,可以与逻辑型字段建立关联,选择Value值为1逻辑型字段值为.T.未选择Value值为0逻辑型字段值为.F.复选框有三种不同的外观:方框、文本按钮和图形按钮,(1)方框Style属性为0,Caption属性值为复选框右边文字。(2)文本按钮Style属性为1.Picture取默认值(无)Caption属性值为复选框上的文字。此种复选框被选定时,文本按钮呈按下状态。(3)图形按钮Style属性为1.Picture属性为图形文件名,删除Caption属性值。此种复选框被选定时,图形按钮呈按下状态。,2.选项按钮组单选按钮(选项按钮组):每次可从多个待选项中选择其中一个。可以通过生成器设置OptionGroup1.value的值为组中按钮的序号:OptionGroup1.value=1选择option1OptionGroup1.value=2选择option2单选按钮可以与数值型字段建立关联。方法:在属性窗口中选择ControlSourse属性值为相应的数值型字段设置组中按钮的个数:设置其BottonCount属性为相应的数字,然后将Autosize属性设为.T.,【例8-10】设计一个表单,对随意输入在文本框中的文字,可选择不同的字体进行显示操作步骤:1.建立一个空表单2.添加2个标签控件,一个文本框,一个选项按钮组和一个命令按钮3.设置属性:修改标签控件和命令按钮的Caption属性及字号分别为:请输入文本内容、请选择字体、关闭,字号为184.通过生成器设置选项按钮组:数目设置为4.标题分别为:黑体、宋体、隶书和楷体_2312,5.编写选项按钮组OptionGroup1的Click事件代码:DOCASECASEThis.value=1thisform.text1.fontname=黑体CASEThis.value=2thisform.text1.fontname=宋体CASEThis.value=3thisform.text1.fontname=隶书CASEThis.value=4thisform.text1.fontname=楷体_2312endcase6.编写Command1的Click事件代码如下thisform.release,8.5.5命令按钮组,命令按钮组同时添加多个命令按钮,按钮个数可以通过BottonCount属性设置,按钮的名称可以通过在属性窗口中选择各个按钮名称(Command1.Command2)后设置其Caption属性,【例8-11】向由例8-4建立的表单添加三个命令按钮,其作用分别是:上页、下页、退出即单击按钮后将显示:上一条记录、下一条记录或关闭表单。操作步骤:1.打开表单2.添加一个命令按钮组3.打开命令按钮组的生成器对话框,将按钮数目设置为3.按钮标题分别为上页、下页、退出,在布局中设置按钮布局为水平。,4.为命令按钮组(Commandgroup1)的Click事件编写代码:,DOCASECASETHIS.VALUE=mand1.enabled=mand2.enabled=mand3.enabled=mand4.enabled=.t.,CASETHIS.VALUE=2skip-mand3.enabled=mand4.enabled=.t.ifbof()mand1.enabled=mand2.enabled=.f.endif,CASETHIS.VALUE=mand1.enabled=mand2.enabled=.t.ifeof()mand3.enabled=mand4.enabled=.f.endif,CASETHIS.VALUE=mand1.enabled=mand2.enabled=mand3.enabled=mand4.enabled=.f.endcasethisform.refresh,DOCASECASETHIS.VALUE=mand1.enabled=mand2.enabled=mand3.enabled=mand4.enabled=.t.CASETHIS.VALUE=2skip-mand3.enabled=mand4.enabled=.t.ifbof()mand1.enabled=mand2.enabled=.f.endifCASETHIS.VALUE=mand1.enabled=mand2.enabled=.t.ifeof()mand3.enabled=mand4.enabled=.f.endifCASETHIS.VALUE=mand1.enabled=mand2.enabled=mand3.enabled=mand4.enabled=.f.endcasethisform.refresh,8.5.7计时器,计时器(Timer)控件是用于表单中控制时间的控件。计时器在运行时不可见,使用计时器控件主要有个要素:Timer事件代码:用于设定该事件触发时要执行的动作。Interval属性:表示触发Timer事件的时间间隔,单位为毫秒。Enabled属性:值为.T.时启动计时器,为.F.时终止。,【例8-12】计时器应用示例。创建一个表单,在表单上部设计一个向左移动的字幕,在表单下部显示当前的数字时钟。操作步骤:1.建立一个空表单,并添加个标签和个计时器控件2.设置属性:Label1.caption=欢迎使用本系统AutoSize=.T.FontSize=22BackStyle=0Label2.AutoSize=.T.BackStyle=0Timer1.Interval=200Timer2.Interval=1000,3.添加Timer1的Timer事件代码如下ifthisform.label1.left+thisform.label1.width0thisform.label1.left=thisform.label1.widthelsethisform.label1.left=thisform.label1.left-10endif添加Timer1的Timer事件代码如下:ifthisform.label2.caption!=time()thisform.label2.caption=time()endif,8.5.7表格,表格(Grid)控件可用来在表单或页框中显示与修改数据表中的记录。表格由若干行和若干列组成,列由列标题和列控件组成。1.由数据环境创建表格将数据环境中的表直接拖动到表单中即可。2.用表格生成器创建表格在表单中创建了表格后,使用表格生成器可设置表格。,8.5.8页框,页框(PageFrame):是可包含多个页面的容器类控件,主要用于建立具有多个选项卡的对话框。页框的主要属性有:PageCount:页框中所包含的页面的个数。TabStyle:页框中的选项框是平均分布(0)还是在左边(1)ActivePage:指定页框中活动页的页码。TabStretch:单行(1)或多行(0)显示页面标题。,【例8-13】页框应用示例。设计一个包含两个页面的“职工信息查询”表单,一个页面用于显示查询到的职工的基本信息,另一个页面用来显示职工的简历和照片。操作要点:1.创建一个空表单,向表单中添加标签控件、文本框、命令按钮和页框控件各1个2.向数据环境中添加表3.修改控件的属性(caption属性,页框控件的pagecount属性为2)4.编辑页框:从页框控件的快捷菜单中选择编辑。选择第1个页框,将数据环境中的相应字段拖动到页框中,对第2个页框做相同的操作,添加代码,Form1的Activate事件代码setexactonthisform.text1.setfocus,command1的click事件代码,cz=alltrim(thisform.text1.value)n=recno()gotopscanforzgda.编号=czorzgda.姓名=czthisform.pageframe1.page1.refreshthisform.pageframe1.page2.refreshthisform.text1.setfocusreturnendscanmessagebox(查无此人!,0,查找失败)gonthisform.text1.value=thisform.pageframe1.page1.refreshthisform.pageframe1.page2.refreshthisform.text1.setfocusreturn,8.5.9ActiveX控件与ActiveX绑定控件,ActiveX控件就是符合ActiveX标准的控件,通过表单控件工具栏中的按钮可以向表单中插入ActiveX控件,或直接插入OLE对象。1.ActiveX控件【例8-13】创建一个电子日历表单用于日历2.ActiveX绑定控件该控件可用于显示数据表中的通用型字段中的内容。操作方法是:添加该控件后修改其ControlSource属性为指定的字段。,1.线条(Line)主要用于在表单上画各种直线与斜线,其主要属性有:Width宽度Height高度BorderWidth线条的粗细B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政管理自考本科专业发展与试题及答案
- 行政管理的评价标准试题及答案
- 2025农业银行贷款合同范本
- 行政管理的社会超级结构研究试题及答案
- 2025合作伙伴(公司)合作协议合同范本
- 2025年管理心理学考试注意事项试题及答案
- 现代管理学中业务流程再造试题及答案
- 行政管理学学术研究试题及答案
- 2025婚礼策划公司员工合同样本
- 2025家庭雇佣家政服务员合同
- 第四课:印巴战争
- 电气设备-开篇绪论汇编
- 武汉绿地中心项目技术管理策划书(48页)
- 婚无远虑必有财忧法商思维营销之婚姻篇74张幻灯片
- 红外图像处理技术课件
- 小学一年级人民币学具图片最新整理直接打印
- 投掷:原地投掷垒球
- 港口码头常用安全警示标志
- 密闭式周围静脉输液技术PPT课件
- 电梯快车调试方法
- 主要材料损耗率表
评论
0/150
提交评论