第九.十章 VFP面向对象的程序设计(表单设计)
要点:面向对象程序设计的基本概念、表单的控件对象的属性和程序代码设计
1. 面向对象程序设计方法
1)面向对象(OOP)程序设计的概念:是将数据与过程(方法、事件)封装在对象中,围绕对象进行程序设计.
2)对象
(1)概念:是数据和操作数据的一组代码(程序)或过程的封装,将封装体看成是一个实体(对象)。VFP 的对象有:窗口(表单)、表格、命令按钮等(两类:容器对象、控件对象)。
(2)对象的引用:(程序设计中引用的语法规则)
●绝对引用:格式:对象名1.对象名2
例:表单名:FORM1,命令按钮名COMMAND1,命令按钮引用:
FORM1. COMMAND1.CAPTION=”确定”
●相对引用:This 该对象本身
Thisform 该对象本身所在表单
Parent 该对象本身的直接容器
上例:命令按钮引用:
THISFORM. COMMAND1.CAPTION=”确定”
THIS.CAPTION=”确定”
THIS.parent. COMMAND2.CAPTION=”退出”
说明:一个表单文件含一个表单,表单对象名是表单文件名,MYForm是“MYForm.scx”
一个表单文件含多个表单(表单集),表单对象名是表单名(name下的名字)
3)类
(1) 概念:一组对象的抽象定义,一个类的对象含有某些共同的行为及特性
(2) 类的使用:系统类(基类(控件类、容器类)、基础类、向导类)、用户类(用户设计)
4)属性
(1)概念:对象特征描述,如:大小、颜、位置等。
(2)表单常用属性:
属性 说明
Caption 表单的标题
Name 表单对象名
Top 表单顶部到VFP主窗口距离
Height 表单的高
Width 表单的宽
重点:区别Caption与Name。
(3)属性的设计及引用
①在属性窗口中设计(全部、数据、方法程序、布局、其他)
②在程序代码中引用格式:对象名.属性名=值(属性代码)
例:THISFORM.COMMAND1.Caption=”确定”
THISFORM.COMMAND1.Visible=.T.
THISFORM.COMMAND1.Height=30
THISFORM.COMMAND1.Width=70
注意:习惯上静态属性用属性窗口,动态属性用事件代码。
5)方法
(1)概念:使对象作出响应的操作程序代码
(2)表单常用方法程序
方法 说明
Line 表单上画线
Hide 隐藏表单
Show 显示表单
Refresh 刷新表单上控件的值
Release 退出表单
(3)调用方法:格式:对象名.方法名(方法代码)
例:释放当前表单:lease
表单画线: thisform.line(x1,y1,x2,y2)
6)事件
(1)概念:由用户或系统激活的特定动作,如鼠标的单击、双击等。
(2)VFP常用事件
事件 说明
Click 鼠标单击时发生
DbClick 鼠标双击时
Init 对象的初始化设置时
KeyPress 用户按下并离开键盘时
InterActiveChange 改变控件值时发生
RightClick 鼠标右击时
7)事件驱动编程
(1)概念:选择对象的事件,在事件下编写程序代码。用户操作对象(事件发生),事件的过程代码自动执行。
编程方法:●在表单双击对象/选过程中事件/编写代码
●属性框(下拉列表)选对象/选过程方法/编写代码
注:时间的代码窗口包括:
1) 属性代码
2) 方法代码
3) 所有的VFP命令代码(九十以前的)
2.表单设计与运行
1)表单的概念:是Windows的窗口,是一个容器对象,包容各种控件、数据环境及相关程序。
2)表单设计步骤:
创建表单、设置数据环境、添加控件、设置对象的属性或方法、编写程序代码。
(1)表单的创建(项目管理器、文件菜单、程序、向导、CREAT FORM)
①表单向导:文件/新建/表单/向导 (快捷、形式单一)
②表单设计器:文件/新建/表单/新建文件(形式多样、常用)
表单设计器相关组成:(演示)
表单界面、数据环境、表单控件、表单设计工具栏、属性窗口
(2)设置数据环境
概念:表单所要操作的数据源(如表随表单一起打开)。
包括:数据库、自由表、视图、关系
方法:表单空白处击右键/数据环境(数据环境空白处和表的快捷菜单)
内容:添加表、浏览表、创建表的关系。
(3)设置对象属性
方法:在表单中添加并激活控件对象,属性框出现该控件的相关属性(常用:数据、布局)
3)表单运行及编辑
(1)表单运行
●快捷菜单:右键/运行表单
●命令窗口:DO FORM <路径\表单名>
●项目管理器:(文件/打开/项目)文档/选表单名/运行
●可执行文件:双击
(2)表单编辑
●菜单:文件/打开/文件类型/表单/选表单名/确定
●项目管理器:(文件/打开/项目)文档/选表单名/修改
●命令窗口:MODI FORM <表单名>
4)表单控件设计
--设计对话功能强大,美观实用的用户界面
设计步骤:
①鼠标单击表单控件框的控件/在表单上画控件
弹出窗口代码编写②设置控件对象的属性
③双击控件对象/选“过程:”驱动事件/输入程序代码(或属性框双击方法程序中事件)
控件对象:(依顺序)
(1)标签:显示信息说明,如字段名称、标题。
常用属性:Caption(文本内容)、Fontname(字体)、Fontsize(字体大小)
(2)文本框:输入/输出数据,如字段值、内存变量值。
常用属性:Fontname(字体)、Fontsize(字体大小)、ControlSource(数据源)、PasswordChar(口令标记)、readonly(只读)
(3)编辑框:处理长文本,如备注字段,允许换行。
常用属性:Scrollbar(是否有滚动条)、MaxLength(允许字符长度,0没有限制)
(4)命令按钮/命令按钮组:用Click执行操作命令,如“确定”/“退出”
常用属性:Caption(命令名称)、Enabled(是否可用)、buttoncount(按钮数目)
例:设计可以上下翻动记录的表单。步骤:
1) 创建表单。
2) 设置数据环境,拖动数据环境中的字段到表单(有学号、姓名等)。
3) 用表单控件设计三个按钮、一个标签(标题)。
4) 编写程序。
5) 运行表单。
1)属性设计
对象 名称 属性 值
标签 lb1 caption 学生信息查询系统
标签 lb2 caption 条件:
命令按钮 COM1 caption 显示
命令按钮 COM2 caption 退出
命令按钮 COM3 caption 上一条
命令按钮 COM4 caption 下一条
注:对象名称在“属性框/其他”中设计
2)代码设计
COM2(退出)的Click事件:
lease
COM3(上一条)的 Click事件:
if !bof()
skip -1
fresh()
endif
COM4(下一条)的 Click事件:
if !eof()
skip 1
fresh()
endif
问题:上/下一条省略if !bof()/eof(),情况怎样?
补充:命令按钮常用的信息框函数(messagebox())P203
“退出系统”的CLICK事件代码:
a=messagebox(“你确实要退出系统吗?”,4+16+0,”对话窗口”) &&返回6或7
if a=6
release thisform &&如果击“是”,释放表单
endif
其中第一行给出三个信息:
1) 该函数弹出一信息窗口。
2) 该窗口用户可操作。(“是”、“否”)
3) 操作(函数返回值)结果给一内存变量变量赋值。(是:a=6,否:a=7)
关于“4+16+0”击函数返回值的意义,看P203的表10-14,10-15,10-16,10-17
(5)选项按钮组:作单项选择的一组按钮(容器)
常用属性:Caption(命令名称)、buttoncount(按钮数目)、Value(按钮的状态:1选中,0未选)
例:设计查询表单如下:(选男(或女),显示男(或女)同学)
注意:单选按钮组作为容器,需击右键/编辑后,才能设计属性和程序。
1)属性设计
对象 名称 属性 值
标签 lb1 caption 学生信息查询系统
标签 lb2 caption 条件:
单选按钮 option1 caption 男
单选按钮 option2 caption 女
命令按钮 COM1 caption 显示
命令按钮 COM2 caption 退出
2)代码设计
COM1(显示)的Click事件:
do case
case thisform.optiongroup1.option1.value=1
brow for 性别="男"
case thisform.optiongroup1.option2.value=1
brow for 性别="女"
endcase
fresh()
COM2(退出)的Click事件:
release thisform
(6)复选框:可选一个、多个、全部。
常用属性:Caption(命令名称)、Value(按钮的状态:1选中,0未选,2以上或NULL不能用)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论