Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章

上传人:E**** 文档编号:89181150 上传时间:2019-05-20 格式:PPT 页数:19 大小:190KB
返回 下载 相关 举报
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章_第1页
第1页 / 共19页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章_第2页
第2页 / 共19页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章_第3页
第3页 / 共19页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章_第4页
第4页 / 共19页
Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章》由会员分享,可在线阅读,更多相关《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新 第9章(19页珍藏版)》请在金锄头文库上搜索。

1、第9章 表单集与多重表单,9.1 表单集 9.2 多重表单,9.1 表单集,9.1.1 创建表单集 表单集是在“表单设计器”中创建的。 无论是建立一个新表单还是打开已有的表单,进入“表单设计器”后,从主菜单中,选择“表单”菜单中的“创建表单集”,即可创建一个新的表单集FormSet1,如图9-1所示。,9.1.2 表单集的应用 【例9-1】使用表单集设计的电子标题板程序(如图9-2所示)。 设计步骤如下: 设计“控制”表单。选择新建表单,进入表单设计器,调整表单设计器中第一个表单(Form1)的形状,在表单中增加一个编辑框Edit1、一个选项按钮组OptionGroup1、一个标签Label1

2、和3个命令按钮Command1Command3。 表单中各对象属性的设置参见图9-3。, 创建表单集。在主菜单中选择“表单”中的“创建表单集”,如图9-1所示,创建一个包含原有“控制”表单的表单集FormSet1。,然后再在“表单”菜单中选择“添加新表单”,表单设计器中出现第二个表单(Form2)。在Form2中增加一个标签Label1和一个计时器Timer1,如图9-4所示。 新建自定义方法。在“表单”主菜单中选择“新建方法程序”,为表单集创建自定义方法Yidong()。 编写表单集的自定义方法Yidong()的代码:,DO CASE CASE THIS.Tag = “1“ & 用MOVE方

3、法向上向左移动 20 线 THIS.Form2.Label1.Move( THIS.Form2.Label1.Left 3, THIS.Form2.Label1.Top 3) IF THIS.Form2.Label1.Left = 0 THIS.Tag = “2“ & 如果到达表单左边界,向上向右移动 ELSE IF THIS.Form2.Label1.Top = 0 THIS.Tag = “4“ & 如果到达表单顶端,向下向左移动 ENDIF ENDIF CASE THIS.Tag = “2“ & 向上向右移动 20 线,THIS.Form2.Label1.Move( THIS.Form2.

4、Label1.Left + 3, THIS.Form2.Label1.Top 3) IF THIS.Form2.Label1.Left = (THIS.Form2.Width THIS.Form2.Label1.Width) THIS.Tag = “1“ & 如果到达表单右边界,向上向左移动 ELSE IF THIS.Form2.Label1.Top = (THIS.Form2.Width - THIS.Form2.Label1.Width) THIS.Tag = “4“ & 如果到达表单右边界,向下向左移动 ELSE IF THIS.Form2.Label1.Top = (THIS.Form

5、2.Height THIS.Form2.Label1.Height) THIS.Tag = “2“ & 如果到达表单底端,向上向右移动 ENDIF ENDIF CASE THIS.Tag = “4“ & 向下向左移动 20 线,THIS.Form2.Label1.Move( THIS.Form2.Label1.Left 3, THIS.Form2.Label1.Top + 3) IF THIS.Form2.Label1.Left = (THIS.Form2.Height THIS.Form2.Label1.Height) THIS.Tag = “1“ & 如果到达表单底端,向上向左移动 END

6、IF ENDIF ENDCASE 编写事件代码。 编写表单集的Activete事件代码: THIS.Tag = “1“ “控制”表单Form1中编辑框Edit1的Click事件代码: LPARAMETERS nKeyCode, nShiftAltCtrl IF nKeyCode = 13 THISFORMSET.Form2.Label1.Caption = THIS.Value ENDIF “控制”表单Form1中“开始”按钮Command1的Click事件代码: THISFORMSET.Form2.Timer1.Enabled = .T. “控制”表单Form1中“暂停”按钮Command2

7、的Click事件代码: THISFORMSET.Form2.Timer1.Enabled = .F.,“控制”表单Form1中“关闭”按钮Command3的Click事件代码:THISFORMSET.Release “标题板”表单Form2中计时器Timer1的Timer事件代码: n = THISFORMSET.Form1.OptionGroup1.Value DO CASE CASE n = 1 IF THISFORM.Label1.Left + THISFORM.Label1.Width 0 THISFORM.Label1.Left = THISFORM.Label1.Left 5 EL

8、SE THISFORM.Label1.Left = THISFORM.Width ENDIF CASE n = 2 IF THISFORM.Label1.Top + THISFORM.Label1.Height 0 THISFORM.Label1.Top = THISFORM.Label1.Top 5 ELSE THISFORM.Label1.Top = THISFORM.Height ENDIF CASE n = 3 THISFORMSET.yidong() ENDCASE,9.2 多重表单,9.2.1 表单的类型 VFP允许创建以下几种类型的表单(如图9-5所示):, 子表单。 浮动表单。

9、 顶层表单。,1. 有关的属性 创建各种类型表单的方法大体相同,但需设置特定的属性以指出表单应该如何工作。 除了在第1章中介绍的常用表单属性外,与多重表单有关的表单属性,见表9-1。,如果创建的是子表单,则不仅需要指定它应在另外一个表单中显示,而且还需指定是否是MDI类的子表单,即指出表单最大化时是如何工作的。如果子表单是MDI类的,它会包含在父表单中,并共享父表单的标题栏、标题、菜单以及工具栏。非MDI类的子表单最大化时将占据父表单的全部用户区域,但仍保留它本身的标题和标题栏。,2. 子表单 建立一个子表单的步骤: 用“表单设计器”创建或编辑表单。 可将表单的ShowWindow属性设置为下

10、列值之一: 0 在屏幕中(默认)。子表单的父表单即为Visual FoxPro主窗口。 1 在顶层表单中。当子窗口显示时,子表单的父表单是活动的顶层表单。如果希望子窗口出现在顶层表单窗口内,而不是出现在Visual FoxPro主窗口内时,可选用该项设置。 如果希望子表单最大化时与父表单组合成一体,可设置表单的MDIForm属性为“真”(.T.);如果希望子表单最大化时仍保留为一独立的窗口,可设置表单的MDIForm属性为“假”(.F.)。 说明:如果所创建的子表单中的ShowWindow属性设置为“1在顶层表单中”,则并不需要专门指定某一顶层表单作为子表单的父表单。 3. 浮动表单 浮动表单

11、是由子表单变化而来,建立浮动表单的步骤: 用“表单设计器”创建或编辑表单。 可将表单的ShowWindow属性设置为以下值之一: 0 在屏幕中(默认)。浮动表单的父表单将出现在Visual FoxPro主窗口。 1 在顶层表单中。当浮动窗口显示时,浮动表单的父表单将是活动的顶层表单。 将表单的Desktop属性设置为“真”(.T.)。,4. 顶层表单 建立顶层表单的步骤: 用“表单设计器”创建或编辑表单。 将表单的ShowWindow属性设置为“2作为顶层表单”。 5. 子表单的显示 若要在某表单中显示该子表单,只需在顶层表单的事件代码中包含DO FORM命令,指定要显示的子表单的名称。例如,

12、在顶层表单中建立一个按钮,然后在按钮的Click事件代码中包含如下的命令: DO FORM MyChild 然后,激活顶层表单,如有必要,触发用以显示子表单的事件。 在显示子表单时,顶层表单必须是可视的、活动的。因此,不能使用顶层表单的Init事件来显示子表单,因为此时顶层表单还未激活。 6. 子表单的多个实例 在同一时刻,可以有一个类定义的多个实例活动。例如,设计一个订购表单,而在应用程序中拥有几个打开的订购单,每一个都使用相同的表单定义,但可独立地显示和操作。 当管理一个表单的多个实例时,必须记住以下要点: 在启动表单中创建一个数组属性,数组中的每个元素用来存放一个表单的实例变量,如果事先

13、不知道有多少个实例,跟踪实例变量的最简便的方法就是使用数组。, 对于拥有多个实例的表单,将其DataSession属性设置为2 私有数据工作期。私有数据工作期为表单的每个实例提供一个独立的工作区,因此选定的表和记录指针的位置都是独立的。 例如,在主表单中定义一个数组属性aForms,然后在主表单中就可以用以下代码建立子表单Multi.scx的多个实例: n = ALEN(THISFORM.aForms) DO FORM Multi NAME THISFORM.aFormsn LINKED DIMENSION THISFORM.aFormsnInstance + 1 此时,以下代码将设置第2个子

14、表单实例的Cption属性为:我是第2个 aForms2.Caption = “我是第2个“ 进一步编写本例的代码时,可以管理表单对象数组,使得关闭表单后,空的数组元素能被作为打开的表单重新使用。否则,数组的大小将不断增加,元素的个数也逐个增加。 9.2.2 主从表单之间的参数传递 主表单在调用子表单时,使用DO命令的下列格式,可以实现主从表单之间的参数传递。 1. 接受从子表单返回的值 DO FORM 子表单名 TO 内存变量 说明:从子表单返回的值存放于内存变量中,在主表单中可以被使用。,2. 主表单向子表单传递数据DO FORM 表单文件名 WITH 实参表列 说明:在子表单的Init事

15、件代码中应该有如下代码来接受数据: PARAMETERS 形参表列 实参表列与形参表列中的参数应用逗号分隔,形参表列中的参数数目不能少于实参表列中的参数数目。多余的参数变量将初始化为.F. 假。 3. 主表单与子表单相互传递数据 DO FORM 表单文件名 WITH 实参表列 TO 内存变量 下面的例子创建自定义的“输入框”表单来模拟VB中的输入框函数,在主表单与子表单之间传递参数。 【例9-2】从主表单中将输入框的“标题”、“信息”和“默认值”传给子表单(如图9-6),然后将子表单输入框中的输入值返回主表单(如图9-7)。,设计步骤如下: (1) 首先设计子表单(InputBox.scx)

16、建立应用程序用户界面。选择新建表单,进入表单设计器,适当调整表单的大小后,增加一个文本框Text1、两个命令按钮Command1、Command2和一个标签控件Label1(如图9-8所示)。 设置对象属性。首先在表单中增加一个自定义属性creturn,用来存放返回值。然后设置其他对象的属性,见表9-2。, 编写程序代码。 编写子表单form1的事件代码: Init事件: PARAMETERS cPrompt,ctitle,cDefault SET EXACT ON IF TYPE(cDefault) = L cDefault = “ ENDIF IF TYPE(ctitle) = L ctitle = “输入框“ ENDIF IF TYPE( cPrompt ) = L cPrompt = “请输入:“ ENDIF THIS.C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号