




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第第6 6章章 表单设计基础表单设计基础 w6.1 表单的基本操作 w6.2 面向对象程序设计基础 w6.3 表单设计器 w6.4 常用表单控件 2 6.1 表单的基本操作 表单(Form)是VFP提供的用于建立应用程序界面的最主要 的对象之一 ,相当于WINDOWS应用程序的窗口 。 表单的基本操作过程: v 创建表单 v 用表单设计器修改或新建表单 v 保存表单 v 运行表单 3 6.1.1 使用表单设计器创建或修改表单 1启动表单设计器 u在命令窗口输入命令: CREATE FORM 表单名 (创建) MODIFY FORM 表单名 (修改) 4 2表单设计器介绍 “表单设计器”窗口包含正在设计的表单,表单窗口只能在“ 表单设计器”窗口内移动。用户可在表单窗口中可视化地 添加和修改控件、改变控件布局。以新建方式启动表单设 计器时,系统将默认为用户创建一个空白表单。 6.1.1 使用表单设计器创建或修改表单 “对象”下拉列表框图(P182) 页框选项卡 属性设置框(P183) 5 3数据环境 “数据环境”指表单(或报表)所用的数据源,包括表、视 图和它们之间的关系。表单设计器环境下,单击“表单设计 器”工具栏上的“数据环境”按钮,或选择“显示”“数据环 境”命令,即可打开“数据环境设计器”窗口,此时,系统菜单 栏上将出现“数据环境”菜单。 6.1.1 使用表单设计器创建或修改表单 6 6.1.1 使用表单设计器创建或修改表单 4快速表单 能在表单窗口为当前表单迅速产生选定的字段变量, 调用“表单生成器”来完成。 调用表单生成器的方法有三种: v系统菜单中【表单】|【快速表单】命令。 v“表单设计器”工具栏中的“表单生成器”按钮。 v右击表单窗口,在弹出的快捷菜单中选择“生成器”命令 。 7 6.1.2 保存后运行表单 v在命令窗口输入命令: DO FORM 8 面向对象程序设计: 思想:将问题划分为类,由类定义的对象之间互发消息来完成功能。 主要结构特点: 1.程序一般由类的定义和类的使用两部分组成,在程序中定义各对象并 规定它们之间的传递消息的规律; 2.程序中的一切操作都是通过向对象发送消息来实现的,对象接收到消 息后,启动有关方法来完成相应的操作。 重点:数据。 6.2 面向对象程序设计基础 面向过程程序设计(结构化程序设计): 思想:核心是功能分解。将问题先按解决流程分解成若干个模块功能块 ;再设计数据结构;最后编写函数来对数据进行操作。重点在过程,当数 据结构发生改变时,所有代码都需改变。 重点:过程。 9 1对象 客观世界的任何事物都可以被看成是对象,对象是反 映客观事物属性及其行为特征的描述,是具体的。 v对象属性:用来表示对象的状态,用变量来描述。 v对象方法:描述对象行为的过程,用过程或函数实现 6.2.1 对象 10 6.2.2 类(P250) n 类:对一类相似对象的性质描述,这些对象具有相同种 类的属性以及方法。 相当于C语言中的结构体,但除了描述变量成员之外 ,还要描述对象的行为特征,即函数。 n 对象和类的区分: l 类是对象的模板,规定对象的属性,事件和方法程序。 l 对象通过类来产生,通过类来定义对象。 l 对象是类的实例。任何一个对象都是某个类的一个实例。 l 类抽象,不分配存储空间;对象具体,占用内存空间。 n 对象属性访问以及对象方法调用的基本格式: . .(参数列表) 11 类具有继承性、封装性和多态性三种基本特性。 1) 继承性:指通过继承关系利用已有的类构造新类。 在面向对象的方法里,继承是指在基于父类(现有的类)创 建子类(新类)时,子类继承了父类的方法和属性,可以为子 类添加新方法和属性。 2) 封装性 封装是一种信息隐藏技术,对象内部对用户是隐藏的 ,不可直接访问;用户只能见到对象封装界面上的信息 ,通过对象的外部接口访问对象。用户向对象发送消息 ,对象根据收到的消息调用内部方法作出响应。 1类的特性 3) 多态性 所谓多态即一个名词可具有多种语义,多个函 数可具有相同的函数名,但实现方法不同。 12 VFP下,进行面向对象的程序设计或创建应用程序 ,要用到VFP系统提供的基础类,即VFP基类,它是系统 本身内含的,并不存放在类库中。基类是VFP为用户预 先定义的类,用户可用基类来创建新类,此时基类是父 类,新类是子类。 2VFP中的类 Visual Foxpro基类列表 CommandButton 类名含义类名含义 ActiveDoc活动文档Label标签 CheckBox复选框Line线条 Column(表格)列Listbox列表框 ComboBox组合框OlecontrolOLE容器控件 OleboundcontrolOLE绑定控件 CommandGroup命令按钮组OptionButton选项按钮 Container容器Optiongroup选项按钮组 Contorl控件Page页 Custom定制PageFrame页框 EditBox编辑框ProjectHook项目挂钩 Form表单Separator分隔符 FormSet表单集Shape图形 Grid 表格Spinner微调控件 Header(列)标头TextBox文本框 HyperLink超级链接Timer定时器 Image图象ToolBar工具栏 命令按钮 14 15 6.2.3 容器类和控件类 VFP中的类分为两种:容器类(container classes)与控件类 (control classes),可分别生成容器(对象)和控件(对象)。 n 容器:可容纳其他对象,并允许访问所包含 的对象。 容器(如表单)自身是一个对象,可以把按钮 、编辑框、文本框等包含在其中。 常用容器及 对象见P181-表6.2 n 控件:不能容纳其他对象。当将一个控件对 象放入容器中, 编程时引用该对象时有两种方法 。 16 6.2.4 自定义类的创建与使用 v 将表单和控件保存为类 1)【文件】|【另存为类】命令,打开“另存为类”对话框. 2) 在“另存为类”对话框中选择“当前表单”或“选定控件。 在“类名”框中输入类的名称,在“文件”框中输入保存类的文件 名(类库名)。 17 w 用命令方式创建类 命令格式:create class 或 create class of w 通过编程创建类 define class as 功能:创建一个新类,以为基类,以为名 v 创建自定义类(P252) 18 v 关于自定义类的几点说明 w 一个类库中可容纳多个类 w 创建的类可以由基类派生,也可由用户自己的类派生 w 如新类是基于容器类的,可象设计表单一样设计新类 v 将类添加到控件工具栏 表单控件工具栏查看类添加 v 类的编辑与删除 remove class of 19 1. 拖动控件到表单,创建相应的控件对象。 2. 由类创建对象 格式: =createobject() 功能:将以为名的类定义成以为名的对象 . 6.2.5 对象的建立和使用 例:创建一个按钮标签对象labelTest. (1) SET CLASSLIB TO myclass ADDITIVE 指明要创建的对象保存在哪个类库(.vcx 文件)中。关 键字 ADDITIVE 规定在打开指定类库的同时并不关闭其他早 先已打开的类库。 (2) labelTest = CREATEOBJECT(“mylabel“) 在此代码中假设保存在类库中的表单类名称为mylabel。 对象由类来定义,只有具体的对象才能实现类的事件或 方法的操作.createobject()函数可将类定义成对象. 20 6.3 用表单设计器设计表单 .1 基本步骤基本步骤 1 1表单设计器窗口添加控件对象,表单设计器窗口添加控件对象,操作控件操作控件 2 2在属性窗口设置对象属性在属性窗口设置对象属性 3. 3. 控件布局控件布局 4. 4. 设置设置TabTab键次序键次序 5. 5. 编写事件代码或方法程序编写事件代码或方法程序 可在设置框中直接输入可在设置框中直接输入 从系统提供的一组值中指定从系统提供的一组值中指定 需指定文件名或对话框中指定时,后有需指定文件名或对话框中指定时,后有 默认值的设置默认值的设置 属性设为空属性设为空 “ “工具工具” ”菜单中的菜单中的“ “选项选项” ”命令,打开命令,打开“ “选项选项” ”对话框。对话框。 选择选择“ “表单表单” ”选项卡。选项卡。 在在“ “TabTab键次序键次序” ”下拉列表框中选择下拉列表框中选择“ “交互交互” ”或或“ “按列表按列表” ” 控件的基本操作控件的基本操作 选定控件选定控件 移动控件移动控件 调整控件大小调整控件大小 复制控件复制控件 删除控件删除控件 21 6.3.2 6.3.2 事件过程和方法程序事件过程和方法程序 1.事件 事件(Event)是一种由系统预先定义而由用户或系统引发的 动作,作用于对象上。 事件过程(Event Procudure) l 是为处理特定事件而编写的一段程序。 l 当事件由用户触发(如C1ick)或由系统触发(如Load) 时,对象就会对该事件作出响应(Respond)。响应某个 事件后所执行的程序代码就是事件过程。 n VFP系统中,事件集是固定的,用户不能定义新的事件, 对象可以响应50多种事件。 22 VFP基类中,最小事件集(即所有对象都包含这些事件 ) 事件说明 Init当对象生成时引发 Destory当对象从内存中释放时引发 Error当方法或事件代码出现运行错误时引发 23 VFP中的表单常用事件 (1) Click事件 单击鼠标左键时引发。 (2) DblClick事件 用鼠标双击对象时引发。 (3) Rightclick事件 鼠标右键单击对象时引发。 (4) Load事件 在表单对象建立之前引发,分配存储空间。 (5) Init事件 在表单建立时引发,表单对象初始化。 (6) Activate事件 表单在内存中已建立,再激活表单。 (7) Destroy事件 在对象释放时引发。 (8) Unload事件 在表单对象从内存释放时引发,是表单对象释放时最后 一个引发的事件。 24 例6-1 建立表单,为表单设置Load等事件的方法程序,然后 运行表单,观察各个事件发生的先后顺序。 操作步骤如下:操作步骤如下: 新建一个空白表单新建一个空白表单 为为LoadLoad事件输入方法程序:事件输入方法程序: wait “load” windowwait “load” window 为为InitInit事件输入方法程序:事件输入方法程序:wait “init” windowwait “init” window 为为ActivateActivate事件输入方法程序:事件输入方法程序:wait “activate” wait “activate” windowwindow 为为DestoryDestory事件输入方法:事件输入方法:wait “destory” windowwait “destory” window 为为UnloadUnload事件输入方法程序:事件输入方法程序:wait “unload” windowwait “unload” window 保存并运行表单保存并运行表单( (屏幕右上角出现提示窗口,单击鼠标屏幕右上角出现提示窗口,单击鼠标 观察窗口的变化。单击表单的关闭按纽或关闭表单时观察窗口的变化。单击表单的关闭按纽或关闭表单时 ,提示窗口将继续变化。,提示窗口将继续变化。) ) 25 Click:鼠标左键单击对象时发生的事件。 Dbclick: 鼠标左键双击对象时发生的事件。 Rightclick:鼠标右键单击对象时发生的事件。 GotFocus:对象接收到焦点时发生的事件。 LostFocus:对象失去焦点时发生的事件。 KeyPress:当用户在对象上按下或释放键时发生的事件。 InteractiveChange:以交互方式改变对象的值时发生的事件。 ProgrammaticChange:以编程方式改变对象的值时发生的事件。 VFP对象的其他常用事件 26 方法(Method):附属于对象的行为和动作,也称方法程序。 v 方法属于对象的内部函数, 用于完成某种特定的功能而 不一定响应某一事件,如添加对象(Addobject)方法、绘制 矩形(Box)方法、释放表单(Release)方法等。方法也被“ 封装”在对象中,不同的对象具有不同的内部方法。 v VFP提供了百余个内部方法供不同的对象调用。与事件 过程不同的是,根据需要可由用户自行建立新方法。 2.方法程序 27 事件过程由事件的激发而调用其代码,也可以在运行 中由程序调用其代码,而方法的代码只能在运行中由程序 调用。 事件与方法的不同 常用的表单方法 Hide方法隐藏表单,将表单的Visible属性设置为.F. ; Show方法显示表单,将表单的Visible属性设置为.T. ; Release方法将表单从内存中释放。 Refresh方法刷新表单。 28 1. 引用对象时有两种方法 v 绝对引用:从最高容器开始逐层向下直到某个对象为止. v 相对引用:从正在为编写事件代码的对象出发,通过逐 层向高一层或低一层直到另一对象的引用。 6.3.3 6.3.3 设置引用对象的属性和其调用方法设置引用对象的属性和其调用方法 2. 设置引用对象的属性和方法 v 引用对象属性的设置 引用对象.属性=属性值 当一个对象的多个属性要设置时,常用以下格式 : With Endwith 使用相对引用常用到表中所列属性或关键字 属性或关键字 当前对象的直接容器对象Parent This当前对象 ThisForm当前对象所在的表单 ThisFormSet当前对象所在的表单集 引用 29 调用对象方法的格式: 引用对象. 方法名 (参数表) 例如: Thisform.show(1) & 显示表单FORM1 Thisform.cls & 表单FORM1清屏 3调用对象的方法 4执行对象的事件 引用对象. 事件名 (参数表) 例如: Thisform.activate & Thisform的激活事件 comm1.Click & COMM1的单击事件 30 例6-2 如Form1中有一个命令按钮组commandgroup1,该命令按 钮组有两个命令按钮:command1 和command2。 1) 在命令按钮command1的单击事件代码中修改该按钮 的标题为“确定”。 2) 在命令按钮command1的事件代码中修改命令按钮 command2的标题为“取消”。 3) 在命令按钮command1的事件代码中修改表单的标题 为“测试窗口”。 this.caption=”确定” thisform.Cmand2.caption=“取消” 或 mand2.caption=“取消“ mand2. caption=“取消” X This.Parent.parent.Caption=”测试窗口” 或 thisform.caption=”测试窗口” 31 例6-3 设计一个只含文本框控件的表单(如P187图6.17所示),要 求逐次单击文本框的内部能轮流显示当前的日期与时间。 步骤:1.创建一个空白表单对象,并设置该对象的 caption属性为“日期和时间”; 2.添加文本框控件对象; 3.设置文本框的属性(字体,布局等); 4.编写代码 在表单加载时定义公共逻辑变量flag. 在单击事件(click)中编写代码. 32 例6-4 设计一简单的绘图程序,要求在表单上拖动时能画线。 解析:绘画的3个步骤 1. 在表单上按下鼠标键 2. 在按下鼠标键的同时拖动鼠标 3. 释放鼠标,使键弹起 对应的事件及其代码: 1.表单的MouseDown()事件代码: ok=.t. 2.表单的MouseMove()事件代码: 如条件满足,则画线. 3.表单的MouseUp()事件代码: ok=.f. 4.在加载表单时进行画笔的初始化,并定义一个公共逻辑变量, 使MouseDown()、MouseMove()、MouseUp()事件都可访问。 即可设置一逻辑变量ok,当在表单上按下鼠标时ok=.t.,当鼠 标释放时,使ok=.f. 。当鼠标拖动时检测是否ok=.t.是则执行每 拖动一个像素,画一个点,否则不画; 33 6.3.4 6.3.4 为表单添加新的属性和方法为表单添加新的属性和方法 1创建新属性 步骤: 1) 【表单】菜单中的【新建属性】,打开“新建属性”对话框。 2) 在“名称”框中输入属性名称 3) 在“说明”框中输入新建属性的说明信息 34 2创建新方法 步骤如下: 1)【表单】菜单中【新建方法程序】,打开“新建方法程 序”对话框。 2) 在“名称”框中输入方法名。 3) 有选择地在“说明”框中输入新建方法的说明信息。 6.3.4 6.3.4 为表单添加新的属性和方法为表单添加新的属性和方法 35 6.3.5 6.3.5 运行表单运行表单 1在设计时运行表单 v 项目管理器中,选择表单,单击“运行”按钮。 v 表单设计器中,【表单】菜单中【执行表单】命令, 或常用工具栏上的“运行”按钮。 v 【程序】菜单中【运行】命令,打开“运行”对话框, 然后选择表单,单击“运行”按钮。 v 命令窗口输入命令:DO FORM 。 36 2在程序中调用表单 命令:DO FORM NAMELINKED WITH,TONOSHOW NAME:如有NAME子句,系统建立指定名字的变量,并 使它指向表单对象。否则,系统建立与表单文件名相同的变 量,并使它指向表单对象。 LINKED: 如有LINKED关键字,表单和表单对象变量将链接起 来,这时,表单对象将随指向它的变量的清除而关闭(释放),否 则,即使变量已经清除(如超出作用域,用RELEASE命令清除), 表单对象依然存在。但不管有无LINKED关键字,指向表单对 象的变量不会随表单的关闭而清除。 TO :用于从模式表单返回值。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 要素安全评价管理办法
- 设备资质评审管理办法
- 设施农业农户管理办法
- 证券佣金分成管理办法
- 诉讼仲裁工作管理办法
- 诊所实施备案管理办法
- 诸暨餐饮排烟管理办法
- 财政存款缴存管理办法
- 财税会计薪酬管理办法
- 货币挖矿现场管理办法
- 二年级数学必练100题
- 网络带宽使用证明
- 民众生活中的民俗学智慧树知到期末考试答案章节答案2024年湖南师范大学
- 麻醉中的呼气末正压调节技巧
- 组织学与胚胎学(南方医科大学)智慧树知到期末考试答案章节答案2024年南方医科大学
- 2020年云南省曲靖市富源县中小学、幼儿园教师进城考试真题库及答案
- 教师专业发展智慧树知到期末考试答案2024年
- 2024年03月广东省韶关市法院2024年招考31名劳动合同制审判辅助人员笔试历年(2016-2023年)真题荟萃带答案解析
- 师承指导老师临床经验总结
- 抛光简介介绍
- 热射病预防与急救
评论
0/150
提交评论