第九章 表单 ( form ) 和面向对象的程序设计

67
第第第 第第FORM 第第第第第第第第第第 9.2 第第第第第第第“第第”VFP 第第第第 9.1 第第第第第第第 9.3 第第第第第第第第第 9.4 第第第第第第第第第第Template)

Upload: isha

Post on 29-Jan-2016

160 views

Category:

Documents


0 download

DESCRIPTION

第九章 表单 ( FORM ) 和面向对象的程序设计. 9.1 表单及表单设计. 9.2 应用程序的组装“模块”: VFP 类与对象. 9.3 表单对象的应用实例. 9.4 设置表单或表单集模板( Template). 第十章 表单( FORM )和面向对象的程序设计 本章将介绍:表单、表单集的设计及应用;面向对象的程序设计; VFP 中的类和对象。. 9.1 表单及表单设计. 表单又叫“窗体”,提供给用户一个对数据查看、输入的屏幕“界面”;提供了一个能适应用户事件和系统事件的强有力的对象集,使用户能方便地完成信息管理任务。. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第九章  表单 ( FORM ) 和面向对象的程序设计

第九章 表单( FORM )和面向对象的程序设计

9.2 应用程序的组装“模块”: VFP 类与对象

9.1 表单及表单设计

9.3 表单对象的应用实例

9.4 设置表单或表单集模板( Template)

Page 2: 第九章  表单 ( FORM ) 和面向对象的程序设计

9.1 表单及表单设计

表单又叫“窗体”,提供给用户一个对数据查看、输入的屏幕“界面”;提供了一个能适应用户事件和系统事件的强有力的对象集,使用户能方便地完成信息管理任务。

一、表单的类型1 .从创建单文档和多文档界面来分表单类型

在 VFP 中有两种应用程序界面:

多文档界面 (MDI)

单文档界面 (SDI)

第十章 表单( FORM )和面向对象的程序设计本章将介绍:表单、表单集的设计及应用;面向对象的程序设计;VFP 中的类和对象。

Page 3: 第九章  表单 ( FORM ) 和面向对象的程序设计

多文档界面 (MDI) :由单一的主窗口组成,其它应用程序窗口在主窗口中或浮动在主窗口之上。 VFP 本身就是一个 MDI 的窗口,包含了命令窗口,编辑窗口和设计窗口等。

单文档界面 (SDI) :由一个或多个相互独立的窗口组成,这些窗口单独显示。

但也有一些应用程序综合了 SDI 和 MDI 的特性,需要将 SDI 和 MDI 混合使用。例如, VFP 将调试器显示为一 SDI 应用程序,而它本身又包含了自己的 MDI 窗口

Page 4: 第九章  表单 ( FORM ) 和面向对象的程序设计

为了支持这两种类型的界面, VFP 允许创建以下几种类型的表单:

子表单( Child Form) :用于创建 MDI 窗口中一个表单,子表单不可移至父表单 ( 主表单 ) 边界之外,当其最小化时将显示在 MDI窗口的底部。如主窗口最小化时,它也一同最小化。

浮动表单( Floating Form) :属于一主表单,但并不是包含在主表单中,它可以移至屏幕的任何位置,但不能在主窗口后台移动。最小化时,它将显示在桌面的底部。当 MDI 最小化,一同最小化。

顶层表单( Top-leve form) :没有父表单的独立表单,用于创建一个 SDI 应用程序,或用作 MDI 应用程序中其它子表单的父表单。顶层表单与其他 Windows 应用程序同级,可出现在其前台或后台,并且显示在 Windows 任务栏中。

Page 5: 第九章  表单 ( FORM ) 和面向对象的程序设计

表单类型 ShowWindow 属性 MDIForm Desktop

主表单 2- 作为顶层表单 .F. .F.

子表单 0- 在屏幕中 .T. 最大化时子表单和父表单相连 .F.

1- 在顶层表单中 .F. 最大化时子窗口为分开窗口

浮动表单 0- 在屏幕中 .F.

2- 作为顶层表单 .T.

设置表单的下同类型:

表单在新建立时方法都是一样的,只有通过更改表单的属性可以将表单设置为所需的类型

1 、 新建三个表单,其属性设置如下:

Page 6: 第九章  表单 ( FORM ) 和面向对象的程序设计

表单文件名 caption showwindows name MidForm Desktop

1 、 MdiForm.scx Mdi 表单 2- 作为顶层表单 frmMDI .F. .F.

2 、 ChilsForm.scx 子表单 1- 在顶层表单中 frmchlid .T. .F.

3 、 FloatForm.scx 浮动表单 0- 在屏幕中 frmfloat .F. .T.

2 、修改表单,在表单文件 MdiForm.scx 中添加二个命令按钮:其一 Caption 分别为“显示子菜单”,代码为 DO Form ChildForm.scx, 另一为“显示浮动菜单”,代码为 DO Form FloatForm.scx

三类表单演示操作

让我们进行演示 , 建立三个表单,分别为: MDIform. scx 、 Childform . scx 、 loatForm . scx

Page 7: 第九章  表单 ( FORM ) 和面向对象的程序设计

作为数据(库)表数据信息的输入、输出显示屏幕的界面

Page 8: 第九章  表单 ( FORM ) 和面向对象的程序设计

2 、从表单用途分类,主要有以下两类:

作为应用程序主屏幕(主采单)的界面

Page 9: 第九章  表单 ( FORM ) 和面向对象的程序设计

文档管理信息系统

输入 修改 检索 删除 打印、显示 退出

按分类号

按分类号

按文档名

按任意条件

按分类号

按任意条件

打印全部卡片

打印登记报表

显示全部卡片

表单设计主菜单

表单设计的各种界面

Page 10: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 11: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 12: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 13: 第九章  表单 ( FORM ) 和面向对象的程序设计

三个表单

Page 14: 第九章  表单 ( FORM ) 和面向对象的程序设计

二、创建表单及表单集

方法:

• 文件菜单笺—新建—表单—新文件(或向导)

• 顶目管理器—文档—表单—新建

即可进入表单设计器

常使用表单向导( Form Wizard )或表单设计器( Form Designer )来新建表单。

1 、在表单设计器中用户自已设计表单

Page 15: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 16: 第九章  表单 ( FORM ) 和面向对象的程序设计

2 、使用向导建立新表单

在表单向导对话框中,按提示(与使用其它向导一样)一步步选择完成。

Page 17: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 18: 第九章  表单 ( FORM ) 和面向对象的程序设计

3 、扩展表单为表单集

表单集是由一个或多个表单组成,可以作为一个整体单元操作,可以同时显示或隐蔽全部表单。建立了一个表单集便可以对它添加多个表单。

( 1 )建立表单集方法:先建立一个表单,然后在“表单” 菜单中选择“创建表单集” (Create Formset)即建立了一个表单集。

( 2 )添加和移除表单:可从“表单” (Form) 菜单选“添加新表单” (Add New Form) 。为从表单集去掉一个表单,可以在表单设计器底部的“表单” (Form)框选择表单,然后从“表单” (Form) 菜单选“移除表单” (Remove Form) 。

( 3 )移除一个表单集:可从表单 (Form) “菜单选 移除表单”集 (Remove Formset)。

Page 19: 第九章  表单 ( FORM ) 和面向对象的程序设计

四、创建表单集表单集是一个或多个表单的“父亲”容器。可对多个表单进

行统一管理和使用。

一、创建表单集

新建或打开一个已存在的表单,在主菜单笺“表单”中选”创建表单集”

Page 20: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 21: 第九章  表单 ( FORM ) 和面向对象的程序设计

二、添加、移除表单

在主菜单笺“表单”中选”添加表单”或“移除表单”

Page 22: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 23: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 24: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 25: 第九章  表单 ( FORM ) 和面向对象的程序设计

4 、设置数据环境

表单和表单集的数据源:表 (Tables) 和视图 (Views) ,以及表之间的关系,用数据环境设计器来添加。

在属性窗口中一般的数据环境属性设置如下:

属性 描述 缺省设置

AutoCloseTables 当表或表单集释放时,控制是否表和 真 (.T.)

视图被关闭

AutoOpenTables 当表单运行时,控制数据环境中的表 真 (.T.)

和视图是否打开

InitialSelectedAlias 当表单运行时,所选择的表或视图 在设计时,如果没有指定,则选定在运行时第一个加到数据环境的临时表

Page 26: 第九章  表单 ( FORM ) 和面向对象的程序设计

三、添加和操作表单对象

步骤每个表单都有相应的属性、事件、方法。常用表单控制

工具栏、调色板工具栏、布局工具栏、属性窗口、数据环境等进行设计。设计一个表单的步骤:

( 1 )创建表单并设置表单的属性

( 2 )给表单添加适当的容器、控件

( 3 )设置容器、控件的属性

( 4 )编写事件代码

Page 27: 第九章  表单 ( FORM ) 和面向对象的程序设计

选定对象

查看类

标签

文本框

编辑框

命令按钮

命令按钮组

选项按钮组

复选

框 组合框

列表

框 微调控件

表格 图象

计时器

页框

Active控件绑定控

件 线条形状容器

分隔符

超级链接

生成器锁定

按钮锁定

通过“表单控制工具栏”添加对象到一个表单,对象可是:

(1)容器 (Container) (2) 控件 (Controls)

(3) 用户自定义 类 (4)OLE对象

1 、添加 VFP容器到表单:命令按钮组 (Command button group)

表格 (Grid)

选项按钮组 (Option button group)

页框 (Page frame)

Page 28: 第九章  表单 ( FORM ) 和面向对象的程序设计

2 、添加 VFP控件到表单:

复选框 (Check box) 、组合框 (Combo box) 、命令按钮 (Command button) 、编辑框 (Edit box) 、图像 (Image) 、标签 (Label) 、线条 (Line) 、列表框 (List box) 、 OLE绑定 型控件 (OLE Bound Control) 、 OLE容器控件 (OLE Container Control) 、形状 (Shape) 、微调控件 (Spinner) 、文本框 (Text box) 、记时器 (Timer) 。

Page 29: 第九章  表单 ( FORM ) 和面向对象的程序设计

功能和所选控件对应关系

功能类型 应该选择的控件

提供给用户预先设定的选择 选择按钮组、列表框和下拉列表框、复选框

接受 不能预先设定的用户输入 文本框、编辑框、组合框

接受 有一定值范围 的输入 微调

执行具有一定时间间隔的特定任务 计时器

显示信息 图像、标签 、文本框、编辑框、形状

Page 30: 第九章  表单 ( FORM ) 和面向对象的程序设计

操作练习:向表单添加控件

1 、图像、标签 、文本框、编辑框、形状 。

2 、用生成器锁定控 件、按钮锁定控 件给表单添加控件。

3 、按钮组、列表框和下拉列表框、复选框

4 、微调、计时器

Page 31: 第九章  表单 ( FORM ) 和面向对象的程序设计

9.2 面向应用程序的组装“模块” : VFP 类与对象

在学习表单设计中,通过上机实践对面对象的程序设计已有了一定的认识,下面以表所示来小结:面向对象方法与结构程序设计方法之区别:

设方式方法

计方式

数据显示方式

处理方式

使用方式

处理顺序

结构程序 面向对象程序

过程性( Process ) 对向性( Object )

显示型 隐藏型

单一程序编码 对象模块化

一次使用 可以重用

定位方式 非定位方式

Page 32: 第九章  表单 ( FORM ) 和面向对象的程序设计

设计方式

指对问题处理的程序设计方式。

1 、过程性的设计思想中

• 是针对问题采用顺序性的程序处理决问题。

• 采用逻辑概念设计程序文件。

• 在解决问题的过程中,常发生调用子过程程序文件。

2 、面向对象程序设计方法,是采用“对象”为设计思想中心。

• 不采用顺序性处理方式,对问题采用了对象本身的属性与方法来解决问题。 • 在处理问题过程中,可以直接在对象中设计事件程序,直接触发问题 。

Page 33: 第九章  表单 ( FORM ) 和面向对象的程序设计

一、 Visual FoxPro 中的对象

1 、 什么是对象?

对象是 VFP 程序的基本构造块,对象具有属性( Properties )、方法( Mathod )以及键盘、鼠标或程序触发等的事件程序,通过属性、事件和方法等等所组合而成的具体抽象实体,就称为对象。

而通过属性、事件和方法,可以实现一个对象的功能。2 、对象的属性、事件和方法

“ 属性”( Properties)封装了数据,每个对象都具有“属性”。 “属性”值可以在设计时设置,也可以在运行时更改,但有的“属性”是只读属性,不可改变。

“ 事件” (Events) 是预先定义 的动作,由用户或者系统激活。VFP 中的事件通常包括了键盘“事件”和鼠标“事件”,如单击或双击鼠标,移动鼠标、按键盘等(见 P247 )。

Page 34: 第九章  表单 ( FORM ) 和面向对象的程序设计

“ 方法”( methods )是指对象为实现一定功 能而编写的代码, “方法”和对象相连。事件中的代码可以认为是基于事件的响应方法。但“方法”是可以独立于事件的单独代码,必要时可以由其它方法或程序代码进行显示的调用。

事件通常已经预先由系统定义好 了,不能随便的扩充,而方法和属性却可以无限的扩展,事件的发生具 有一定的顺序,

如: load 和 click , load 在执行表单时就激活了,而 click在执行表单后需单击命令按钮才激活。

如:下例:

Page 35: 第九章  表单 ( FORM ) 和面向对象的程序设计

FORM( 事件 ): load

代码: thisform.backcolor=rgb(255,0,0)

Command( 事件 ):click

代码: thisform.label2.caption="abcdefg"

Page 36: 第九章  表单 ( FORM ) 和面向对象的程序设计

执行表单文件,立即 form 的背景为红色。

当单击 command1 , label1 的值才显示出来。

Page 37: 第九章  表单 ( FORM ) 和面向对象的程序设计

二、 Visual FoxPro 中的类

Visual FoxPro 中的对象的概念和类的概念是密切相关的,但是有区别的,类作为一个对象的整体定义 而存在,它是对象的轮廓和蓝图。

对象和类的关系就如同一台机床和图纸的关系,图纸决定了某一种类型的机床的功能和外观,而一台具体的机床可以看作一个对象而存在。某种类型的,根据机床的初始设计图可以设计出一个系列的机床产品图,这就如同由一个父类派生出若干子类一样,属于某个系列的某一台具体的机床可以看作是一个具体的对象。

所有对象的属性、事件、方法在定义 类时都将被指定。

类的三大特性:封装性、继承性、再分类性(子类)。

Page 38: 第九章  表单 ( FORM ) 和面向对象的程序设计

( 1 )封装性如一台电话只需一根电话

线连接就可以拨号使用,而不必去了解电话内部的设置。你看到的是电话类的一个对象,其内部的接收 、转换、电子信号的处理等复杂 性(属性、事件、方法)被隐藏了。

通过对事务的抽象,由类定义 的对象可以将自己内部的复杂 性封装起来。

封装就是指将对象的方法、属性代码包装在一起。

图 1电话

Page 39: 第九章  表单 ( FORM ) 和面向对象的程序设计

如下图所示,“电话”种类可以有很多种,但都具有基类电话的基本属性。即可从父电话类派生出一系列的子电话类,这些子类的形状虽然 有改变或新增加了一些属性(功能),但仍继承了父类的基本属性、事件和方法。

图 2

( 2 )继承性

子类可以继承父类的所有的属性和方法,也可根据需要加入新的属性和方法。

Page 40: 第九章  表单 ( FORM ) 和面向对象的程序设计

( 3 )再分类( SubClass )

意义 要于类( Class )本身可以不受层次的限制,往下扩展更多的类,让子类继承上一层类的方法,并且有其本身的属性与方法定义 。这样使程序编码减至最低。甚至在修改时,只需要修改其中一层的类,其子类( SubClass )均自动调整。增加维护效率。

如:IC产生掌 上型扫描仪,又将掌上型扫描仪某一功能板装至桌

上型扫描仪,最后又将桌上型扫描仪某一元件装至投影片扫描仪 。

Class :掌上型扫描仪 SubClass :桌上型扫描仪、投影片扫描仪

图 3

Page 41: 第九章  表单 ( FORM ) 和面向对象的程序设计

存贮该 新建的命令子类,用于表单中实现“退出” 功能。其代码及 caption 的属性“退出”都被封装,看不到了。而且继承了命令按钮类(父类)的原已有的属性等。

2 、类的创建、修改及使用

创建类有二种方法:用类设计器创建、通过写代码创建。

下面用类设计器来创建类(同时对类的三大特性进一步了解)

命令按钮类,

子类:代码: thisform.release

由它创建

创建:新建文件 类 新文件 类设计器保存:文件类型为类

修改:打开 类 类文件名 进入类设计器可修改。

例 1 :

Page 42: 第九章  表单 ( FORM ) 和面向对象的程序设计

例 2 :创建“电子查看”类

方法:新建表单 文件 另存为类。

if this.parent.label1.left+this.parent.label1.width>0

this.parent.label1.left=this.parent.label1.left-20

else

this.parent.label1.left=this.parent.shape1.width

endif 自定义类演示

Page 43: 第九章  表单 ( FORM ) 和面向对象的程序设计

将整个表单另成为

“电子查看”类(自定义 类),类文件名为 JZ.vcx

Page 44: 第九章  表单 ( FORM ) 和面向对象的程序设计

将生成的自定义 类添加到类库

Page 45: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 46: 第九章  表单 ( FORM ) 和面向对象的程序设计
Page 47: 第九章  表单 ( FORM ) 和面向对象的程序设计

操作: 1 、新建表单集,拖放 JZ到表单集( bdj.scx) ,双击“计时器”,看不到代码,被封装。

2 、执行结果,文本内容显示。

Page 48: 第九章  表单 ( FORM ) 和面向对象的程序设计

3 、打开 JZ 类进行修改:删除文本“文档管理信息系统”,再打开表单集 (bdj.scx) ,可见其类 (JZ.v cx) 自动被修改。

4 、以 JZ.vcx 为父类,创建子类 jzz.vcx 。(方法与例 1 同)

(可用例 1 建的类,代码: thisformset.release )

Page 49: 第九章  表单 ( FORM ) 和面向对象的程序设计

5 、拖放到表单集( BDJ.SCX)form2 中,增加文本

执行

Page 50: 第九章  表单 ( FORM ) 和面向对象的程序设计

三、类的层次

如书 P248

1 、 VFP 的基类和层次

书 P249

2 、容器 (container) 类和控件 (Control) 类

VFP 的类有两种主要类型:容器类和控件类。

( 1 )容器类容器类包含其它对象,并且允许访问这些对象。见表 9-8 列出

了各容器类所能包含的对象。

( 2 )控件类控件类的封装比容器类更为严密 , 但因此损失了一些灵活性。

控件类没有“ Addobject” 方法程序。(”没有增加对象“)

Page 51: 第九章  表单 ( FORM ) 和面向对象的程序设计

四、对象的处理

1 、在容器层次中引用对象

为处理一个对象,需要知道它相对于容器层次的关系。例如,如果要在表单集中处理一个表单的控件,则需要引用表单集、表单和控件。在其容器层次中引用对象好比给 VFP 提供这个对象的地址。

( 1 )绝对引用

通过提供对象的完整容器层次来引用它:命令: frsFormSet.frmForm1.cmdButton1

例:为了让表格列 (grid column) 中的控件不起作用,需要提供下面的地址:Formset.Form.PageFrame.Page.Grid.column.Control.Enabled=.F.

Page 52: 第九章  表单 ( FORM ) 和面向对象的程序设计

( 2 )相对引用

在容器层次中引用对象时,例如在表单集合中表单命令按钮的Click( 单击 ) 事件,可以通过快捷键方式指明所要处理的对象。下表列出了一些属性和关键字,这些属性和关键字允许更方便地从对象层次中引用对象。

属性或关键字 引用

Parent 该对象的直接容 器。

THIS 该对象。

THISFORM 包含该对象的表单。

THISFORMSET 包含该对象的表单集。

Page 53: 第九章  表单 ( FORM ) 和面向对象的程序设计

应用:命令 何处包含此命令

THISFORMSET.frm1.cmd1.Caption=ˊABCˊ 在此表单集合的任何表单上任何控件的事件或 方法码中。

THISFORM.cmd1.Caption=ˊABCˊ 在 cmd1 所在同样的表单上任何 控件的事件或方 法代码中。

THIS.Caption=ˊABCˊ 在 需 要 改变标题 (caption) 的控件的事件或方法代码中。

THIS.Parent.Back Color=RGB(192,0,0) 在表单上一个控件的事件或方法代码中,此命 令改变表单的背景颜色为暗红色。

Page 54: 第九章  表单 ( FORM ) 和面向对象的程序设计

2 、设置属性

语法: Parent.Object.Property=Value ( 即:父 . 对象 . 属性=值 )

设置多个属性语法: WITH…ENDWITH

例如,在表单集的一个表单中,要设置表格列的多个属性,可以使用如下语法结构:

WITH frsFormSet1.frmForm1.grdGrid1.grcColumn1.width=5

.Resizable=.F.

.ForeColor=RGB(0,0,0)

.BackColor=RGB(255,255,255,)

.SelectOnEntry=.T.

ENDWITH

Page 55: 第九章  表单 ( FORM ) 和面向对象的程序设计

3 、调用方法

一旦对象被建立,就可以在应用程序的任何一个地方调用此对象的方法。调用方法的语法如下:

Parent.Object.Method (即:父 . 对象 . 方法 )

例:调用显示一个表单的方法:

frsFormset.frmForm1.Show4 、响应事件

当事件发生时,该事件的过程代码将被执行。

系统响应用户动作时,事件将被自动触发。例如,当用户单击一个控件时,系统自动执行为 Click 事件编写的代码。事件代码也能由系统事件触发,例如在计时器控件中的 Timer 事件。

Page 56: 第九章  表单 ( FORM ) 和面向对象的程序设计

1 .核心事件

下表列举 了 VFP 的核心事件集,并适用于多数控件:

事件 激发后动作

Load 表单或表单集被加载进内存。

Unload 表单或表单集从内存中释放。

Init 对象被创建。

Destroy 对象从内存中释放。

Click 用户用主鼠标按钮单击对象。

DblClick 用户用主鼠标按钮双击对象。

RightClick 用户用辅 (右 )鼠标按钮单击对象。

GotFocus 对象接收焦点 ,由用户动作 ( 如按 Tab键和单击 ) ,或者在代

码中使用 SetFocus 方法引起。

Page 57: 第九章  表单 ( FORM ) 和面向对象的程序设计

LostFocus 对象失去焦点,由用户动作 ( 如按 Tab键和单击 ) ,或者在代

码中使用 SetFocus 方法引起。

KeyPress 用户按下或释放一个键。

MouseDown 当鼠标指针停 在一个对象上时用户按下鼠标按钮。

MouseMove 用户在对象上移动鼠标。

MouseUp 当鼠标指针停 在一个对象上时用户释放鼠标按钮。

InteractiveChange 交互式改变对象值。

ProgrammaticChange 可编程地改变对象值。

2 . VFP 事件顺序

见 P254

Page 58: 第九章  表单 ( FORM ) 和面向对象的程序设计

3 、编写事件代码每个对象(控件)都可进行属性、事件、方法的设置,现在学习如何定义 事件、如何给控件写入方法代码。

例题 1 :设置表单 1 (背景练习):其中有三个命令按钮控件,作用分别为单击 COMMAND1 时,表单 1 的背景图改变,单击 COMMAND2 时,表单 1 的背景图又被改变,单击 COMMAND3 时 ,释放表单(关闭表单)。

Page 59: 第九章  表单 ( FORM ) 和面向对象的程序设计

方法代码

thisform.picture="c:\program files\microsoft visual studio\vfp98\fox.bmp"

thisform.picture="c:\program files\microsoft visual studio\vfp98\wizards\wizstone.bmp"

thisform.release

事件 :click背景练习

Page 60: 第九章  表单 ( FORM ) 和面向对象的程序设计

例题 2 :登录表单

Page 61: 第九章  表单 ( FORM ) 和面向对象的程序设计

If thisform.text1.value="12345".and.thisform.text2.value="abc"

do 文档管理信息系统 .scx

else

messagebox(" 口令或用户名有错,请重输入! ",0," 提示 ")

thisform.text1.setfocus

endif thisform.text1.value=" "

thisform.text2.value=" "

thisform.text1.setfocus

thisform.release登录表单演示

Page 62: 第九章  表单 ( FORM ) 和面向对象的程序设计

4 、面向对象程序语法 (OOP)

<object>.<Properties/Methed>=<Define/Result>

如: thisform.text1.value=“12345”.and.thisform.text2.value=

"abc"

thisform.picture="c:\program files\microsoft visual studio\vfp98\fox.bmp"

对象 对象的属性或方式 定义 或结果

Page 63: 第九章  表单 ( FORM ) 和面向对象的程序设计

5 、 信息窗口的送出使用了函数 MessageBox(), 其语法如下:

MESSAGEBOX (cMessageText [,nDialogBoxTyoe [,cTitleBarText]] )

第一个参数:为定义 信息窗口提示内容。

第二个参数:为定义 信息窗口按钮组合与图标( Icon) 样式的数据,一般为两个数字间以“ +”串联。第一个数字为信息窗口按钮组合,第二个为图标 Icon 类别。如 4+48 ,表示按钮组合为“是”以及“否”, 48 为警叹号。

第三个参数:为信息窗口标题 Caption内容定义 。例如: MESSAGEBOX ("请输入学号 ",4+48," 信息窗口 ")

Page 64: 第九章  表单 ( FORM ) 和面向对象的程序设计

运行例 2登录表单 , 按确定按钮后 ( 口令和登录姓名错 ) 的显示:Messagebox(" 口令或用户名有错,请重输入! ",0," 提

示 ")

Messagebox(" 口令或用户名有错,请重输入! ",2," 提示 ")

Messagebox(" 口令或用户名有错,请重输入! ",1," 提示 ")

Page 65: 第九章  表单 ( FORM ) 和面向对象的程序设计

表单( Form )或表单集( Formset) 对象常用语句:

Thisform.release 表单释放

Thisform.refresh 表单刷新

Thisform.hide 表单隐藏(对表单集中的一个表单)

thisform.parent.form1.show 表单显示(对表单集中的一个表单)

Page 66: 第九章  表单 ( FORM ) 和面向对象的程序设计

9.3 表单对象的应用实例

见 P264 大学生通用习题测试系统

Page 67: 第九章  表单 ( FORM ) 和面向对象的程序设计

9.4 设置表单或表单集模板( Template)

见 P274