-1-第六章表单设计与应用大纲要求使用表单设计器:(1)在表单中加入和修改控件对象。(2)设定数据环境。知识要点1.表单表单(Form)就是一个输入或显示某种信息的界面(窗口),是VisualFoxPro提供的用于建立应用程序界面的工具之一。被大量应用于人机交互界面的设计当中。应用表单设计功能,可以设计出具有Windows风格的各种程序界面。由于表单使用非常频繁,所以在VFP中,专门提供了一个表单设计器来设计表单程序。表单是一个容器,除含有窗口的标准控件标题栏、控制按钮外,可以向表单中添加各种对象,如按钮、文本框、表格、图片等。在表单设计器环境下可以进行添加、删除及布局控件的操作。2.对象对象(Object)是反映客观事物属性及行为特征的描述。客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。事实上程序中的对象就是对客观世界中对象的一种抽象描述。每个对象都具有描述其特征的属性,及附属于它的行为。对象把事物的属性和行为封装在一起,是一个动态的概念。对象是面向对象编程的基本元素,是“类”的具体实例。(1)对象属性:属性用来表示对象的状态。(2)对象方法:对象方法是描述对象行为的过程。对象的属性特征标识了对象的物理性质,对象的行为特征描述了对象可执行的行为动作;对象的每一种属性,都是与其他对象加以区别的特性,都具有一定的含义,并赋予一定的值;对象大多数是可见的,也有一些特殊的对象是不可见的。3.类v类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法就好比是一个摸板。对象是类的一个实例。v类的类型子类和父类v类的四大特征§继承性——说明了子类延用父类特征的能力;§多态性——指一些关联的类包含同名的方法程序,但方法程序的内容可以不同,具体调用在运行时根据对象的类确定;§封装性——说明包含和隐藏对象信息,如内部数据结构和代码的能力;§抽象性——指提取一个类或对象与众不同的特征,而不对该类的所有信息进行处理;4.子类与继承在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。此外,可以为新类添加新的方法和属性。我们把新类称为现有类的子类,而把现有类称为新类的父类。一个子类的成员一般包括:(1)从其父类继承的属性和方法。(2)由子类自己定义的属性和方法。5.基类VisualFoxPro基类是系统本身内含的,并不存放在某个类库中。用户可以基于基类生成所需要的对象,也可以扩展基类创建自己的子类。VFP基类的种类:下列表中列出了VFP的基类:容器类容器类对象包容其他类的基类。将容器类的对象无论在设计时还是在运行时,均可以将该容器类的对象作为一个整体进行操作,也可以分别对其包容的对象处理。控件类控件类可以包含在容器类中的基类。控件类不能包含其它对象类名o含义类名含义-2-ActiveDoc活动文档LABEL标签Checkbox复选框LINE线条Column(表格)列LISTBOX列表框Combobox组合框OLECONTROLOLE容器控件Commandbutton命令按钮OLEBOUNDCONTROLOLE绑定控件Commandgroup命令按钮组OPTIONBUTTON选项按钮Container容器OPTIONGROUP选项按钮组Control控件PAGEFRAME页框Custom定制PROJECTHOOK项目挂钩Editbox编辑框SEPARATOR分隔符Form表单SHAPE形状Formset表单集SPINNER微调控件Grid表格TEXTBOX文本框Header列标头TIMER定时器每个VFP基类都有自己的一套属性、方法和事件。当扩展某个基类创建用户自定义类时,该类就是用户自定义类的父类,用户自定义类继承该基类中的属性、方法和事件。表:基类的最小属性集在程序设计中,可以使用CREATEOBJECT函数来直接生成基于某个类的对象。该函数的格式如下:CREATEOBJECT(类名[,参数1,参数2,……])函数基于指定的类生成一个对象,并返回对象的引用。对象属性访问以及对象方法调用的基本格式如下:对象引用.对象属性对象引用.对象方法[(参数列表)]【例】基于VisualFoxPro的FORM类生成一个对象,然后访问该对象的一些属性和方法。Oform=CREATEOBJECT(Form)&&生成一个空白表单Oform.show&&显示表单Oform.caption=”演示”&&修改表单的标题?”这是一个生成对象的演示程序”&&在表单上输出字符串Oform.release例题1.在VisualFoxPro中,表单是_______。A.窗口界面B.一个表中各个记录的清单C.数据库中各个表的清单D.数据库查询的列表[解析]本题考查的知识点是表单的基本知识。在VisualFoxPro中表单实际是一个窗口界面。在VisualFoxPro中各种对话框、向导、设计器等窗口统称为表单。选项B说法错误。一个表中的各个记录的清单不能算是表单。选项C错误,数据库中的表就是表,与表单不同。选项D数据库查询的列表也不能算是表单。[答案]A2._____是面向对象程序设计中程序运行的最基本实体。A.类B.对象C.方法D.函数Class类名,该类属于何种类型,指当前对象基于那个类而生成。BaseClass基类名,该类的基类,指当前类从那个VFP基类派生而来。ClassLibray类库名,类库文件,指当前类存放在那个类库中。ParentClass父类名,该类的父类,指当前类从那个类直接派生而来。[解析]本题考查的知识点是面向对象程序设计的基本知识。在VisualFoxPro中,面向对象的程序设计以对象及数据结构为中-3-心。因此对象是面向对象程序设计中程序运行的最基本实体。[答案]B3.对象的______是指对象可以执行的动作或它的行为。A.方法B.属性C.事件D.控件[解析]本题考查的知识点是对象的基本知识。在VisualFoxPro中,每个对象都有自己的属性和方法,也可以对一个被称为事件的动作进行识别和响应。对象的属性一般用各种类型的数据来表示。对象的方法是指对象可以执行的动作或它的行为。掌握这这些知识,便很容易选择选项A正确。选项D错误,没有“对象的控件”。[答案]A6.容器和控件VisualFoxPro中的类一般可分为两种类型:容器类和控件类。相应地,可分别生成容器(对象)和控件(对象)。控件:是一个可以以图形化的方式显示出来并能与用户进行交互的对象。控件常被放置在一个容器里。容器:容器可以被认为是一种特殊的控件,它能包容其他的控件或容器控件是一个可以以图形化的方式显示出来,并能与用户进行交互的对象,【例】如果Form1中有一个命令按钮组commandgroup1,该命令按钮组有两个命令按钮:command1和command2,label1是表单form1上的一个标签控件。如果要在命令按钮command1的事件(如单击事件)代码中修改该按钮的标题可用下列命令:this.caption=”确定”如果要在命令按钮command1的事件代码中修改命令按钮command2的标题可用下列命令:thisform.Commandgroup1.command2.caption=取消或者this.parent.command2.caption=取消但不能写成下列命令:thisform.command2.caption=取消如果要在命令按钮command1的事件代码中修改表单的标题可用下列命令:This.Parent.parent.Caption=”测试窗口”或者thisform.caption=”测试窗口”表容器层次中的对象引用属性或关键字属性或关键字引用Parent当前对象的直接容器对象This..ó当前对象ThisFormμ当前对象所在的表单ThisFormSetμ±当前对象所在的表单集7.事件事件是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应与方法集可以无限扩展不同,事件集是固定的,用户不能定义新的事件1.关于VisualFoxPro基类的最小事件集Init的说明正确的是______A.当对象产生时引发B.当对象从内存中释放时引发C.当方法或事件代码出现运行错误时引发D.当用户用鼠标单击程序界面上的一个命令按钮时引发[解析]本题考查的是关于事件的知识。只要读者能很好地记住基本知识,就能得出正确答案A。[答案]A2.Init事件由______时引发。A.对象从内存中释放B.事件代码出现错误-4-C.方法代码出现错误D.对象生成[解析]本题考查的知识点是VisualFoxPro中的事件。Init事件在对象生成时引发。选项A错误,因为从内存中释放对象时引发的事件是Destroy。选项B和C错误,因为Error事件是由事件或方法代码出错时引发。[答案]D3.在容器对象的嵌套层次中,事件的处理遵循独立性原则,即______。A.每个对象识别并处理其他的属性B.每个对象识别并处理属于自己的方法Init创建对象时发生的事件。从内存中释放对象时发生的事件。鼠标左键单击对象时发生的事件。Dbclick鼠标左键双击对象时发生的事件。Error当方法或事件代码出现运行错误时引发。鼠标右键单击对象时发生的事件。ClickRightclickC.每个对象识别并处理属于自己的事件D.每个对象识别并处理其他的事件[解析]本题考查的知识点是事件的基本知识。在容器对象的嵌套层次中,事件的处理遵循独立性原则,意思是指每个对象识别并处理属于自己的事件。选项A错误,因为对象并不会处理其他的属性。选项B错误,因为对象不是处理方法而是事件。选项D错误,因为事件处理的独立性原则只处理并识别自己的事件,不是其他事件。[答案]C4.在VisualFoxPro中,当对象方法或事件代码在运行过程中产生错误时将引发______事件。A.LoadB.InitC.DestroyD.Error[解析]本题考查的知识点是事件的应用。在visualFoxPro中,当对象方法或事件代码在运行过程中产生错误时将引发Error事件。选项A在表单对象建立之前引发,即运行表单时,先引发表单的Load事件,再引发表单的Init事件。选项B在对象建立时引发。选项C在对象释放时引发。选项D当对象方法或事件代码在运行过程中产生错误时引发。[答案]D5.C1ick事件在______时引发。A.用鼠标单击对象B.用鼠标双击对象C.表单对象建立之前D.用鼠标右键单击对象[解析]本题考查的知识点是事件的应用。在VisualFoxPro中,当用鼠标单击对象时引发C1ick事件。选项B用鼠标双击对象时引发DblClick事件。选项C表单对象建立之前引发Unload。选项D用鼠标右键单击对象时引发RightClick。[答案]A6.为表单Myform添加事件或方法代码,改变该表单中的控件Cmd1的Caption属性的正确命令是______。A.THISFORMSET.Cmd1.Caption=“最后一个”B.Myform.Cmd1=“最后一个”C.THISFORM.Cmd1.Caption=“最后一个”D.THIS.Cmd1.Caption=“最后一个”[解析]本题考查的知识点是指定方法和事件程序的操作。在类定义中编写方法和事件程序代码时,不能直接引用表单或控件的名称,因为VisualFoxPro在根据类定义创建对象时,有它内部的表达式方式,不一定就是用户定义的名称。因此在编写程序代码时要注意用THIS.(引用该对象),THISFORM.(引用包含该对象的表单),THIS.PARENT(引用该对象的直接容器),THISFORMSET.(引用包含该对象的表单集)这些关键字进行相对引用,它们利用快捷方式指明所要处理的对象。选项A引用对象的表单集,不符合题目要求,因此错误。选项B格式错误。选项C正确。选项