一个比较规范的VFP主程序,适合初学者参考。[摘抄]学习中。。。
原文摘自:http://wenku.baidu.com/link?url=vjAFdJxzusuDayrEkc1i8m4vFdbo7jKTWaRJ5EqhTCeMSyInxeqV5VK1A6y99O2Z8KNGuPHNDOT7TOD8AOyZZWQJL4C3cxKcUuUpCVH-I3S。。。看完我都蒙了,书里哪讲过这么多啊,还说“比较规范的”,这么谦虚,让不让人活了?百度没有下载卷了,手抄吧,加强记忆!
一个比较规范的VFP主程序,适合初学者参考。
*程序名:main.prg
*作用:整个系统的入口
*路径:/你的程序目录/prgs
SET TALK OFF
SET ESCAP OFF
*开始,程序错误处理
ON ERROR DO Err.PRG With Error(),Message(),Message(1),Program(),Lineno(1)
*第一步,清理环境
CLOSE ALL && 关闭所有工作区中打开的数据库、表和索引,并选择工作区 1。
CLEAR MENUS && 从内存中释放所有的内存变量和数组以及所有用户自定义菜单栏、
&& 菜单和窗口的定义。还从内存中删除所有用DECLARE-ALL注册
&& 的外部Windows 32位动态链接库(DLLS)。
*关闭系统菜单
*如果在发出SET SYSMENU SAVE命令之后修改了菜单系统,可以通过发出
*SET SYSMENU TO DEFAULT命令来恢复前面的设置。
SET SYSMENU SAVE
*在程序执行期间废止Visual FoxPro主菜单栏。
SET SYSMENU OFF
SET SYSMENU TO
*第二步,设置环境
*退出Read时保存数据缓冲区内容
SET AUTOSAVE ON
*使用INSERT、APPEND和BROWSE命令创建新记录时,不将当前记录数据复制到新记录中。
SET CARRY OFF
*指定是否可以用在文本框中键入最后一个字符的方法退出文本框。
SET CONFIRM OFF
*日期不显示世纪部分
SET CENTURY OFF
*设置日期格式为“YY-MM-DD”格式
SET DATE ANSI
*不显示已经删除的记录
SET DELETE ON
*决定能否使用LOCK()或RLOCK()锁定多个记录。
SET MULTILOCKS ON &&网络编程专用
*确定ATLTER TABLE、CREATE TABLE和INSERT -SQL命令如何处理null值。
SET NULL ON
*指定当字段是空值(NULL)显示的文本为
SET NULLDISPLAY TO '' &&专门百度了一下这个,解释很范范,看来要自己动手试试了
*改写已有文件之前不显示对话框
SET SAFETY OFF
*移去图形状态栏。
SET STATUS BAR OFF
*第三步,设置你的程序路径
*设置程序主目录
Public gcMainPath
gcMainPath=Sys(5)+Sys(2003)+"/"
Set Default To &gcMainPath
*数据目录(本地数据库和表)
Public ataPath
ataPath=gcMainPath+"Data/"
*程序目录
Public gcPrgsPath
gcPrgsPath=gcMainPath+"Prgs/"
*图片目录
Public gcPicsPath
gcPicsPath=gcMainPath+"pics/"
*表单目录
Public gcFormsPath
gcFormsPath=gcMainPath+"Forms/"
*菜单目录
Public gcMenusPath
gcMenusPath=gcMainPath+"Menus/"
*标签目录
Public gcLabelsPaht
gcLabelsPath=gcMainPath+"Labels/"
*报表目录
Public gcReportsPath
gcReportsPath=gcMainPath+"Reports/"
*第四步,初始化键盘
CapsLock(.F.)
IMEStatus(0)
Insmode(.T.)
Numlock(.T.)
*第五步,打开自定义类库、过程文件
SET CLASSLIB TO gcMainPath+"vcx/MyVCX.vcx" && 这个文件哪来的?
SET PROCEDURE TO gcPrgsPath+"Myproc.prg" && 这个文件也没见过
*设置不显示ODBC登录对话框
SQLSETPROP(0,"DispLogin",3) &&网络专用
*第六步,声明其他全局变量
*数据源名称
Public SN
SN=,,'' && 这个和下面几个,什么节奏?抄完再说。。。
&& 这是一种特别的引号,还是百度文库把引号搞的变形了?
*用户登录名
Public gcUID
gcUID=,,''
*用户登录口令
Public gcPWD
gcPWD=,,''
*当前登录用户姓名(中文)
Public gcName
gcName=''
*前后端数据库名
Public gcSQLDatabase,gcFoxDatabase
gcSQLDatabase=,,资料管理'' &&后羰SQL数据库
gcFoxDatabase=,,资料管理'' &&前端VFP数据库
*连接句柄
Public gnHandleMaster && 与后端MASTER系统数据库的连接句柄
gcHandleMaster=0
Public gnHandleUser && 与后端用户数据库"gcSQLDatabase"的连接句柄
gnHandleUser=0
*第七步,检查登录账号
*调用登录表单"login.scx"
DO FORM gcFormsPath+"login.scx" TO gnHandleUser
*结果如图所示 。。。文库里没图
*如果登录成功 gnHandleUser>0 表示登录成功,反之,失败
If gnHandleUser<=0 && 登录失败
QUIT &&退出程序
Endif
*指定当试图退出VFP时要执行的程序
ON SHUTDOWN DO gcPrgsPath+"fileExit.prg" && 代码在后面加入
*第八步,调用程序主菜单
DO gcMenusPath+"mainmenu.mpr"
*第九步,显示程序封面,桌面
DO FORM gcFormsPath+"title.scx" &&封面,什么东东,又封面,又桌面的。复杂程度超出我的理解承受范围了
&&有点溢出
DO FORM gcFormsPath+"Desktop.scx" &&桌面,也就是你的程序背景(。。。)
*如果要使主程序画面显示在屏幕中央,则将画面 属性 LEFT 调整一下,即将画面左顶角坐标值 往屏幕中央调节。。
*第十步,打开或创建本地数据库
cFoxDb=***ataPath+gcFoxDatabase+".dbc" &&为什么前面有三个星,不迷糊的,解释下,但没分可给
If Not Files(cFoxDb) &&如果指定的数据库不存在
CREATE DATABASE &cFoxDb &&创建它
Endif
*启动事件处理
READ EVENTS
*将释放当前的ON SHUTDOWN命令
ON SHUTDOWN
+++++++++++++++另一个辅助程序文件
*程序:FileExit.prg
*作用:解决程序运行后,点击主窗口关闭按钮[×]不能退出VFP的问题 &&有这种情况,我以前好像遇到过呢
If Messagebox('您真的要退出本系统吗?',4+32+256,'退出确认')<>6 AND gnHandleUser>0
RETURN
Endif
*Do While Txnlevel()>0
*Rollback
*Enddo
CLEAR EVENTS
ON SHUTDOWN
*恢复环境
SET SYSMENU TO DEFAULT
With _Screen
.WindowState=2 &&最大化
.BackColor=Rgb(255,255,255)
.Caption="Microsoft Visual FoxPro"
.Icon=''
Endwith
*关闭数据库及表
If Used("cfg")
Use In cfg
Endif
if Used("dsn")
Use In dsn
Endif
If Used("uid")
Use In uid
Endif
CLOSE DATABASE ALL &&关闭所有数据库
CLOSE ALL && 关闭各种类型的文件,但不关闭命令窗口、调试窗口、帮助、跟踪窗口。
CLEAR MENUS && 释放内存中所有用DEFINE POPUP命令创建的菜单定义。
CLEAR WINDOWS && 释放内存中所有用户自定义窗口的定义,并从VFP主窗口或
&&活动的用户自定义窗口中清除窗口。
CLEAR &&清屏
SET SAFE ON
_Screen.Picture=""
=SQLDISCONNECT(0)
QUIT &&终于完成了 。。。。不知道有没有抄错的地方
[ 本帖最后由 不懂才问 于 2015-2-24 21:24 编辑 ]