当前位置:主页   - 电脑 - 程序设计 - VFP
看实例学VFP:顶层表单(父子表单)的例子
来源:网络   作者:www.bianceng.cn 老马    更新时间:2010-09-26
收藏此页】    【字号    】    【打印】    【关闭

记得以前有朋友想让他的vfp程序运行时是这个样子:没有VFP的主屏幕(_screen),运行时直接在桌面出现一个登录对话框,输入用户名及密码并验证通过之后出现软件的主界面,看起来象是用VB编写的软件,有种很酷的感觉。

VFP软件主界面的实现通常可以采用两种方式:主屏幕(_screen)或顶层表单(或者叫父子表单)。可以用顶层表单来实现上述的想法。

VFP中设置顶层表单的方法是将表单的showWindow属性设置为“2-作为顶层表单”,这也就是所谓的“父表单”了;与之想对应的,需要将“子表单”的showWindow属性设置为“1-在顶层表单中”。本文是一个关于顶层表单的小实例,算是一个“热身”吧。以后会给出用顶层表单实现软件主界面的例子,当然也会相继给出用主屏幕(_screen)实现软件主界面的例子。

本例使用数据库“数据1”中的“网站信息表”作为表单数据环境的数据源,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出。运行此例时首先启动“父表单.scx”,该表单上会显示“网站信息表”的第一条记录,如下图一;

图一

单击父表单上的“启动子表单”按钮后,子表单启动的同时该命令按钮被禁用(关闭子表单后该命令按钮被自动激活);子表单启动后,单击其上的“第一条”、“下一条”等命令按钮后,父表单会更新显示在“网站信息表”中所对应的记录,用鼠标指向子表单的标题栏可以移动子表单,但其移动的范围在父表单窗口之内,如下图2:

图二

本例制作步骤如下:

一、新建表单form1,按下表设置其属性,并将其保存为“父表单.scx”:

属性名 属性值
caption 父表单
AutoCenter .T.
width 375
height 130
showWindow 2-作为顶层表单

二、向父表单中添加一个命令按钮command1,将其caption属性值设置为“启动子表单”,适当调整大小;然后再添加一个标签(Label)控件,并按下表设置该标签的属性:

属性名 属性值
caption 父子表单关系
AutoSize .T.
FontBold .T.
FontSize 16
ForeColor 0,0,255

三、右击父表单空白处选“数据环境”命令,将“网站信息表”添加到数据环境中去。在“数据环境设计器”中拖动“网站信息表”的各个字段名到父表单上去(注意:此例不要拖动标题栏,否则生成的是一个表格),适当调整所生成的控件的大小及父表单内各个控件的位置,调整后的表单如下图:

四、为父表单及其所包含的控件添加事件代码:

(1)父表单的Unload事件:close data

(2)命令按钮command1的click事件代码:

this.enabled=.f.
do form 子表单

五、设置完父表单后,将父表单.scx关闭,然后再新建一个表单,按下表设置其属性,并将其保存为“子表单.scx”:

属性名 属性值
caption 子表单
showWindow 1-在顶层表单中

六、向子<单中添加四个命令按钮command1~command4及一个微调按钮(Spinner)控件,将四个命令按钮的caption属性依次设置为“第一条”、“上一条”、“下一条”和“最后一条”,然后将四个按钮及Spinner控件排成一线,将子表单的宽度及高度调小一些,这样看起来象个工具栏的样子,如下图:

七、按下表设置微调按钮Spinner1的属性:

属性名 属性值
SpinnerHighValue =reccount()
SpinnerLowValue 1.00

八、为子表单及其所包含的控件添加事件代码:

(1)子表单的QueryUnload事件:

父表单.command1.enabled=.t. &&作用是在子表单被关闭时激活父表单上的“启动子表单”按钮

(2)“第一条”按钮(command1)的click事件:

if bof()=.f.
 go top
endif
父表单.refresh

(3)“上一条”按钮(command2)的click事件:

if bof()=.f.
 skip -1
endif
父表单.refresh

(4)“下一条”按钮(command3)的click事件:

if eof()=.f.
  skip
endif
父表单.refresh

(5)“最后一条”按钮(command4)的click事件:

if eof()=.f.
 go bottom
endif
父表单.refresh

(6)微调按钮Spinner1的InteractiveChange事件代码:

s=this.value
goto s
父表单.refresh

九、运行“父表单.scx”,即可得到本例的效果。

本例代码在Win2003+VFP6.0环境下调试通过。

查看全套“菜鸟也学VFP”教程

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明