680 likes | 901 Views
第 8 章 表单设计与应用. 本章要点. 面向对象的概念 , 对象与类、子类与继承 Visual FoxPro 基类、容器与控件、事件 创建表单、修改已有的表单、运行表单、管理表单属性和方法、表单常用事件与方法 表单设计器、表单控件、数据环境以及在数据环境中操作 常用的表单控件. 8.1 面向对象的概念. 8.1.1 对象与类. 1 .对象( Object ) 定义: 对象( Object )可以是任何的具体事物,反映客观事物属性及其行为特征的描述。 2 .对象方法( Method ) 定义: 对象方法( Method )是对象可执行的动作。.
E N D
本章要点 • 面向对象的概念,对象与类、子类与继承 • Visual FoxPro基类、容器与控件、事件 • 创建表单、修改已有的表单、运行表单、管理表单属性和方法、表单常用事件与方法 • 表单设计器、表单控件、数据环境以及在数据环境中操作 • 常用的表单控件
8.1.1 对象与类 • 1.对象(Object) • 定义: • 对象(Object)可以是任何的具体事物,反映客观事物属性及其行为特征的描述。 • 2.对象方法(Method) • 定义: • 对象方法(Method)是对象可执行的动作。
3.类(Class) • 定义: • 类(Class)是定义了对象特征以及对象外观和行为的模板,用户可根据类创建对象。 • 类可以由已存在的类派生而来,类之间是一种层次结构,处于上层的类称为父类,处于下层的类称为派生类。 • 类的继承方式: • 单一继承 • 多重继承
8.1.2 子类与继承 • 1.子类 • 特点: • 子类是以其他类定义为起点,为某一种对象所建立的新类。 • 子类将继承任何对父类所做的修改。 • 继承性 • 继承性表示子类延用父类特征的能力。如果父类特征发生改变,则子类将继承这些新特征。
8.2.1 Visual FoxPro基类 • 1.VFP基类 • 定义: • VFP基类是系统本身包含的,并不存放在某个类库中。用户可以基于基类生成所需要的对象,也可以扩展基类创建自己的类。
8.2.2 容器与控件 • 1.VFP类的分类 • 容器类 • 控件类(也称为非容器类) • 2.容器类和容器类所包容的对象 • 表单集 • 包括表单、工具栏。 • 表单 • 包括任意控件以及页框、Container对象、命令按钮组、选项按钮组、表格等对象。
表格 • 包括列。 • 列 • 包括标头和除表单集、表单、工具栏、定时器及其他列之外的任意对象。 • 页框 • 包括页。 • 页 • 包括任意控件以及Container对象、命令按钮组、选项按钮组、表格等对象。
命令按钮组 • 包括命令按钮。 • 选项按钮组 • 包括选项按钮。 • Container对象 • 包括任意按钮以及页框、命令按钮组、表格等对象。 • 3.属性或关键字 • Parent:当前对象的直接容器对象。 • This:当前对象。 • ThisForm:当前对象所在的表单。 • ThisFormSet:当前对象所在的表单集。
8.2.3 事件 • 1.定义: • 事件(Event)是由对象识别和响应的某些操作。事件集是固定的。用户不能定义新的事件。 • 2.最小事件集: • Init:当对象生成时引发。 • Destroy:当对象从内存中释放时引发。 • Error:当方法或事件代码出现运行错误时引发。
8.3.1 表单类型 • 1.应用程序的类型: • 多文档界面 • 单文档界面 • 2.表单类型: • 子表单 • 浮动表单 • 顶层表单
3.ShowWindow属性值的含义: • 0——在屏幕中(默认)。为子表单并且它的父表单为VFP主窗口。 • 1——在顶层表单中。当子窗口显示时,子表单的父表单是活动的顶层表单。使用Desktop属性可以设置表单是否在VFP主窗口中。如果该属性值为真,则表单在桌面的任何位置;如果该属性值为假,则表单在VFP主窗口中。
8.3.2 创建表单 • 1.方法: • 使用表单向导创建表单 • 使用表单设计器建立表单 • 使用命令方式创建表单 • 在命令窗口输入CREATE FORM <表单名>.SCX • 使用表单生成器创建表单 • 2.修改已有的表单
2.修改已有的表单 • 方法: • 选择“项目管理器”窗口中的“文档”选项卡。 • 如果表单类文件没有展开,单击“表单”图标左边的加号将表单文件展开。 • 选择需要修改的表单,单击“修改”按钮。 • 在命令窗口中使用MODIFY FROM <表单>.SCX命令修改表单。
3.运行表单 • 方法: • 在项目管理器窗口中,选择要运行的表单,单击窗口里的“运行”按钮。 • 在表单设计器环境下,选择“表单”菜单中的“执行表单”命令,或者单击标准工具栏上的“!”按钮。 • 选择“程序”菜单中的“运行”命令,打开“运行”对话框,选择要运行的表单并单击“运行”按钮。 • 在命令窗口中输入命令: • DO FROM <表单文件名>
8.3.3 管理表单属性和方法 • 1.常用的表单属性
2.为表单添加新属性和新方法 • 方法: • 首先打开“表单设计器”,然后选择系统菜单上的“表单”菜单中的“新建属性”命令,屏幕就会出现一个对话框。 • 可在“名称”文本框里输入新建的属性或方法名。 • 按下“添加”按钮就可以往表单里添加一个新属性或新方法。 • 打开“表单设计器”,然后选择系统菜单上的“表单”菜单中的“新建方法程序”命令,屏幕就会出现一个对话框。
3.编辑方法或事件代码 • 方法1: • 在表单设计器环境下,选择工具栏“显示”菜单下的“代码”命令,打开代码编辑对话框。 • 选择“对象”框中的方法或事件所属的对象(表单或表单中的控件)。 • 指定“过程”框中需要编辑的方法或事件。 • 在编辑区输入或修改方法或事件的代码。 • 方法2: • 双击表单或表单中的某个控件打开代码编辑窗口,这时“对象”框自动选中被双击的表单或控件。
8.3.4 常用事件与方法 • 1.常用的表单事件与方法
8.4.1表单设计器环境 • 1.表单设计器窗口 • “表单设计器”窗口内包含正在设计的表单的表单窗口,用户可以在表单窗口上可视化地添加和修改控件,表单窗口只能在“表单设计器”窗口下移动。 • 2.属性窗口 • “属性”窗口包括对象框、属性设置框和属性、方法、事件列表框。
3.表单控件工具栏 • 控件 • 选定对象 • 查看类 • 生成器锁定 • 按钮锁定 • 4.表单设计器工具栏 • 控件 • 设置Tab键次序 • 数据环境 • 属性窗口
代码窗口 • 表单控件工具栏 • 调色板工具栏 • 布局工具栏 • 表单生成器 • 自动格式 • 5.表单菜单 • 定义: • 表单菜单中的命令主要用于创建表单、编辑表单或表单集。
8.4.2 表单控件 • 1.控件的基本操作 • 选定控件 • 移动控件 • 调整控件的大小 • 复制控件 • 删除控件
2.控件布局 • 控件 • 利用“布局”工具栏中的按钮,可以很好地调整表单窗口中被选控件的相对大小或位置。 • 通过单击表单设计器工具栏上的“布局工具栏”按钮或选择“显示”菜单中的“布局工具栏”命令可以打开或关闭“布局”工具栏。
8.4.3 数据环境 • 1.打开数据环境设计器 • 方法: • 单击“表单设计器”工具栏上的“数据环境”按钮,选择“显示”菜单中的“数据环境”命令。 • 2.向数据环境中添加表 • 方法: • 选择“数据环境设计器”菜单中的“添加”命令;鼠标右键单击“数据环境设计器”窗口,然后在弹出的快捷菜单中选择“添加表”命令;在“打开”对话框中选择要添加的表,并单击“添加”按钮。
3.从数据环境中移去表或视图 • 方法: • 单击“表单设计器”工具栏上的“数据环境”按钮,选择“显示”菜单中的“数据环境”命令。 • 4.向数据环境中添加表 • 菜单方式: • 在“数据环境设计器”窗口中选择要移去的表或视图;在“数据环境”菜单项中选择“移去”。 • 快捷方式 • 用鼠标右键单击要移去的表或视图,然后在弹出的快捷菜单中选择“删除”命令。
5.在数据环境中编辑关系 • 方法: • 选择该关系(单击线条即可),然后单击鼠标右键在弹出的快捷菜单中选择“属性”,将弹出“属性”对话框,可以选择属性并设置。 • 6.向表单中添加表字段 • 方法: • 向表单中添加一个文本框,并且将文本框的ControlSource属性设置为某个表字段。 • 打开数据环境设计器,将—个字段直接拖到表单或页面上。 • 从数据环境设计器中将一个表直接拖动到表单或页面上。 • 使用表单生成器将字段添加到表单上。
8.5.1 标签(Label)控件 • 1.标签控件常用的属性 • Caption属性 • 指定标签的标题。为控件设置Caption属性时,可以将其中的某个字符作为访问键,方法是:在该字符前插入一个反斜杠和一个小于号(\<)。 • Alignment属性 • 指定标题在标签区域内显示的对齐方式。 • 0:(默认值)左对齐,文本显示在区域的左边。 • 1:右对齐,文本显示在区域的右边。 • 2:中央对齐,将标题居中排放,使左右两边的空白相等。
8.5.2命令按钮(CommandButton)控件 • 1.命令按钮控件常用的属性 • Caption属性 • 在按钮上显示的标题。 • Cancel属性 • “取消”按钮,默认值为.F.。 • Default属性 • “确定”按钮,默认值为.F.。 • Enabled属性 • 指定对象能否响应由用户引发的事件,默认值为.T.。 • Visible属性 • 指定对象是可见还是隐藏。
8.5.3命令组按钮(CommandGroup)控件 • 1.命令组按钮控件常用的属性 • ButtonCount属性 • 指定命令组中命令按钮的数目,默认值是2。 • Buttons属性 • 用于存取命令组中各按钮的数组。 • BackStyle属性 • 命令按钮组是否具有透明或不透明的背景。 • Value属性 • 当前选中的按钮的序号。 • Visible属性
8.5.4 文本框(TextBox)控件 • 1.文本框按钮控件常用的属性 • Alignment属性 • 文本框的内容是左对齐、右对齐、居中还是自动对齐。 • ControlSource属性 • 为文本框指定一个字段或内存变量。 • InputMask属性 • 指定每个字符输入时必须遵守的规则。 • PasswordChar属性 • 指定显示用户输入的是字符还是显示占位符。 (通常为*)
ReadOnly属性 • 文本框的文本只读。 • TabStop属性 • 用户能否用Tab键选择该控件。 • Value属性 • 返回文本框的当前内容。
例如,用表单设计一个登录界面,如图下所示,当用户输入用户名和口令后按确认键后,检验输入是否正确,(假设用户名为ABCDEF,口令为654321)如果输入正确,就显示“欢迎使用……”;如果输入不正确,显示“用户名或口令不对,请重输……”;如果三次输入都不正确,就显示“用户名或口令不对,登录失败!”并且关闭表单。例如,用表单设计一个登录界面,如图下所示,当用户输入用户名和口令后按确认键后,检验输入是否正确,(假设用户名为ABCDEF,口令为654321)如果输入正确,就显示“欢迎使用……”;如果输入不正确,显示“用户名或口令不对,请重输……”;如果三次输入都不正确,就显示“用户名或口令不对,登录失败!”并且关闭表单。
操作步骤如下: • (1)新建表单,然后在表单上添加两个标签、两个文本框和一个命令按钮 . • (2)用鼠标右键单击表单空白外,在弹出的属性窗口中分别设置两个标签和一个命令按钮的CAPTION属性为“用户名:”、“口令:”和“确认”。 • (3)将命令按钮“确认”的DEFAULT的属性值设置为.T.。 • (4)设置文本框TEXT2的INPUTMASK属性值,在设置框中直接输入999999或输入“999999”。 • (5)设置文本框TEXT2的PASSWORDCHAR属性为“*”。 • (6)选择“表单”下的“新建属性”命令,打开“新建属性”对话框,为表单添加新属性NUMC。在“属性”窗口中将默认值设置为0。
(7)用鼠标双击“确认”按钮,打开编辑事件代码窗口,在CLICK事件中输入下面的代码 : • If Thisform.Text1.Value="ABCDEF" And Thisform.Text2.Value="654321" • WAIT "欢迎使用……"WINDOW TIMEOUT 1 • THISFORM.RELEASE • ELSE • THISFORM.numc=THISFORM.numc+1 • if thisform.numc=3 • WAIT "用户名或口令不对,登录失败!"WINDOW TIMEOUT 1 • THISFORM.RELEASE • ELSE • WAIT "用户名或口令不对,请重输……"WINDOW TIMEOUT 1 • ENDIF • ENDIF
8.5.5 编辑框(EditBox)控件 • 1.编辑框按钮控件常用的属性 • AllowTabs属性 • 确定用户在编辑框里能否插入Tab键。 • HideSelection属性 • 确定编辑框中选定的文本在编辑框没有焦点时是否仍然显示被选定。 • ReadOnly属性 • 用户能否修改编辑框中的文本。 • ScrollBars属性 • 指编辑框是否具有垂直滚动条。
SelStart属性 • 返回用户在编辑框中所选文本的起始点位置或插入点位置。 • SelLength属性 • 返回用户在控件的文本输入区中所选定字符的数目。 • SelText属性 • 返回用户编辑区内选定的文本。
8.5.6复选框(CheckBox)控件 • 1.复选框按钮控件常用的属性 • Caption属性 • 指定显示在复选框旁边的文字。 • ControlSource属性 • 指定与复选框建立联系的数据源。 • Value属性 • 指明复选框的当前状态。 • 复选框的Value属性值的设置有以下三种情况。 • 0或.F.:(默认值),未被选中。 • 1或.T.:被选中。 • 2或.NULL.:不确定,只在代码中有效。
8.5.7选项组(OptionGroup)控件 • 1.选项组按钮控件常用的属性 • ControlSource属性 • 指定与选项组建立联系的数据源。 • ButtonCount属性 • 组中选项按钮的数目,默认值是2。 • Buttons属性 • 用于存取选项组中各按钮的数组。 • BackStyle属性 • 选项按钮组是否具有透明或不透明的背景。 • Value属性 • 用于指定选项组中哪个选项按钮被选中。
8.5.8列表框(ListBox)控件 • 1.列表框按钮控件常用的属性 • RowSourceType属性 • 指明列表框中条目数据源的类型 • RowSource属性 • 指定列表框的条目数据源。 • List属性 • 存取列表框中数据条目的字符串数组。 • ListCount属性 • 指明列表框中数据条目的数目。 • ColumnCount属性 • 指定列表框的列数。
Value属性 • 返回列表框中被选中的条目。 • ControlSource属性 • 通过该属性可以指定一个字段或变量用以保存从列表框中选择的结果。 • Selected属性 • 指定列表框内的某个条目是否处于选定状态。 • MultiSelect属性 • 指定能否在列表框内进行多重选定。 • 0或.F.:默认值,不允许多重选择。 • 1或.T.:允许多重选择,为选择多个条目,按住Ctrl键并用鼠标单击条目。
8.5.9组合框(ComboBox)控件 • 1.组合框与列表框的区别 • 组合框通常只显示一个条目。与列表框相比,组合框能够节省表单里的显示空间。 • 组合框没有MultiSelect属性,不提供多重选择的功能。 • 组合框有以下两种形式:下拉组合框、下拉列表框。设置Style属性可以选择想要的形式。 • 0:下拉组合框。用户既可以从列表中选择,也可以在编辑区内输入。 • 2:下拉列表框。用户只能从列表中选择。
例如,设计一个表单formtj,用来统计学生人数,如下图所示。其中,复选框、选项组和组合框(下拉列表框)用于统计条件;命令按钮执行统计;文本框用于显示统计结果。标签用于文字提示。学号字段的第三和第四位为专业代号。例如,设计一个表单formtj,用来统计学生人数,如下图所示。其中,复选框、选项组和组合框(下拉列表框)用于统计条件;命令按钮执行统计;文本框用于显示统计结果。标签用于文字提示。学号字段的第三和第四位为专业代号。