关于VFP,谁会做问题描述里网址
l 小组如何协同工作来完成一个设计题目?
Ø 命名统一各种文件:集体协商定好所选设计题目的数据表、数据库、菜单、报表、项目文件和其他表单文件的名称。
Ø 数据表要统一:表的结构由小组集体决定,确定下来后不要更改,如有变动要通知所有组员知道,否则最后不能联编在一起。
Ø 统一文件存放路径。 如:都存在f:\xxx文件夹中。
l 如何备份阶段性成果文件?
Ø 退出VFP,再备份文件,注意文件备份要全面,不要遗漏文件。如:表单形成两个文件:scx 表单...全部
l 小组如何协同工作来完成一个设计题目?
Ø 命名统一各种文件:集体协商定好所选设计题目的数据表、数据库、菜单、报表、项目文件和其他表单文件的名称。
Ø 数据表要统一:表的结构由小组集体决定,确定下来后不要更改,如有变动要通知所有组员知道,否则最后不能联编在一起。
Ø 统一文件存放路径。
如:都存在f:\xxx文件夹中。
l 如何备份阶段性成果文件?
Ø 退出VFP,再备份文件,注意文件备份要全面,不要遗漏文件。如:表单形成两个文件:scx 表单文件和。
sct表单备注文件,两个都要备份,否则表单打不开。
Ø 解决办法:请备份整个设计文件夹。
l 如何设计系统的数据表?
Ø 为了避免信息的重复存储(信息冗余),表设计的原则是:一个主题的信息形成一个表。
Ø 如学生成绩管理系统:学生信息表(学号,姓名,性别等)、课程表(课程号,课程名称)、成绩表(学号,课程号,成绩)
l 为什么文件找不到了?
Ø 原因:当前工作目录下没有这个名称的文件。
Ø 请在做设计之前设置好你的工作目录。
l 怎样更改表单的最大设计区域(640*480 800*600 1024*768)?
Ø 工具/选项/表单/最大设计区域/选择合适的分辨率:如800*600或1024*768。
l 如何给表单填加背景图片?
Ø 不要直接用表单的picture来填加背景图片,图片的大小不可控制。
Ø 解决办法:用图像控件:image, 来显示背景图片(缩放方式为:变比填充),并在表单的activate事件中用代码方式对image 控件的位置(top=0、 left=0) 和大小(height、width)属性做适当的设置,让image 控件的大小等于表单的大小。
Ø 若想实现表单的尺寸大小改变时,背景图片同步改变大小,请在表单的resize事件中做上述同样的代码设置即可。
l 为什么回不到设计状态?
Ø 程序挂起了,参看教材12章:程序的调试部分---挂起suspend命令。
Ø 解决办法:在命令窗口中输入命令:cancel回车;或者单击“程序”菜单中的“取消”命令。
l 怎样快速找到出错的命令行代码?
Ø 出错时,点“挂起”来打开调试器,看到出错的行,找到原因;
Ø 在调试器中单击,“跳出”工具按钮,来回到错误状态;
Ø 单击“取消”按钮,回到设计状态修改错误代码。
l 为什么数据类型不匹配?
Ø 请注意表中字段的数据类型与你写的表达式的数据类型一致,数据类型不一致不能运算。如表达式:123>”1000”
Ø 解决办法:用转换函数(推荐用前者)或者改表中的字段类型。
l 如何在一个顶层表单中调用一般菜单?
1、建立一般菜单
Ø 文件/新建/菜单-----存成菜单定义文件。MNX
Ø 显示/常规选项/选中“顶层表单” (告诉系统将来这个菜单要在一个顶层表单中调用)
Ø 生成。
MPR菜单程序文件
2、在一个“顶层表单”的表单文件中调用上面的菜单
Ø 将表单设置为顶层表单:将表单的showwindow设置为2。
Ø 顶层表单的init事件代码如下:DO xx。
MPR WITH THIS, 。T。
l 如何在一个表单中调用快捷菜单?
Ø 新建/菜单/快捷菜单(同一般菜单)
Ø 保存文件MNX-----生成文件MPR
Ø 在表单(控件)的右击事件(Rightclick)来调用,输入代码:Do r
l 如何书写主程序?
** g**
_ sible=。
f。
do form x
read events
quit
l 用VFP编写管理系统的一般模式是什么?
主程序( g) 调用 密码验证表单(顶层表单) 调用 主控表单(顶层表单) 调用 菜单( r)—
调用 其他功能表单(showwindow属性设置为1:在顶层表单中)
注:顶层表单:showwindow属性设置为2:作为顶层表单
l 浏览功能表单的设计思路?
是一个数据表单,表单上可以有相应的控件(从数据环境中直接拖入即可),要求控件只读,还要有一些按钮来移动记录指针。
还可以增加简单的查询功能,来实现按查询的条件来浏览表中的记录信息。
注:若用到表格(grid)控件,请去掉表格控件的删除列,即修改deletemark属性:deletemark=。f。
l 查询功能表单的设计思路?
Ø 用set filter to实现:
是一个数据表单,表单上有相应的表格(grid)控件,(表格控件要求只读),用文本框来接收用户的查询关键字段的值,再用set filter to命令来对表格控件的数据源表进行条件过滤,来模拟查询的效果。
若是多关键字查询,请用选项按钮组来让用户选择要查询的关键字类别,如:按姓名或按学号等。
Ø 用SQL语句Select实现:
是一个数据表单,表单上有相应的表格(grid)控件,(表格控件要求只读),用文本框来接收用户的查询条件,填加一个“查询”按钮,单击该按钮时,执行select查询语句,查询语句的结果放到表格(grid)控件中显示(该表格控件的数据源用代码方式设置为: cordsourcetype=4,即SQL说明; cordsource=“select * from 表 where 条件 into cursor temp”。
)
注:若用到表格(grid)控件,请去掉表格控件的删除列,即修改deletemark属性:deletemark=。f。
l 打印功能表单的设计思路?
Ø 先做有关数据表的报表格式文件(frx)。
Ø 做一个表单,上有按钮控件,单击该按钮,执行预览报表的命令:
report form x preview
Ø 若想实现条件打印预览,只需在上面的命令中加上for条件语句:
report form x preview for
l 修改功能表单的设计思路?
实质是一个数据表单,表单上有相应的表格(grid)控件(表格控件要求只读),或相应的ole绑定控件(从数据环境中直接拖入表单中产生的控件,控件要求只读),还有“修改”按钮,单击该按钮,去掉上述控件的只读属性,允许用户来修改表单中显示的记录数据。
还有一个“确定”按钮,单击该按钮,设置相应控件的只读属性为真,不允许用户修改数据,表示数据修改结束。
注:若用到表格(grid)控件,请去掉表格控件的删除列,即修改deletemark属性:deletemark=。
f。
l 删除功能表单的设计思路?
Ø 假删除方法:建一个数据表单,表单上有相应的表格(grid)控件(表格控件要求只读)显示数据表中的记录,并且去掉表格(grid)控件的删除列,即修改deletemark属性:deletemark=。
f。;由用户在表格中选择一个要删除的记录,单击“删除”按钮,给记录加上删除标记,即逻辑删除记录;然后执行set deleted on 命令来屏蔽(不显示)有删除标记的记录,来模拟删除的效果。最后,在“退出”按钮中,执行物理删除命令:pack,来真正删除表中的记录。
注:表必须以独占方式打开(可用命令:use 表 exclusive;也可在设置表单数据环境的属性:exclusive=。t。),否则会删除失败。
l 删除表单中的恢复删除功能实现?
表单中增加一个接收“记录号”的文本框和一个“恢复删除”按扭,单击该按钮,首先不屏蔽(显示)有删除标记的记录,然后执行recall命令来恢复相应的记录,最后再设置系统状态为:屏蔽(不显示)有删除标记的记录。
l 增加记录功能表单的设计思路?
方法1:是一个数据表单,表单上可以有相应的控件(从数据环境中直接拖入即可),要求控件只读。增加一个“增加记录”按钮,单击该按钮,实现在表的末尾增加一条空记录,并去掉相应字段的绑定控件只读属性,允许用户来修改新记录的内容。
注:如果数据库表中设置了主索引,上述方法会失败。原因是主索引的关键字是不许为空的。解决办法是:去掉表的主索引或者用SQL中的insert into 命令来实现。
方法2:建一个表单,表单上填加相应的控件,来接收用户输入的相应字段的值,然后用SQL中的insert into 命令来把新记录的值追加到表中即可。
insert into 表名(字段1, 字段2。。) values( 值1,值2…)
l 为什么我的程序编译后一闪而过?
这个问题有两种可能性,第一种是程序执行完成并退出,第二种是程序正在执行,但界面被隐藏。
对于第二种情况,可直接按"Ctrl-Alt-Del"键观察到。造成这两种情况的原因如下:我们先看下面的一段示例程序,假如下面的示例程序是项目的主程序,并且应用项目以VFP主窗口做为自己的主窗口。
*环境设置
Do Form myScreen &&启动封面表单 _
Screen。Show &&显示VFP主窗口
Do r &&安装菜单系统
RETURN
为达到在显示启动封面之前不显示VFP主窗口的目的,在Config。
fpw中已写Screen=off,当程序执行到Do Form myScreen这一句时,如果表单myScreen的ShowWindows属性被设为"在屏幕中",则不管是在开发环境还是在编译环境下,程序都将停下来,表单被显示在_Screen中,而_Screen被隐藏了,因此表单跟着也被隐藏了,所以在屏幕上什么也看不见。
这就是第二种情况的产生原因。为了避免这种错误的出现,必须将myScreen表单的ShowWindow的属性设为"做为顶层表单",这样就可使在_Screen被隐藏的情况下,myScreen仍然可以被显示出来。
但请注意,在此情况下,Do Form myScreen这句话执行后,程序并不能停下来,而是顺序地执行下去,一直到执行到RETURN后程序退出,这也就是著名的"一闪而过"现象了。为此必须在程序中包含事件处理命令Read Events使程序停下来,如下:
*环境设置
Do Form myScreen &&启动封面表单
Read Events &&开始事件处理:使启动封面停下来
_ Screen。
Show &&显示VFP主窗口
Do r &&安装菜单系统
Read Events &&开始事件处理
RETURN
程序执行Do Form myScreen后,将启动封面显示在屏幕上,然后向下执行到Read Events开始事件处理,此时启动封面表单必须由用户关闭或由表单事件关闭,否则程序将一直停在Read Events这一句上。
不管myScreen表单由谁关闭,在关闭代码中必须包含一句Clear Events的停止事件处理命令,以便开始执行Read Events的下一句指令,顺序执行完成_Screen。Show及Do r后,用户的主界面就建立完成,同理,此处还需要一个事件处理命令让程序再次停下来,开始菜单系统的命令处理,一般情况,菜单系统中将包含的"退出"项,其中有"Clear Events"清除事件处理代码,从而停止第二条"Read Events"事件处理命令,退出整个系统。
以上经验恐有谬误,敬请批评!
最后,VFP是个所谓"让我欢喜让我忧"的东东,有时百依百顺,有时莫名其妙。未曾恋爱过的男性最适合习之,以便为今后的恋爱打下坚实的心理基础。
在梅子那边看到经典问题里面有这个题目,话说了一堆,却没说到点子上。
说实话,以前也从来没看到过说到点子上的文章。大多数人也就是知道在主程序里面加了Read events 后能够避免一闪而过的问题而已,到底是什么原理还是不清除。
其实很简单,主程序是个什么文件?它就是一个PRG。
普通的PRG文件执行情况是怎么样的?从头到尾,每一行代码执行下去,然后立即退出。
OK,现在,再想一想,我们想要做的,是怎么样一个程序?是一个会出现菜单、主窗口,等待我们选择某个功能去执行的程序。
也就是说,程序应该打开菜单、主窗口以后就中途停下来,等待我们操作的程序。
好,现在再想一下,怎么在PRG中间的某个地方让程序停下来进入那么一种状态?Wait window
可以做到,不过一按鼠标马上就又继续执行了,要让程序一直等着,即使进行了几个操作也不会退出,就只有用Read events了。
随便建一个PRG,不用把它设置成主程序,只要这个PRG中间有Read events,那么程序就会停下来等着,MSDN里面的许多示例就是这么干的。
现在,一闪而过的问题应该清楚了吧?你的菜单是打开了、主窗口是打开了,但是,因为没有进入这个等待状态,所以,程序马上继续执行到末尾然后退出,菜单、主窗口都马上又被关闭了。
这些,都是一瞬间就执行完的,结果,看起来就是一闪而过。
再看看Clear events,它的意思,就是从这种等待状态中退出。许多人把 Clear events 误会成一个退出程序的命令。不对,Clear events只是退出这种等待状态而已,如果你在它的后面再加上一个 Read events,那么程序就又会进入一种等待状态而不会结束。
由于Clear events并不是立即退出程序,因此,在Clear events 后面的代码还是会继续执行,比如我们用来关闭数据库、恢复系统环境设置等等的命令之类的,都可以放在Clear events后面去执行。
这个解释,应该是【一闪而过】和【Read events】的最终解释了吧!
。收起