分享

VFP的主程序写法

 悟静 2009-06-16
* 程序名: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 gcLabelsPath 
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 系统数据库的连接句柄 
gnHandleMaster = 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" && 桌面,也就是你的程序背景(图片略) 

* 第十步 打开或创建本地数据库 
cFoxDb=***ataPath+ gcFoxDatabase + ".dbc" 

If Not Files(cFoxDb) && 如果指定的数据库不存在 
   Create Database &cFoxDb            && 创建它 
Endif 

* 启动事件处理 
Read Events 

* 将释放当前的 ON SHUTDOWN 命令 
ON SHUTDOWN 


* 程序:FileExit 
* 作用:解决程序运行后,点击主窗口关闭按钮[X]不能退出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            &&释放内存中所有的菜单定义。 
Clear Popups          &&释放内存中所有用DEFINE POPUP命令创建的菜单定义。 
Clear Windows        &&释放内存中所有用户自定义窗口的定义,并从VFP主窗口或活动的用户自定义窗口中清除窗口。 
Clear                      &&清屏 
Set Safe On 
_Screen.Picture="" 
=SQLDISCONNECT(0) 
Quit 
&& 完毕。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多