vfp 编程结尾的连编可执行文件时过程中很容易出问题。
VFP程序连编中的常见问题及解决方案
一、【问】vfp主程序执行重新连编项目时没有错误,可是要联编成exe文件时,会提示连编程序名.app文件时出错,这是为什么?还有我做了一个主界面的表单,可是执行完以后却不能执行以后的程序了,是不是缺少什么命令了?
【答】本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个:
属性 意义 可选值(黑体为默认值) DeskTop 指定表单是否包含在VFP主窗口中 F./.T.
WindowType 指定表单对象运行时的动作 0-无模式/1-模式 ShowWindow 指定在创建过程中表单窗口显示表单或工具栏 0-在屏幕中/1-在顶层表单中/3-做为顶层表单
下面针对上述表单属性以及VFP中"桌面(DeskTop)、屏幕(Screen)、表单(Form)"等概念谈一谈我的理解。正因为VFP在此方面的设计混乱,也就决定了我不能系统地、有条理地分析这些问题,我做的只能是阐述一些事实。
1.表单是一个对象,外观表现上是一个窗口。VFP的主窗口也可以说是一个"表单"对象,它有一个固定的名字叫"_Screen","_Screen"是一个特殊的表单对象;
2."ShowWindow"是规定表单在"显示方面的从属关系"的属性 ShowWindow属性实际上仅有两种选择:"作为顶层表单"与"在顶层表单中"。为了表达方便,我们把具有前者属性值的表单称为"顶层表单",后者称为"从属表单"。二者在显示方面的不同地位是:顶层表单在Windows任务栏上有一席之地,从属表单却没有这种待遇;顶层表单最小化时,从属表单随之被隐藏,当顶层表单关闭后,从属表单随之关闭。 ShowWindow的第三种选择"在屏幕中(默认)"仅是"在顶层表单中"的一个特例,即为"在_Screen这个特定的顶层表单中"之意,选择此种属性值时,它一定是个"从属表单"了。_Screen具有"顶层表单"的一切显示特征。 从属表单不能独立地被显示,必须与他的"主表单"一起显示,这个"主表单"要么是一个顶层表单要么是VFP的窗口(_Screen)。不需要为一个"从属表单"指定一个"主表单","从属表单"打开时,自动选择当前的活动顶层表单作为其"主表单",当然,如果选择了"在屏幕中",则这个从属表单自然就以_Screen为其主表单了。
3."DeskTop"是规定表单在"显示方面的活动范围"的属性。
DeskTop仅对"从属表单"有意义,当从属表单的DeskTop=.f.时,它只能显示在它的"顶层表单"的尺寸之内,当这个顶层表单的尺寸比它的尺寸还小时,它将会被部分地遮住;当从属表单的DeskTop=.t.时,它的活动范围将不受它的顶层表单尺寸的限制,它可以显示在电脑屏幕的任何地方甚至之外。但不管它的位置离其顶层表单多远,一旦顶层表单最小化了,它会立即顺从地从电脑屏幕上消失。
4."ShowWindows"是规定表单被执行时的程序动作的属性
分两种情况:
(1)当表单的ShowWindow为"在屏幕中"和"在顶层表单中"时: a.当WindowType="模式"时,执行表单(DO FORM)后使得表单取得焦点,并且一直到它被关闭,在此期间,它的父窗口对象(可能是_Screen或一个顶层表单)的菜单系统及其所属的子表单都不能用。就是说,在表单存在期间,它将一直霸占着焦点. b.当WindowType="无模式"时,表单存在期间不会霸占焦点。有一个例外,当DeskTop=.t.时,执行它时会使系统菜单失效,而DeskTop=.f.时则不会。
(2)当表单的ShowWindow为"做为顶层表单"时: 表单的WindowType属性不管是有模