一个比较规范的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 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
&& 完毕。

 
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值