VFP第六章表单设计与方法_第1页
VFP第六章表单设计与方法_第2页
VFP第六章表单设计与方法_第3页
VFP第六章表单设计与方法_第4页
VFP第六章表单设计与方法_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

第六章表单设计与应用

历年试题(10~12分)

6.1.1对象与类历年试题(1分)1.类:就是一个模板,是(?)的集合对象:由模板生成的一个实例。2.类可以派生。具有继承性、封装性、多态性、抽象性A类↓B类(继承A类的WindowsMessenger属性和方法,还可以有自己独特的属性和方法)↓C类(继承了B类的属性和方法,同上)→由生成一个对象D什么是属性?属性好比特征。人有什么特征?身高,体重。什么是方法?方法比喻成打游戏中,我们买武器,一把枪,有很大用处,但是我不需要知道枪是怎么造出来了。会使用就行了。事件?事件就是一个动作。比如说:鼠标单击,鼠标双击,鼠标右击,敲键盘。在VFP中,每个动作就是一个事件,有一个固定的名字。

Click是鼠标单击事件,dblclick双击事件,rightclick右击事件。当执行一个事件或者说触发一个事件的话,就是到到那个事件对应的名字里执行那里的代码。例:下列关于类的描述正确的是:A.一个类包含了相似对象的特征和行为方法B.类是对象的集合,而对象是类的实例C.类可以按其定义的属性、事件、方法进行实际的行为操作。D.类并不实行任何操作,它仅仅表明该怎样做例:在下列选项中,描述对象的状态的是——?A.属性B.方法C.类D.事件类是具有具共同属性、共同操作性质的对象的集合,是对象的抽象描述。它定义了关于对象的特征、外观和行为等。对象是它所属类中的一个具体实例,对象通过类产生。基类

VFP本身提供的类,都是基类(表1)了解。如:对于人来说,经过很多代繁衍,那么人类的基类是什么呢?就是第一代的人。记住表2.表1:从下述VisualFoxPro基类中,可以派生子类或创建对象。容器命令组控件微调标签表单命令按钮复选框OLE容器控制线条表单集选项组列表框OLE绑定型控制分隔符#表格选项按钮#文本框自定义形状标头#页框组合框工具栏图象列#页面#编辑框计时器

注:#这些类是父容器的集成部分,在类设计器中不能子类化。容器与类类分成两种类型:容器类和控件类。相应的对象也是两种:容器和控件。所谓的容器:它里面还可容纳其它控件。控件:里面不能再包含其它控件了。比如:表格,是容器类。它里面包含了其它如:文本框等。命令按钮组:里面包含了按钮。记住表3.表3容器类可以包含其他对象,并且允许访问这些对象。每种容器类所能包含的对象如下。容器能包含的对象命令按钮组命令按钮容器任意控件控件任意控件表单集表单、工具栏表单页框、任意控件、容器或自定义对象表格列标头对象以及除表单、表单集、工具栏、计时器和其他列对象以外的任意对象表格表格列选项按钮组选项按钮页框页面页面任意控件、容器和自定义对象工具栏任意控件、页框和容器下表:对象引用的关键字。要记住了。要记住含义。可出填空或选择。属性或关键字引用ActiveControl当前活动表单中具有焦点的控件ActiveForm当前活动表单ActivePage当前活动表单中的活动页Parent该对象的直接容器THIS该对象THISFORM包含该对象的表单THISFORMSET包含该对象的表单集我们可以设置一个对象的属性值的。注意:如果编程改变一个对象的属性值的话,必须要用到表4.例如在表单form1里有两个控件,一个是文本框text1,一个是按钮command1.按钮的click事件中代码功能:实现修改表单的标题为当前时间。如果是引用按钮自己的属性,就以this开头。否则我们都是以thisform开头,然后层层引用。

thisform.caption=time()&&不能用this,因为不是设置自己的caption如果想以this开头,引用到表单:this.parent.caption=time()&&两个命令等价1:从this开始引用:2:从thisform开始引用。如果是在command1事件中编程,引用form1:this.parent,引用自己:this,引用text1有两种形式:

this.parent.text1&&this指command1本身,该代码应在command1对象中编写或者:直接从最高点form1往下引:thisform.text1&&thisform指form1表单form1text1command1方法,属性:可以新建。属性默认值为:.F.事件:不可新建。记住表6:VFP的常用事件分类记住事件的发生顺序:Load(载入事件,比喻成怀孕的状态)→init(初始化事件,人降临人世)→destroy(销毁事件,就好象人的器官坏死,也就是表单中的控件先销毁)→unload(卸载事件,销毁表单,也就是人的死亡)表6常用事件分类事件类型事件名称鼠标事件ClickDblClickRightClickDropDownDownClickUpClick键盘事件KeyPress改变控件内容的事件InteractiveChange控件焦点的事件GotFocusLostFocusWhen,Valid表单事件LoadUnloadDestroyActivateResizePaintQueryUnload数据环境事件AfterCloseTable,BeforeOpenTable项目事件QueryModifyFile等OLE事件OLECompleteDrag等其他事件TimerInitDestroyError例1.在VFP中,基类的最小事件集包含的事件是——?A.Load,Destory,ClickB.Load,Error,UnloadC.Init,Load,UnloadD.Init,Error,Destory例2.创建对象时发生——事件?A.LoadB.InteractiveChangeC.InitD.Click名称调用语法功能AddObjectObject.AddObject(cName,cClass[,…])在运行时向容器对象中添加对象ClearObject.Clear清除组合框或列表框控件中的内容HideObject.Hide通过把Visible属性设置为.F.,来隐藏表单、表单集或工具栏ShowObject.Show把Visible属性设置为.T.,显示并激活一个表单或表单集,并确定表单的显示模式RefreshObject.Refresh重画表单或控件,并刷新所有值ReleaseObject.Release从内存中释放表单或表单集QuitObject.Quit结束一个VFP6.0实例,返回到创建它的应用程序。表7:VFP中的常用方法不要求记。要会用6.5表单属性和方法表单的属性要记住。考试时候,很多时候不是要编程,而是直接修改表单属性值。修改一个对象的属性值?第一步:选中这个对象。然后鼠标右键,选择“属性”,在出来的“属性”窗口中,找到这个属性,直接修改值即可。也可在属性面板中选择修改对象。最常考的属性就是:autocenter,borderstyle,caption,scrollbars,windowstate(表单的最小化,最大化,关闭),movable(控制表单是否可移动)表单的显示、隐藏与关闭方法Show,hide,release是三个方法。Thisform.release&&关闭当前表单Thisform.show&&显示当前表单,该方法将表单的VISIBLE设置为.t.等价于:thisform.visible=.t.Thisform.hide&&隐藏当前表单,与show方法相反,是把表单的visible设置为.f.等价于:thisform.visible=.f.Thisform.refresh(刷新表单,不重要)Thisform.text1.setfocus(将表单中的text1控件得到焦点),什么叫得到焦点?最简单的得到焦点的方法就是用鼠标选择这个控件。6.5.3添加新的属性和方法在”表单“菜单进行添加操作(不是重点)6.6节基本型控件(最重要的:掌握每个控件属性)第六章考题中除了编程的部分外,大部分考属性的设置。1.标签:caption:标题。Alignment:文本对齐方式。对于属性值不用记忆。在上机时,选中每一个属性,下面都出现对该属性的解释。thisform.mylabel.caption=“选择项目(\<x)”访问键的设置:alt+x设置当前表单中标签mylabel标题为“选择项目“命令按钮:default,enabled,visibleDeafault:设置为.t.那么按下键盘上的回车键鼠标单击该按钮也就是执行这个命令按钮对象的click里的代码.Enabled:设置为.f.。表示废止一个控件,且该控件得不到焦点。设置.T.就是不废止。Thisform.text1.enabled=.f.&&废止了表单中的TEXT1控件VISIBLE:.T.,可以看到这个控件。

.f.,看不到这个控件了文本框textbox1.controlsource:可以让文本框显示一个字段值。前提是要把表添加到表单的“数据环境”中去。如果是编程设置的话:Thisform.text1.controlsource=“xs.xh”&&让text1里显示xs.xh字段值。2.value:表示文本框当前的值

thisform.caption=thisform.text1.value&&将表单的标题设置为文本框中的值3.Passwordchar:设置密码框用的。比如把passwordchar设置成*.那么,在文本框中输入的任何值都用*显示.可用程序来实现:thisform.text1.passwordchar=“*”编辑框:1.HideSelection:设为.t.,在编辑框没有获得焦点时,编辑框中选定的文本仍然按选定状态显示。

2.Readonly:设为.t.,只读但是可得到焦点

enabled:设为.f.,只读但不可得到焦点。3.scrollbars:指定是否有滚动条。4.Selstart,sellength只能编程修改,不能在属性中直接修改。比如说:thisform.edit1.selstart=0thisform.edit1.sellength=len(alltrim(thisform.edit1.value))执行这两条命令:就会把编辑框中,从selstart开始的位置(从0开始),一直到sellength(所有字符都被选中)指定的长度,作为选择的文本范围。(图6.17)。比如说编辑框中值是“abcde”,那么abced就被全选中。再比如:编辑框中值是“abdef”,如果:

thisform.edit1.selstart=2thisform.edit1.sellength=3.那么是哪几个字符被选中呢?注意是从2的后一个字符开始,连续三个字符被全选中。因此是“def”被全选中。如果seltstart设为0,sellength设为3?那么选中的字符是“abd”.6.6.5复选框1.Caption:标题2.controlsource:与字段绑定。可与数值型字段绑定,也可与逻辑型字段绑定。数值型绑定:0,1,2分别对应复选框未被选中,选择,不确定。逻辑型绑定:.f.,.t.,.null.对应复选框为未被选中,选择,不确定6.6.6列表框和组合框这两个控件很多属性是一样的。不一样地方:组合框有一个style属性(下拉组合框、下拉列表框),列表框没有1.rowsource和rowsourcetype(很重要)两个是成对使用的。搭配起来使用。(1)rowsourcetype:设置为2-别名

rowsource:可选择一个表。效果:列表框中显示表里的记录(2)rowsourcetype:设置为3-SQL语句

rowsource:可打一个SQL语句。比如可在rowsource:select*fromxsintocursorzz

效果:把那句SQL语句执行结果放到列表框中还可用命令来设置:

thisform.list1.rowsourcetype=3thisform.list1.rowsource=“select*fromxsintocursorzz”&&list1是列表框的名字.(3)rowsourcetype:6-字段rowsource可选择一个字段也可编程设置:

thisform.list1.rowsourcetype=6thisform.list1.rowsource=“xs.xh”(4)rowsourcetype:7-文件

rowsource:可设置为一种文件类型编程:thisform.list1.rowsourcetype=7thisform.list1.rowsource=“*.doc”可在列表框中查找所有路径下的doc文件(5)rowsourcetype:8-结构

rowsource:选择一个表名.效果:在列表框中显示这个表的结构,就是这个表的所有字段名显示出来。也可编程设置:thisform.list1.rowsourcetype=8thisform.list1.rowsource=”xs”Columncount:设置列表框的列数。CONTROLSOURCE:是与一个字段绑定,显示这个字段值。Value:当你选择列表框中一行时,value里就是这行的内容。Multiselect:1或者.t.即可同时选中列表框中的多行。List属性:只能编程改写。不能直接设置。Thisform.list1.list(3)&&得到列表框中第三行的值Listcount:总行数。Selected:如:thisform.list1.select(3)返回为.t.说明,第三行当前被选择了。6.7容器型控件1.命令按钮组Buttoncount:设置有几个按钮.对于命令按钮组中的每一个按钮有一个caption属性:修改caption属性,有两种方法:1:直接修改.选中“命令按钮组”这个对象→右键单击→选择“编辑”→可以选中任一个按钮,在属性窗口中修改caption属性.2:编程修改(使用buttons属性).

Thisform.buttongroup.buttons(2).caption=“退出”注意:buttongroup是命令按钮组的名称,buttons是个按钮组的数组属性,buttons(1),buttons(2)分别指命令按钮组中的第一个按钮,第二个按钮.3.valueValue的值表示当前选中第几个按钮了.比如:value=1,表明正在使用第一个按钮,value=2,正在使用第二个按钮.2.选项按钮组1.buttoncount,2buttons,3value同命令按钮组用法4.controlsource:可以绑定表中一个字段,显示这个字段的值.注意:要先把表加入数据环境中,然后才能使用controsource选择一个字段.表格1.recordsource和recordsourcetype,用法同列表框的rowsourcetype,rowsource.但是这里recordsourcetype只要掌握0-表,1-别名,4-sql.其中0-表,和1-别名是一样的功能。就是把一个表记录显示在表格中。2.columncount:设为3.表示表格有3列.3.每个列有controlsource属性,同样也是绑定一个字段.如何设置?第一步,将表添加到数据环境.第二步,选中表格对象(注意表格已经设置列)→右键单击→选择“编辑”→选择一个列,设置controlsource属性.页框pageframe1:pagecount:3表示有三个页面每个页面可修改caption属性.先选中页框对象→右键单击→选择“编辑”→修改任意一个标头.2:pages属性:用法同按钮组的buttons.Thisform.pageframe1.pages(2).caption=‘学生’注意:pageframe1是页框的名字,pages(2)表示页框的第二个页面.3:tabs设为.f.,页框中不显示页面4:activepage:当前哪个页面在活动例如把activepage设为2,那么运行的时候,首先显示第二个页面.另外,如果不知道当前哪个页面在活动,可取activepage里的值,如果值等于1说明当前第一个页面在活动.本章总结1.第六章最重要的就是各个控件的属性设置2.方法四个:thisform.releaseThisform.show,thisform.hide,thisform.text1.setfocus3.引用中的:this,thisform,parent的含义要搞清楚.只有会引用对象了,才能谈到编程.4.事件:load→init→destroy→unload的触发顺序.5.什么是基类了解一下,基类的最小属性集:class,parentclass,baseclass,libraryclass.基类的三个最小事件要知道:init,destroy,error.6.关于类与对象要理解,一个是模板,一个是基于模板生成的实例.容器类与控件类要能区分,还包括了其它控件就是容器类,不包伙其它控件了就是控件类.7.表单编程中最常编的就是在按钮的click事件中编写关于SQL的语句.另外,有一部分SQL语句是设置在表格的recordsource,列表框的rowsource属性里的,要会设.最常用的模板有:x=thisform.text1.valueThisform.grid1.recordsource=“select…..from….where

字段值=x”2005春1.VFP中进行菜单设计时,菜单有两种,即一般菜单和快捷菜单。2.在事件代码中相对引用当前表单集的关键字是___Thisformset_____

。3.对于许多控件来说,可以通过ControlSource属性与数据绑定。在下列VFP对象中,无ControlSource属性的是____。(2005春)

A.标签(Label

)B.复选框(CheckBox)

C.选项按钮组(OptionGroup)D.列表框(ListBox)4.图1所示的表单用于浏览教师(JS)信息。为了在表格控件中以不同的背景色显示男、女教师的信息,则在表格控件的Init事件代码中,可使用如下形式的语句:

This._Setall__("DynamicBackcolor","IIF(xb='女',;RGB(125,125,125),RGB(125,125,125))","Column")Setall(“属性名”,值,“控件名称”)5.表单中下拉列表框的RowSourceType属性为“6-字段”,数据源为系名代码表(表的文件名为xmdm.dbf,含系代码(xdm)和系名(xim)两个字段),为了使下拉列表中显示系代码和系名两列数据,则RowSource属性值为:xmdm.xdm,____xim____

。6.设某表单上有一个页框控件,该页框控件的PageCount属性值在表单的运行过程中可变(即页数会变化)。如果要求在表单刷新时总是指定页框的最后一个页面为活动页面,则可在页框控件的Refresh事件代码中使用语句:This.ActivePage=PageCount。(2005春)7.某数据库中包含课程(KC)表和成绩(CJ)表,课程表中含有课程代号(kcdh)、课程名(kcm)和学分(xf)等字段,成绩表中含有学号(xh)、课程代号(kcdh)和成绩(cj)等字段。已创建一个按课程代号查询学生成绩的表单如图2所示。(2005春)表单中下拉列表框(Combo1)的数据源设置如下:

RowSourceType属性为:6-字段

RowSource属性为:kc.kcdh。在下拉列表框中选择某一课程代号后,表格控件(Grid1)立即显示该课程所有学生的成绩,且在文本框(Text1)中显示该课程的课程名,则应在下拉列表框的___InteractiveChange____事件中编写如下代码:

SELECTKC

ThisForm.Text1.Value=kc.kcm

ThisForm.Grid1.RecordSource=;

"SELECTcj.xh,cj.cjFROMcjWHEREcj.kcdh=ALLT(THIS.Vale)INTOCURStmp"

ThisForm.Refresh根据以上代码可判定,表格控件(Grid1)的RecordSourceType属性为___3或SQL___

。2005秋1.表格(gird)控件是一个按行和列显示数据的容器对象,其外观与表的浏览窗口相似,表格最常见的用途之一是显示一对多关系中的的子表。在默认情况下,表格控件包含列控件,列空件又包含列标头控件和

文本框

控件。2005秋3.数据绑定型控件是指其(显示的)内容与表、视图或查询中的字段(或内存变量)相关联的控件。若某个控件被绑定到一个表的字段,移动该表的记录指针后,如果该字段的值发生变化,则该控件的___30____属性值也随之发生变化。2005秋A.Name

B.ControlSource

C.Value

D.Caption4.学生注册表单(forml)如图1所示,该表单中含有3个标签、2个文本框(Text1和Text2),1个命令按钮组(包含3个按钮),其功能是对学生信息进行注册:2005秋

1)如在学生注册(ZC)表中已存在某学生的记录(学号已经存在),说明该学生已注册过;若没有,则进行注册,即将该学生信息存入学生注册表;

2)进行注册时(即按“确认”按钮时),学生和姓名不能为空。图1

学生注册表单

表单是一个容器型控件,其集合属性为Controls,计数属性为ControlCount。此表单的ControlCount属性值为

6

。表单中的控件数目5.设Labell是某表单上的一个标签控件,则利用Labell控件显示系统日期和时间,可以在该表单的Init事件代码中使用语句

THISFORM.__Label1.Caption___=TTOC(DATETIME())来实现。2005秋2006年春1.下列关于表单数据环境的叙述中,错误的是(30)(2006年春)

A.表单运行时自动打开其数据环境中的表

B.数据环境是表单的容器

C.可以在数据环境中建立表之间的关系

D.可以在数据环境中加入视图2006年春2.页框对象是包含页面的容器对象.在默认情况下,一个页框对象包含两个页面对象,如果要修改页框对象所包含的页面对象数,则应该修改页框的

pagecount属性值.(2006年春)3.在下列几组VFP基类中,均具有ControlSource属性的是(29)(2006年春)

A.ListBox,Lable,OptionButton

B.ComboBox,EditBox,Grid

C.ComboBox,Grid,Timer

D.EditBox,CheckBox,OptionButton4.在VFP中,组合框控件具有列表框控件和和文本框控件的组合功能.根据是否可以输入数据值,组合框可设置为下拉组合框或下拉列表框.(2006年春)5.某表单如图1所示,用于用户登录(需要输入用户名和口令信息).该表单无控制图标和控制按钮,则表单的Controlbox属性值必定为.F.。(2006年春)图1用户登录表单6.对于图2所示的表单,当表单运行时,利用微调框(Spinner1)来调节形状控件(Shape1)的Curvature属性值,使形状控件的角的曲率发生变化.该表单上的标签控件显示为"曲率(R)",其Caption属性值应为

曲率(\<R)

.为了实现表单中"微调框控件的值发生变化时形状控件的角的曲率也随之变化"的功能,微调框控件(Spinner1)的Interactivechange

事件代码为:(2006年春)THISForM.Shape1.Curvature=THIS.Value图2形状控件的曲率实验2006秋1.在默认的情况下利用表单设计器设计表单时,若从数据环境里将某个表的一个逻辑型字段用鼠标拖放到表单上,则在表单上添加的控件个数和控件类型分别是

。(2006秋)A.2,标签和文本框B.2,标签和复选框C.1,文本框D.1,复选框2.所有的容器对象都具有与之相关的计数属性和

集合

属性。其中,前者是一个数值型属性,它表明了所包含对象的数目;后者是一个数组,用以引用每个包含在其中的对象。3.利用ShowWindows属性和DeskTop属性,可以将表单设置为

顶层表单

、浮动表单和子表单。2007年秋1.对于表单的Load、Activate和Init这三个事件来说,

Load

事件的处理代码中不能引用表单中的对象,

Activate

事件最后一个被触发。4.在下列几组控件中,均有SetAll()方法的是

。A)表单(Form)、命令按钮(CommandButton)、命令按钮组(CommandGroup)B)表单集(FormSet)、列(Column)、组合框(ComboBox)C)表格(Grid)、列(Column)、文本框(TextBox)D)表单(Form)、页框(PageFrame)、命令按钮组(CommandGroup)5.形状控件(Shape)的Curvature属性用于控制其曲率,其取值范围为

0~99

。2008年春1.对表单中的一个文本框控件来说,下列事件中最后发生的事件是

(27)。2008年春A.Valid B.Init C.Destroy D.Lostfocus2.将表单中的所有文本框的Enabled属性设置为假,可在表单的Init事件处理代码中用SetAll方法进行设置。下列表述中,命令正确的是

(28)。A.THISFORM.SetAll("Enabled",.F.,"Text")B.THISFORM.SetAll(Enabled,.F.,Text)C.THISFORM.SetAll("Enabled",.F.,"Textbox")D.THISFORM.Se

温馨提示

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

评论

0/150

提交评论