我vfp程序连编的问题知道
vfp程序设计知识点总结

vfp程序设计知识点总结Visual FoxPro(简称VFP)是一种基于Windows的关系型数据库管理系统和编程语言。
它提供了丰富的功能和工具,用于开发数据库应用程序。
本文将总结VFP程序设计中的关键知识点,并探讨其应用。
一、VFP环境配置VFP程序设计之前,首先需要进行环境配置。
安装VFP软件后,可以通过设置和调整各种选项来满足具体需求,例如界面风格、编辑器设置、代码库配置等。
二、基本语法1. 变量和数据类型:VFP支持多种数据类型,包括字符型、整数型、逻辑型、日期型等。
声明变量时,需要指定数据类型,并赋予初始值。
2. 控制结构:VFP支持常见的控制结构,如条件语句(if-else)、循环语句(for-loop、while-loop)、选择语句(switch-case)等,用于根据不同情况执行相应的代码块。
3. 函数和过程:VFP提供了大量内置函数用于字符串处理、数学计算等操作。
同时,也可以通过自定义函数和过程来扩展VFP的功能,提高代码的复用性和可读性。
三、数据库操作1. 连接数据库:VFP可以连接各种类型的数据库,如Visual FoxPro数据库、SQL Server数据库等。
通过设定数据库连接字符串和使用相应的驱动程序,可以实现与数据库的交互。
2. 数据查询:使用SQL语句或者VFP内置的查询命令,可以实现数据的查询和分析。
通过指定查询条件和选择输出字段,可以灵活地获取所需的数据。
3. 数据处理:VFP提供了各种数据处理的功能,如数据排序、筛选、统计等。
可以通过内置函数和命令,快速实现对数据的操作。
四、用户界面设计1. 窗体设计:VFP提供了窗体设计器,可以通过拖拽和设置属性来创建用户界面。
可以添加各种控件,如按钮、文本框、列表框,以及设计和调整布局。
2. 报表设计:VFP内置了报表设计器,可以生成多种格式的报表,如表格、图表、交叉表等。
可以自定义报表的样式、布局和数据源,实现灵活的报表生成。
VFP编程技巧六则

《VFP编程技巧六则》一、在VFP 5.0中表格打印时没有响应以及不能对齐的原因在VFP5.0中处理表格打印时,在最后都需加一句set printer to,该语句的功能就是将打印缓冲器内容送到打印机。
至于表格不能对齐是因为字体原因,主要是数字、字母等,Windows中许多字体的不同字符的宽度是不同的(如I和W),因此您要选字符宽度相同的字体,如宋体等中文字体就行,?和@...say都可以跟font子句,如所有输出到打印机的语句都可以用如下语句:? ′name′font ′宋体′或@2,5 say ′name′font ′宋体′二、运行表单时出现name属性错误的处理一位朋友在前不久用do form frmcx.scx运行一个表单后,并将该表单的name属性设为frmcx,执行_SCREEN.frmcx.caption=“kkkkkk”,会出现“不能识别成员frmcx”的错误。
其实,产生这种情况的原因很简单,作为创建的最外层容器对象(一般是表单)不能直接用其名称调用,而应将其赋给一个变量,然后用这个变量名来调用,比如用如下语句:do form frmcx name frmcx这样就可以用frmcx来调用这个表单了,在这里frmcx是一个变量,随着程序的运行结束,该变量也会释放,这时再用该变量来调用此表单就不行了,为了使它不释放,可在上面的语句后面加linked子句,即:do form frmcx name frmcx linked三、用LostFocus事件处理组合框失去焦点有些朋友在处理这一动作时往往使用click事件,而不加以对lostfocus事件的使用,即当光标离开该文本框时对其它文本框作相应设置,而没离开之前,说明您的输入还没有最后确定,这时一般也不需要对其它文本框设置,如更进一步想在没离开之前就将结果反映到其它文本框中,那要使用keypree事件,即每键入一个字符,就对其它文本做出设置。
关于VFP连编后运行程序一闪而过的解决方法

关于VFP连编后运行程序一闪而过的解决方法[日期:2006-06-05] 来源:作者:[字体:大中小] 笔者在两年多的新闻组生活中,曾数十次遇到过初学者对VFP的表单窗口属性所提出的问题,特别是"为何系统编译后运行时一闪而过"的问题,更是被频繁地提出。
现根据我的经验进行一下总结,以帮助初学者打掉这只拦路虎。
其实,这个问题之所以被频繁地提出,并非是由于初学者的理解能力有问题,而实在是VFP的设计混乱所致,以至于造成初学者理解上的混乱。
笔者曾在"济南万千"的"软件、编程、数据库"新闻组就此问题发过"窗口问题到此为止"的帖子,反响很大,现根据该帖进行整理,修正补足该帖中的一些不准确之处及遗漏。
本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个:[list=a] 属性意义可选值(黑体为默认值)DeskTop 指定表单是否包含在VFP主窗口中 F./.T.WindowType 指定表单对象运行时的动作 0-无模式/1-模式ShowWindow 指定在创建过程中表单窗口显示表单或工具栏0-在屏幕中/1-在顶层表单中/3-做为顶层表单[/list]下面针对上述表单属性以及VFP中"桌面(DeskTop)、屏幕(Screen)、表单(Form)"等概念谈一谈我的理解。
正因为VFP在此方面的设计混乱,也就决定了我不能系统地、有条理地分析这些问题,我做的只能是阐述一些事实。
1.表单是一个对象,外观表现上是一个窗口。
VFP的主窗口也可以说是一个"表单"对象,它有一个固定的名字叫"_Screen","_Screen"是一个特殊的表单对象;2."ShowWindow"是规定表单在"显示方面的从属关系"的属性ShowWindow属性实际上仅有两种选择:"作为顶层表单"与"在顶层表单中"。
有关VFP6.0项目连编技术的研究与实践

关 键 词 : sa F x r 程 序设 计语 言 ; 目连 编 Vi l o p o: u 项
Vsa F xr Mi oot 司推 出的可视化数据库管理 系统平 i l opo是 c sf公 u r
E主文件的文件名在项 目管理器 中用醒 目的粗 字体表示 。在项 目管 l
台, 它提供 了功能完备 的工具 、 极其友好 的用 户界 面 、 简单的数据存
取 方 式 。 Vsa F xr i l opo程序 设 计 语 言作 为 学 习软 件 编 程 的- /入 门 u -' 3
理器 中设置主文件的方法为 : 单击要设置为主文件 的程序 、 表单或菜
单 文 件 , ” 目” 单 或 快 捷 菜 单 中 选 择 ” 置 主 文 件 ” 令 。 常 在 从 项 菜 设 命 通
足菜 单或表单 。③建立事件循环 : 应用 程序 的 1 作环境建立之后, 显
示 出 初 始 的 用 户 界 面 。这 时 , 要 建 立 一 个 事 件 循 环 来 等 待 接 受 用 需
1项 目的建立
户的交互动作 通常通过命令 R A V N S来开始事件循环 , E DE E T 等待
项 目连 编 的步 骤 操 作 如 下 :
① 打开设计完成的项 目管理器 , 然后单击” 连编” 按钮。 ②在弹 出 的的对话框 中, 中” 选 连编应用程 序” 单选按 钮 , 生成. p文件 ; a p 若选 中” 连编可执行 文件 ” 单选按 钮 , 可建立一 个. e文件 ; e x 还可 以选 中”
现在 , 各级医院的 日常工 作通 常都采取信 息化的工作方式 , i a Vs l u
F xr 可用来设计 中小 型的医院信息系统。在 Vsa F xr 编程环 op u i l opo u
重要资料VFP表操作索引、统计、关联、连接等讲解

重要资料VFP表操作索引、统计、关联、连接等讲解查询、统计和多表操作表文件中记录的顺序通常是人们在输入数据时按输入的先后次序存储的,并以记录号表示,这个顺序只反映了存放数据的先后顺序。
但在数据处理实际应用中,由于数据库十分庞大,为了高效方便地处理数据,常常需要对记录位置进行重新整理,并按某种指定的顺序对表记录进行处理。
例如,对学生成绩表按学号为序显示输出记录,以便查找;或按总分高低为序输出记录,以便进行比较等等。
对记录位置进行重新整理通常有排序和索引两种方法。
排序是对表文件进行物理位置的整理;索引是对表文件进行逻辑位置的整理。
一、排序表文件的排序操作就是根据表的某个关键字或关键字表达式重新排列表记录的位置。
执行排序操作后将生成一个新的表文件(称为:排序文件)。
新文件的结构和数据可以与源文件完全相同,也可以只取源文件的部分字段。
新文件不改变源文件内容和记录顺序。
【命令】 SORT TO<新文件名>ON <字段名1>[/A] [/D] [/C] [,<字段名2> [/A] [/D] [/C]…] [ASCENDING|DESCENDING][<范围>][FOR<条件>|WHILE<条件>][FIELDS<字段名表>| FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>]【功能】对当前表中指定范围内、满足条件的记录按指定字段升序或降序重新排序,并将排序结果存入新文件名中。
【说明】①排序结果存入由TO <新文件名>指定的表文件中,系统默认文件扩展名为.DBF。
②在ON子句中的字段名表示排序的关键字段。
当使用一个关键字时,叫“单重排序”;使用多个关键字时,叫“多重排序”。
在多重排序中,关键字有主次之分。
主关键字是指能够唯一标识某个记录的关键字;次关键字是指标识具有某种相同属性的某些记录的关键字。
VFP答疑汇总(第一部分)

VFP答疑汇总【第一部分】1、如何用SQL语句直接新建表单(尤其是表单的属性设置代码)creat table 表名(字段1 c(8),字段2 c(8)) &&c为字符型browse last &&浏览表2、添加数据无法成功,如何将EXCEL表格导入到VFP?文件->导入->选择源表3、命令按钮“第一条、下一条、上一条、最后一条”代码*****command1为“第一条”command2为“下一条”command3为“上一条”command4为“最后一条”第一条:goto top &&移动到第一条mand1.enabled=.f. &&command1不可用mand3.enabled=.f. &&command3不可用if !eof() &&如果不是在最后一条记录上 mand2.enabled=.t. &&command2可用mand4.enabled=.t. &&command4可用endif &&注意不要忘记endifthisform.refresh &&刷新表单下一条: skip 1 &&移动到下一条mand1.enabled=.t. &&command1可用mand3.enabled=.t. &&command3 可用if eof() &&如果到达最后一条记录mand2.enabled=.f.mand4.enabled=.f.endifif !bof() &&如果不是在第一条记录上mand1.enabled=.t.mand3.enabled=.t.endifthisform.refresh上一条:skip -1 &&移动到上一条mand2.enabled=.t.mand4.enabled=.t.if bof() &&如果是第一条记录mand1.enabled=.f.mand3.enabled=.f.endifif !eof() &&如果不是最后一条记录mand2.enabled=.t.mand4.enabled=.t.endifthisform.refresh最后一条:goto bottom &&移动到最后一条mand4.enabled=.f.mand2.enabled=.f.if !bof() &&如果不是第一条记录mand1.enabled=.t.mand3.enabled=.t.endifthisform.refresh &&刷新表单4、用户登录界面代码的编写If alltrim(thisform.text1.value)=="" or alltrim(thisform.text2.value)==""=messagebox("用户名或密码不能为空!","查询系统") &&检测文本框内的输入值是否为空return.f. &&返回.F.endiflocate for alltrim(xm)==alltrim(thisform.text1.value);and alltrim(xh)==alltrim(thisform.text2.value) &&定位输入值与原表中的数据是否对应if !eof() &&如果没有超出表的范围,即数据符合表的内容 =messagebox('欢迎进入查询系统!','查询系统') &&弹出欢迎对话框do form 表格.scx &&打开新的表格thisform.release &&原登录界面自动退出else &&否则... 即输入值不在表的范围里=messagebox('用户名或密码错误!','查询系统') &&弹出错误对话框endif5、组合框中的代码如何编写?先将组合框的rowsourcetype设置为SQL语句,然后在rowsource里输入select distinct xbfrom 财务一班 into cursor temp1 &&意思就是将性别里的重复值去掉以后添加到该组合框中设置好组合框的数据源以后,再来编写组合框的interactivechange事件的代码,代码如下:public x &&定义全局变量x=this.value && x的值为该控件的当前值,this指的是当前该控件thisform.list1.rowsourcetype=3 &&定义数据源类型为SQL语句thisform.list1.rowsource='select xm from 财务一班where xb=x into cursor temp2'&&定义数据源,利用SQL语句将需要的数据插入到临时表temp2中thisform.refresh &&刷新表单6、组合框:运行表单后,组合框与列表框里出现了相同的内容检查一下数据源类型和数据源有没有问题,注意列表框的rowsource应该为“无”.7、选项按钮组的代码thisform.list1.rowsourcetype=3 &&定义数据源类型为SQL语句do case &&执行多条件语句case this.value=1 &&当选中第一个按钮时“男”thisform.list1.rowsource='select xm from 财务一班 where xb="男" into curs temp1'case this.value=2 &&当选中第二个按钮时“女”thisform.list1.rowsource='select xm from 财务一班 where xb="女" into curs temp2'endcasethisform.refresh8、复选框的代码thisform.list1.rowsourcetype=6 &&定义数据源类型为字段If this.value &&注意此处的value必须与初始值对应,如果value的属性初始值为0,即数值型时,就要将该条语句修改为ifthis.value==1,this指的是该复选框控件thisform.list1.columncount=1 &&该列表框list1的列数目为1.thisform.list1.rowsource='财务一班.xm' &&利用SQL语句添加xm到list1else &&否则... 此处指的是没有选中的时候thisform.list1.columncount=1thisform.list1.rowsource='财务一班.xh' &&该列表框的数据源为xh endifthisform.refresh &&刷新表单。
新编VFP程序设计教程课后答案

新编V F P程序设计教程课后答案(总9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--思考题参考答案第1章数据库系统概述(1)数据库、数据库管理系统及数据库系统的概念分别是什么答:数据库是存储在计算机存储设备上的、结构化的相关数据集合;数据库管理系统是数据库系统中对数据进行管理的软件系统,是数据科系统的核心;数据库系统是指引入了数据库技术的计算机系统。
(2)在关系数据模型中,关系、元组、属性是什么概念答:一个关系就是一张二维表,由行和列构成;元组也称记录,是表中的一行;属性也称字段,是表中的一列。
(3)关系模型允许定义哪几类完整性约束答:实体完整性;参照完整性;用户定义完整性。
(4)关系的基本运算有哪几类答:传统的集合运算(并、交、差等);专门的关系运算(选择、投影、连接)。
(5)Visual FoxPro主要提供了哪几种设计工具答:略。
(6)如何设置当前工作目录答:界面方式:选择“工具|选项”菜单命令,打开“选项”对话框,在“文件位置”选项卡中选中“默认目录”列表项,单击“修改”命令按钮,打开“更改文件位置”对话框,选中“使用默认目录”复选框,单击“定位默认目录”文本框后的“…”命令按钮,选择一个目录后确定即可。
命令方式:SET DEFAULT TO <路径说明>。
(7)项目管理器的功能有哪些答:对项目中的表、数据库、查询、表单、报表、菜单等对象进行组织和管理;实现对项目中各个对象的创建、修改、删除等操作;将应用程序编译成可独立运行的可执行文件等。
第2章 Visual FoxPro的数据与数据运算(1)Visual FoxPro有哪几种常用的数据类型答:字符型、数值型、整型、浮点型、双精度型、货币型、日期型、日期时间型、逻辑型、备注型、通用型。
(2)字段变量与内存变量有何区别答:字段变量是数据表中的一个字段,变量名即字段名,针对不同的记录,同一字段可以有不同的字段值;内存变量是用户在程序中定义的,当程序运行时,在内存中临时创建内存变量,用于存放程序运行的中间结果和最终结果。
vfp常见20道编程题

vfp常见20道编程题VFP常见20道编程题1、求解AX^2 BX C=0的根、其中A、B、C三个参数由键盘输入。
一元二次方程的求根公式是:X=-b±√b2-4ac/2acleartext一元二次方程求解ax^2 +bx+ c=0endtextinput '请输入a的值:' to ainput '请输入b的值:' to binput '请输入c的值:' to cm=b*b-4*a*cif m>=0x1=(-b sqrt(m))/(2*a)x2=(-b-sqrt(m))/(2*a)'x1的值是:',x1'x2的值是:',x2else'此方程无实根!'endif2、编写程序将1-100之间所有能被7和3整除的整数输出clearfor i=1 to 100if i%3=0 and i%7=0iendifendfor3、编写程序计算e,e的近似值计算公式为:e=1 1/1! 1/2! 1/3! ... 1/n!,直到1/n!<0.000001为止e=1n=1do while .t.k=1for i=1 to nk=k*iendform=1/ke=e mif m<0.000001exitendifn=n 1enddo'e=1 1/1! 1/2! 1/3! … 1/n!=',e4、编写程序,计算1!2!3! .......N!=?clearinput '请输入n的值:' to ns=0t=1for i=1 to nt=t*is=s tendfor'1!2!3! .......N!=',s5、从键盘输入十个数,将它们进行降序排列。
clear dime a(10)for i=1 to 10input '请输入一个数:' to a(i)'降序排列为:'for i=1 to 9for j=i 1 to 10if a(i)<a(j)< p="">k=a(i)a(i)=a(j)a(j)=kendifendforalltrim(str(a(i))) ' 'endforalltrim(str(a(i)))6、(1)输出有*号组成的图形:*************************clearfor i=-3 to 3space(abs(i))for j=1 to 7-abs(i)*2 ??'*' endforendfor(2)********************clearfor i=1 to 5space(5-i)for j=1 to 2*i-1 ??'*'endforendfor7、编写一个程序产生一个有20项的Fibonacci数列并输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我vfp程序连编的问题_百度知道liutaoqq123 助理二级(171) | 我的提问 | 我的回答 | 知识掌门人 | 我的消息(0/0) | 百度首页| 退出新闻网页贴吧知道 MP3 图片百科帮助百度知道 > 电脑/网络 > 其他编程语言订阅该问题黑体炉-专业黑体辐射源生产商黑体炉.中科院上海福源光电技术有限公司从事黑体辐射源的研制开发已有二十多年历史,为...zox氧量分析仪显示表它是ZO型系列氧化锆氧气含量分析仪的二次显示仪表(俗称氧量显示仪). 安装方式有二种:...LCD/LED显示表全系列二线制LED/LCD智能显示表,全系列压力变送器及散件现货供应,价格优惠.欧利德电子...湖南维修软启动首选特洛伊专业维修变频器伺服系统 PLC 软启动技术雄厚,服务周到,信誉第一,质量第一鸡西市申通电抗器制造专业制造各种电抗器,启动电抗器,并联电抗器掉电再启动保护监控器-上海神引双...双华电器是一家集科研,生产,销售于一体的专业电动机保护器制造公司.在同行业率先通过I...找软启动就到西安启能高端电器公司提供的晶闸管软起动装置,是一种用于高压大型鼠笼式电机频繁起动的装置,利用先进的晶闸...您想在自己的网站上展示百度“知道”上的问答吗?来获取免费代码吧!如要投诉或提出意见建议,请到百度知道投诉吧反馈。
添加到搜藏已解决我vfp程序连编的问题悬赏分:5 - 解决时间:2007-3-20 09:30我的一个vfp主程序执行重新连编项目时没有错误,可是要联编成exe文件时,会提示连编程序名.app文件时出错,这是为什么?还有我做了一个主界面的表单,可是执行完以后却不能执行以后的程序了,是不是缺少什么命令了?提问者: lixuejiang16 - 试用期一级最佳答案其实,这个问题之所以被频繁地提出,并非是由于初学者的理解能力有问题,而实在是VFP 的设计混乱所致,以至于造成初学者理解上的混乱。
笔者曾在"济南万千"的"软件、编程、数据库"新闻组就此问题发过"窗口问题到此为止"的帖子,反响很大,现根据该帖进行整理,修正补足该帖中的一些不准确之处及遗漏。
本文所提"表单窗口属性",是指那些不但影响表单本身的特征(例如长宽等),而且对表单之外、项目之中的其它"元件"有影响的表单属性,它们包括如下三个:属性意义可选值(黑体为默认值)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="模式"时,执行表单(DOFORM)后使得表单取得焦点,并且一直到它被关闭,在此期间,它的父窗口对象(可能是_Screen 或一个顶层表单)的菜单系统及其所属的子表单都不能用。
就是说,在表单存在期间,它将一直霸占着焦点.b.当WindowType="无模式"时,表单存在期间不会霸占焦点。
有一个例外,当DeskTop=.t.时,执行它时会使系统菜单失效,而DeskTop=.f.时则不会。
(2)当表单的ShowWindow为"做为顶层表单"时:表单的WindowType属性不管是有模式还是无模式,都不会霸占焦点。
5.一般情况,用户的应用系统需要一个主表单(主窗口),您可以将_Screen作为这个主窗口,也可以将项目中的某个"顶层表单"做为"主窗口",很难说那种更好。
但在此笔者建议使用VFP 主窗口做为用户系统的主窗口,这样可能会省去一些麻烦,因为VFP的很多工具条窗口被设计成只能开在_Screen中,例如在打印预览工具条等。
程序编译成EXE后,前者启动时先显示VFP主窗口,后者直接显示程序员自己设计的顶层表单。
对于后者,为屏蔽VFP主窗口,一定要在Config.fpw写入Screen=off(Config.fpw应加入到项目中,这样连编后它将被包含进EXE中,这一来可减少提供安装文件的数量,二来也可避免被用户更改)。
另一方面,很多应用系统程序都喜欢有一个漂亮的或曰自以为漂亮的启动封面,然后再进入主控界面。
如果一方面不希望在显示自己的启动封面前有VFP主窗口抢镜头,另一方面又想让VFP主窗口做为程序的主控界面时,解决办法是:设计一个"顶层表单"做为启动封面,config.fpw中仍须写Screen=off,然后在启动封面展示够了自己的魅力之后,用一句_Screen.Show将_Screen打回原形。
6.ShowWoindow与DeskTop属性仅规定了Form在显示方面的特征,而在"对象"这一更加高级的层面上,"顶层表单"与"从属表单"彼此是平级的,而_Screen虽然在显示方面与"顶层表单"具有相同的地位,但在对象层面却是高一级的家伙,所有表单,不管你是"顶层表单"还是"从属表单",都是它的子对象,这想起来就叫人糊涂,还是赶紧不想的好。
7."为什么我的程序编译后一闪而过?"这个问题有两种可能性,第一种是程序执行完成并退出,第二种是程序正在执行,但界面被隐藏。
对于第二种情况,可直接按"Ctrl-Alt-Del"键观察到。
造成这两种情况的原因如下:我们先看下面的一段示例程序,假如下面的示例程序是项目的主程序,并且应用项目以VFP 主窗口做为自己的主窗口。
*环境设置Do Form myScreen &&启动封面表单 _Screen.Show &&显示VFP主窗口Do myMenu.mpr &&安装菜单系统RETURN为达到在显示启动封面之前不显示VFP主窗口的目的,在Config.fpw中已写Screen=off,当程序执行到Do FormmyScreen这一句时,如果表单myScreen的ShowWindows属性被设为"在屏幕中",则不管是在开发环境还是在编译环境下,程序都将停下来,表单被显示在_Screen中,而_Screen被隐藏了,因此表单跟着也被隐藏了,所以在屏幕上什么也看不见。
这就是第二种情况的产生原因。
为了避免这种错误的出现,必须将myScreen表单的ShowWindow的属性设为"做为顶层表单",这样就可使在_Screen被隐藏的情况下,myScreen仍然可以被显示出来。
但请注意,在此情况下,DoFormmyScreen这句话执行后,程序并不能停下来,而是顺序地执行下去,一直到执行到RETURN 后程序退出,这也就是著名的"一闪而过"现象了。
为此必须在程序中包含事件处理命令Read Events使程序停下来,如下:*环境设置Do Form myScreen &&启动封面表单Read Events &&开始事件处理:使启动封面停下来_ Screen.Show &&显示VFP主窗口Do myMenu.mpr &&安装菜单系统Read Events &&开始事件处理RETURN程序执行Do Form myScreen后,将启动封面显示在屏幕上,然后向下执行到ReadEvents开始事件处理,此时启动封面表单必须由用户关闭或由表单事件关闭,否则程序将一直停在ReadEvents这一句上。