• 沒有找到結果。

习题 3 参考解答

2.6 表单设计

2.6.1 复习提要与学习指导 1.面向对象的基本知识

(1)了解过面向程(过程驱动)与面向对象(事件驱动)的程序设计的概念与区别、

了解类和对象的概念及类的特点。

类的定义:面向对象程序设计的核心。将具有相同的结构、操作,并遵守相同规则的对 象集合到一起,这组对象就称为类,是某一组对象的模板。

对象的定义:对象是类的实例,对象包含数据(对象的属性值)和过程(对象的方法程 序)。

类和对象之间的关系:类是静态的(设计状态下),对象是动态的(运行状态下)

类的特点如下:

继承性——子类沿用父类特征的能力,提高了代码的可重用性。

封装性——主要体现为类中信息的隐藏(设计类时指定的代码,在通过类创建对象时不 可见)。

多态性——同一个类的同名事件,可能完成不同的操作,不同类的同名事件也可完成不 同操作。

抽象性——设计类时,只需要提取该类的某些属性,而不是所有属性。

(2)面向对象的三要素。

属性:对象某一方面的特征。

最小属性集:每个对象都具有的属性集合,如 Class、baseclass、classlib、parentclass。

事件:对象能够识别的一个动作,该动作可由用户或系统产生,如鼠标单击。

最小事件集:所有 Visual FoxPro 基类都能识别的事件,如 Init、Destroy、Error。

方法:当用户的某个事件作用于对象上时,对象所产生的操作。实际上是一段过程 代码。

(3)掌握基类、子类和父类的概念,类的类型。

基类:由 Visual FoxPro 系统提供的类。

子类:用户通过基类或其他类重新定义出来的新类。此新类就称为子类,而产生该子类 的基类或其他的类就称为父类。

类的类型:

容器类:可以包含其他控件的类。例如:表单类、命令按钮组、表格、页框类等,其中 表单集、页框是非可视容器类。

控件类:不可以包含其他控件的类。例如:命令按钮类、文本框类,而计时器等是非可 视控件类。

(4)掌握引用对象、设置对象属性和调用对象程序的方法;

引用对象:

绝对引用——从容器的最高层次来描述对象的位置。

相对引用——描述出相对于该对象的位置信息。

相对引用的关键字:Thisformset、Thisform、This(当前对象)。

相对引用的属性:Activeform、Activepage、Activecontrol、Parent(该对象的直接容器)。

对象容器的层次关系:引用对象的依据。

设置对象的属性:属性窗口、在代码中设置。

引用对象.属性名称=属性值

调用对象的方法程序:引用对象.方法程序的名称[(方法程序所必须的参数列表)]

在 Visual FoxPro 中,部分方法没有参数,可以直接写方法名称。

容器对象引用.Setall("Value",20, "Textbox") Thisform.Refresh

Thisform.Command1.Click

(5)了解对象对事件的响应、容器层次与类层次中的事件发生情况以及事件的激发顺序。

对象对事件的响应:对象只会响应发生在该对象上的事件。如果某个对象没有指定事件 代码,它不会去执行容器的事件代码,而是在类的层次上寻找相关代码。

特例:命令按钮组和选项按钮组,它们里面的子对象如果没有写相应的事件代码,则会 执行该容器的事件代码,而只要它们的子对象有代码,则肯定会执行自身的代码。

事件的激发顺序:

表单:Load→Init(子对象)→Init(表单)→Activate→Destroy→Unload 焦点:When(得到焦点之前)→Gotfocus→Valid(失去焦点之前)→Lostfocus

(6)了解最小事件集和核心事件集。

最小事件集:所有基类均能识别的事件(Init→Destroy→Error)

核心事件集:所有对象都能识别的事件,常见事件

138 Visual FoxPro 程序设计实训与考试指导(第二版)

Init(创建对象时发生)→Load→Destroy→Click→Dbclick→Rightclick→When→Valid→

Gotfocus→Lostfocus→Interactivechange(当对象的 value 属性值产生改变时发生)→Keypress

(键盘产生击键)→Error Timer(计时器控件特有事件)→Activate 注意 keypress 事件中的 keycode(按下键的键值)参数的作用。

(7)了解事件驱动和事件循环的概念。

事件驱动:当某个事件发生,从而导致跟事件同名的方法程序的运行。

建立事件循环:read events。

取消事件循环:clear events。

(8)掌握常用事件的方法。

常用方法:Addobject(向容器中添加对象)、Additem(Ctring,N)向列表框添加数据 项、Clear(清除列表框中的数据项,且只有当其数据源类型为“0—无”时有效)、Hide、

Refresh(当对象值发生改变,则需要刷新)、Release、Setfocus(可接受焦点对象设置焦 点)、Show(调用时会产生 Activate 事件)、Quit(终止程序运行)、Setall(可以对容器中的 所有对象或某一类对象的某个属性进行设置)。

常见属性:Activepage(页框对象所特有,该属性值决定第几个页面处于最上层)、

Alignment(对齐方式)、Autocenter(表单自动居中)、Autosize、Borderstyle(边框样式)、

Boundcolumn(该属性决定列表框和组合框的第几列与其 value 属性绑定)、Closeble(决定 关闭按钮是否可用)、Controlbox(决定表单是否有标题图标和右边的按钮)、Maxbutton、

Minbutton、Cancel、Default、Readonly(当该属性为真,控件数据只读,可接受焦点)、

Enabled(当该属性为假,该控件只读且不能接受焦点)、Name(引用对象时的名字)、

Caption(对象的标题)、Passwordchar(设置口令字符)、Wordwrap(文本框是否多行显 示)、Interval(计时器控件的 timer 事件响应的事件间隔,以毫秒为单位)、Sorted(列表框 和组合框内容是否自动排序)、Value(控件中的当前值,所有数据绑定型控件所具有)、

Increment(微调控件在鼠标单击时每次改变的增量)、Multiselect(列表框是否支持多行选 定)、Curvature(形状控件的曲率 0 直角~99 圆)

2.表单及其使用

(1)掌握表单向导和表单设计器的使用。

表单设计器工具栏、表单控件工具栏、布局工具栏、属性窗口、表单设计器主窗口 属性窗口:对象列表(用来选择表单所包含的对象)。

(2)掌握表单数据环境的设置。

数据环境的作用:表单运行时,自动打开表单所基于的表,在表单退出时,自动关闭表。

打开数据环境:表单设计器中右击,在快捷菜单中选择。

数据环境中的操作:添加表和视图、移去表和视图。

建立表之间的临时关系:从一张表的某个字段拖放到另一张表的某个字段。

特别注意:在一对多的表单数据环境中,一定要建立它们之间的临时关系。

设置表和视图的属性:alias,readonly,order,filter,exclusive 数据环境对象的名称:dataevironment、relation、cursor 通过数据环境创建对象:(直接通过拖放实现)

拖放数据 对象 整个表 表格

逻辑字段 复选框+标签

备注字段 编辑框+标签

通用字段 图象框+标签

其他类型字段 文本框+标签

(3)掌握在表单中和在容器中添加、删除对象的方法。

在容器中添加对象时需要注意:首先要进入容器对象的编辑状态(选定对象,在快捷菜 单中选择编辑)。例如:向表格的列控件中添加其他控件。

(4)掌握在表单设计器中设置表单及表单中对象的属性方法。

设置多个对象的相同属性:选定多个对象(按住 shift,单击需要选定的对象)

对象大小的统一、对齐,还可以利用布局工具栏。

(5)掌握在表单设计器中编辑表单及表单中对象的事件处理程序代码和方法程序代码 的方法。

打开代码编辑窗口:在窗口中,要先选定对象,再选定方法程序的名字。

注意代码的位置不要出错。

(6)掌握表单的运行,向表单传递参数,从表单返回值。

表单的运行:DO FORM 表单文件名 向表单传递参数:

1)给表单添加新的属性(将作为全局变量,在各控件代码中传递)。 2)在表单的 INIT 事件中,输入代码:

parameters 参数列表 &&表单需要从外部接受参数 表单的新属性=参数 &&将参数值传递给表单的属性 3)在运行表单时,使用命令:

DO FORM 表单名 WITH 参数列表

(7)了解单文档和多文档界面。

单文档界面:整个应用程序由一个窗口组成。

多文档界面:整个应用程序由多个窗口组成。

顶层表单:独立的、无父表单、无模式的表单。

浮动表单:由子表单变化来的,包含于父表单,但可以不位于父表单中。

子表单:包含在其他表单中的表单,它不能移出父表单。

showwindow:当属性值为 2 时,该表单为顶层表单。

desktop:.t. 表示该表单可位于屏幕任何位置 (浮动表单)

.f. 表示该表单只能位于父表单中 (子表单)

3.常用控件的应用

根据控件与数据的关系:数据绑定型控件、非数据绑定型控件。

(1)标签(Label)用来显示说明文字的,不能接受光标,也不能修改其数据,但可以 通过代码修改,它是非数据绑定型控件。

140 Visual FoxPro 程序设计实训与考试指导(第二版)

Gotfocus:此事件之前发生 When 事件 Lostfocus:此事件之前发生 Valid 事件 Click

属性 事件

142 Visual FoxPro 程序设计实训与考试指导(第二版)

Boundcolumn:决定第几列数据和其 Value 属性绑定 Value:该控件被选定的行的值

例如:This.column2. dynamicfontsize="iif(cj.cj<60,14,9)" &&该属性为字符型 列标头:

(10)微调控件:spinner 用来显示、输入或修改数值型数据或字段。数据绑定型控

(1)设置访问键:在对象的 Caption 属性中加入“\<字母”,表示用 Alt+字母可以实现 该控件的单击。

(2)TAB 键的次序:决定表单中 TAB 键改变光标位置时的光标移动顺序。在表单设计 器 中 , 通 过 “ 查 看 ” 菜 单 的 TAB 键 次 序 来 设 置 , 也 可 在 属 性 窗 口 通 过 修 改 控 件 的 TABINDEX 属性来设置。

144 Visual FoxPro 程序设计实训与考试指导(第二版)

(3)启用和停用控件:通过对控件的 Enabled 属性设置。

Enabled .f. 不能接受光标,也不能修改数据 Readonly .t. 能接受光标,但不能修改 2.6.2 习题 6 及参考解答

一、选择题

1.下面关于表单控件基本操作的叙述中,不正确的是( )。

A.要在“表单控件”工具栏中显示某个类库文件中自定义类,可以单击工具栏中 的“查看类”按钮,然后在弹出的菜单中选择“添加”命令

B.要在表单中复制某个控件,可以按住 Ctrl 键并拖放该控件

C.要使表单中所有被选控件具有相同的大小,可单击“布局”工具栏中的“相同大 小”按钮

D.要将某个控件的 Tab 序号设置为 1,可在进入 Tab 键次序交互式设置状态后,双 击控件的 Tab 键次序盒

2.在对象的“相对引用”中,可使用的关键字有( )。

2.在对象的“相对引用”中,可使用的关键字有( )。

相關文件