| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2011 人关注过本帖, 2 人收藏
标题:一个比较规范的VFP主程序,适合初学者参考。[摘抄]学习中。。。
只看楼主 加入收藏
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
结帖率:91.53%
收藏(2)
 问题点数:0 回复次数:12 
一个比较规范的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 编辑 ]
收到的鲜花
  • qingfameng2015-02-24 18:50 送鲜花  10朵   附言:赞一下
搜索更多相关主题的帖子: 百度 主程序 
2015-02-24 15:42
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
VFP常见指令,链接如下:
http://wenku.baidu.com/link?url=y4U5YIbhduC_ALPBxVs6ofaDIInZk-9n4j2qjl4VF0SSCQ0DTHwTiuz4jzpN4iih-NObM3pTCNGokPFgXhWHTqlKsY4Zhw98lx5deoxf61_

牛文啊  先收藏一下

[ 本帖最后由 不懂才问 于 2015-2-24 20:19 编辑 ]

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-02-24 20:07
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
集中收藏中。。。。。
Config.fpw文件的配置
原文链接:http://www.


要创建一个配置文件,可使用Visual FoxPro编辑器,或者任何可以文本编辑器,来创建一个位于Visual FoxPro安装目录的文本文件。早期版本的Visual FoxPro将Config.fpw 文件放置在启动目录中。Config.fpw是默认的配置文件。可以创建任意的程序文件并将其设定为默认配置,方法是双击这个文件或者使用命令行参数来启动Visual FoxPro。

如果你创建了一个新的配置文件,可以将其保存为任何文件名。习惯上,配置文件的扩展名是.fpw。

术语和语法 说明

1、ALLOWEXTERNAL ON |  指定在内部的配置文件完成后,是否从 -C 命令行子项 (或者路径中定位) 的外部配置文件进行设置。ALLOWEXTERNAL 除非在应用程序内绑定,否则将被忽略。

2、BITMAP | OFF 指定 Visual FoxPro 是否先将屏幕和表单改动信息写到off-screen bitmap,然后再执行 a bit block transfer (bitblt) 将其显示到屏幕上。BITMAP = OFF 能够在应用程序使用 Windows 终端服务器的客户端的情况下提升其性能。

3、CODEPAGE = nValue | AUTO 指定描述文件所使用的字符集的一个数值。将CODEPAGE 设为 AUTO 将选定当前操作系统所用的代码页。

4、COMMAND = cVisualFoxProCommand 指定 Visual FoxPro 启动时要运行的 Visual FoxPro 命令。cVisualFoxProCommand 定义所需执行的命令。

5、EDITWORK path 定义文本编辑器放置其工作文件的位置。由于工作文件可能较大,请指定具备足够剩余空间的位置。

6、INDEX extension 定义 Visual FoxPro 索引文件的扩展名。默认值:.idx

7、LABEL extension 定义 Visual FoxPro 标签文件的扩展名。默认值:.lbx

8、_MENUDESIGNER = cProgramName 定义外部菜单设计程序。默认值:空白字符串""。

10、9、MVCOUNT 设定 Visual FoxPro 使用的变量数的最大值。取值范围从 128 到 65,000。默认值:16,384

11、OUTSHOW = | OFF 是否开启按下 SHIFT+CTRL+ALT 将当前输出设备上的所有窗口隐藏起来。

12、PROGCACHE = nMemoryPages默认值:144 (-2 for MTDLL)指定以页尾单位的内存容量(地址空间),这个内存容量在 Visual FoxPro 启动时进行分配,或者是 Visual FoxPro MTDLL COM 服务程序分配给其每个线程的程序缓存(运行程序所需的内存)。每个内存页等于64K,因而默认设定等于9MB多一点的分配空间。当缓存用光时, Visual FoxPro 将其写入磁盘以便移出不用的项目。也有可能 Visual FoxPro 不能释放足够的内存,导致编号1202的错误 (程序太大)。修正 PROGCACHE 设定能够防止这个错误的发生。注意:虽然这个设定在 Visual FoxPro 开发的产品或普通的运行程序中使用,但其主要应用是在单一服务中创建多个线程的 MTDLL COM Servers 中。在 Visual FoxPro 9.0 中,MTDLL COM Servers 的默认值是-2。

当 nMemoryPages 超过0时,Visual FoxPro 分配一个固定大小的程序缓存。你可以定义的值在1到65000。如果你设置 nMemoryPages 为 0,没有程序缓存被使用。相代替地,Visual FoxPro 依据操作系统的调度来使用动态内存分配。如果你传递一个小于 0 的值给 nMemoryPages,Visual FoxPro 使用动态内存分配,但将其限制在特定的内存容量上 (nMemoryPages * 64K)。当这个限制值达到时,Visual FoxPro 将分配的程序写入磁盘以释放内存。可以调用 SYS(3065) 来获取当前的 PROGCACHE 设置。CLEAR PROGRAM 将试图清除不可调用的代码而不管其设定如何。

注意:Visual FoxPro OLE DB 提供程序忽略这个设定,因其使用动态内存分配 (PROGCACHE=0)。

13、PROGWORK path 定义 Visual FoxPro 存储程序缓存文件的位置。为提升性能,特别是在多用户环境中,指定快速的磁盘,比如可用的本地磁盘或内存。由于文件可能逐渐增大,至少应提供256K的缓存。默认值:取决于操作系统。

14、REPORT extension 定义 Visual FoxPro 报表文件的扩展名。默认值:.frx

15、RESOURCE path[\file] | OFF ? 指定 FoxUser.dbf 资源文件的位置,或者防止 Visual FoxPro 使用资源文件。file 参数是可选的。如果 file 被忽略,Visual FoxPro 将执行搜寻 FoxUser.dbf 文件。如果这个文件不存在,则创建它。默认值:启动目录作为 path 并且 FoxUser.dbf 作为 file。

16、SCREEN = ON | OFF 定义打开 Visual FoxPro 时,是否显示 Visual FoxPro 主窗口。当应用程序包含一个或多个显示在 Windows 桌面的顶层表单时,将 SCREEN 设为 OFF 相当有用,使得 Visual FoxPro 主窗口不再出现。默认值:ON

17、SORTWORK path 指定 SORT 和 INDEX 命令所使用的工作文件位置。由于工作文件可能达到数据表的两倍大,请指定一个具备充足剩余空间的位置。如欲提升性能,特别是在多用户环境中,请指定快速的磁盘,比如本地磁盘。默认值:取决于操作系统。

18、STACKSIZE = nValue 指定如 DO 命令等操作所需的在 32 到 64,000 之间的嵌套层次。注意:仅可以在 Visual FoxPro 启动时改变嵌套层次。 默认值:128

19、TEDIT [/N] editor 指定你使用 MODIFY COMMAND 或 MODIFY FILE命令来编辑程序文件所使用的文本编辑器名称。包含可选的 /N 子项的 TEDIT 来指定 Windows 文本编辑器。默认值:Visual FoxPro 编辑器

20、TITLE title 定义显示在 Visual FoxPro 主窗口标题栏中的标题。默认值:"Microsoft Visual FoxPro"

21、TMPFILES path 当 EDITWORK,SORTWORK 和 PROGWORK 没有在配制文件中定义的情况下,定义临时文件的位置。由于工作文件可能变得非常大,请定义包含足够空间的位置。如欲提升性能,特别是在多用户环境中,请指定快速的磁盘,比如本地磁盘。默认值:取决于操作系统。

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2015-02-24 21:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這些都是很基本的知識點,多讀點幫助就能明白的。讀的時候,不是你已經有那些需求,而是先瀏覽所有關於SET環境的指令,全看過了,裏面提到什麽,心中有個印象,在實踐的時候,它們能夠自動冒出來,再去深鑽。即首先知道大概有什麽,遇到問題,能夠想得到人家已經提到過了的,知道在哪裏找——其實在論壇上泡也是這樣,不要以爲別人的帖子與己無關,到遇到問題的時候,也不知道別人早已探討過的。很多問題,論壇反復有新人,答的人不勝其煩,到最後乾脆不理睬,原因也是這裏。

授人以渔,不授人以鱼。
2015-02-24 21:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
config.fpw是SET指令從外部注入程序的機制,由vfp運行庫處理,其指令集與内部SET指令是一致的,衹是不用寫SET字眼而已。

[ 本帖最后由 TonyDeng 于 2015-2-24 21:55 编辑 ]

授人以渔,不授人以鱼。
2015-02-24 21:53
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2202
专家分:3862
注 册:2007-4-27
收藏
得分:0 
新年上班,学习学习。祝二位新年好

只求每天有一丁点儿的进步就可以了
2015-02-25 07:56
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11794
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用TonyDeng在2015-2-24 21:45:11的发言:

這些都是很基本的知識點,多讀點幫助就能明白的。讀的時候,不是你已經有那些需求,而是先瀏覽所有關於SET環境的指令,全看過了,裏面提到什麽,心中有個印象,在實踐的時候,它們能夠自動冒出來,再去深鑽。即首先知道大概有什麽,遇到問題,能夠想得到人家已經提到過了的,知道在哪裏找——其實在論壇上泡也是這樣,不要以爲別人的帖子與己無關,到遇到問題的時候,也不知道別人早已探討過的。很多問題,論壇反復有新人,答的人不勝其煩,到最後乾脆不理睬,原因也是這裏。

的确如此

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-02-25 08:02
ljyjitan
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-3-1
收藏
得分:0 
学习了
2015-03-01 14:47
ljyjitan
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-3-1
收藏
得分:0 
学习了!!!
2015-03-03 14:57
ILoveVFD
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:218
专家分:147
注 册:2015-5-2
收藏
得分:0 
不错,学习了
2015-05-04 18:15
快速回复:一个比较规范的VFP主程序,适合初学者参考。[摘抄]学习中。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028881 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved