请问,如何用程序方法关闭已经存在的VFP表单

zkjstar 2010-10-13 09:54:57
我做的系统里面通过菜单来调用表单,目前的代码可打开表单,可是有许多个表单的关闭必须要手动通过按钮关闭,但是我的表单大小不一样,多个表单同时显示会显得凌乱,请问高手有没有方法可让我打开新的表单之前把之前的表单给关闭掉。(顺便问下,能否做一个功能,就是我打开某个表单的时候,这个表单必须关闭后才能进行其他的操作,否则这个打开的表单就独占了活动窗口)
下面是我的一段调试代码

LOCAL oErr AS Exception
#DEFINE CL CHR(13)+CHR(10) &&定义常量CL,取代回车和换行
TRY
AEVENTS(aImageClick,0) &&获取事件源
cCaption=ALLTRIM(aImageClick[1].Caption)&&获取事件源的Caption属性
cNameCaption=ALLTRIM(aImageClick[1].NameCaption)&&获取事件源的自定义属性NameCaption
IF FILE(SYS(5)+SYS(2003)+"\WebForm\&cNameCaption..scx") &&判定名称和NameCaption相同的表单是否存在
IF Wexist(cNameCaption)=.t. &&判定表单窗体是否存在
Activate Windows &cNameCaption. &&显示并激活表单
ELSE
DO Form SYS(5)+SYS(2003)+"\WebForm\&cNameCaption..scx" Name &cNameCaption.&&运行表单cNameCaption
ENDIF
ENDIF
CATCH TO oErr
oErr.UserValue = "二级菜单调用的表单"
LOCAL cText as String
cText=;
ALLTRIM("错误号:"+STR(oErr.ErrorNo))+CL+;
ALLTRIM("行号:"+STR(oErr.LineNo))+CL+;
ALLTRIM("错误信息:"+oErr.Message)+CL+;
ALLTRIM("错误所在的过程/程序:"+oErr.Procedure)+CL+;
ALLTRIM("详细资料:"+oErr.Details)+CL+;
ALLTRIM("水平堆栈:"+STR(oErr.StackLevel))+CL+;
ALLTRIM("行内容:"+oErr.LineContents)+CL+;
ALLTRIM("用户:"+oErr.UserValue)+CL+CL
STRTOFILE(cText ,SYS(5)+SYS(2003)+'\ErrorLog\ErrorTxt.txt',.t.)
MESSAGEBOX(oErr.UserValue+",详情请参看错误日志",48,"信息提示")
CLEAR EVENTS
QUIT
ENDTRY
...全文
781 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
vfpangle 2010-12-04
  • 打赏
  • 举报
回复
FormCount = _Screen.FormCount
if formcount>=2
FOR i =2 TO FormCount
oForm=_Screen.Forms(i)
if TYPE("oForm") == "O"
oForm.Release()
endif
ENDFOR
ENDIF
zkjstar 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 apple_8180 的回复:]
* 假设你的标签 Name 值为 Label1,

你的要关闭的所有表单均要这运行,并且这些表单不能是模式表单,否则无法在别处判断了,因为如果是模式表单,模式表单之外是非活动的
表单的Load事件:
If Type('表单文件名')='O' && 表单文件名不是表单Name值
Return .F.
Else
Public 表单文件名
Endif

表单的Unlo……
[/Quote]

首先问十豆三兄弟要点分分,我没分发帖了。
然后我的新帖如下:
http://hi.csdn.net/space-2683735-do-album-picid-654587.html
如上图,表格时一个CURSOR表格,表格里面有7个字段
其中大的红线部分是一个容器控件,里面有14个TEXT控件
小的红线部分是一个CHECH控件,那么我创建怎么样的CREATE cursor语句,才能让这个不出错呢?我记得我昨天调试的时候,CHECK那个控件的VALUE定义的是整数型的,好像不行,说数据类型不对,难道我要做成逻辑型的吗?
十豆三 2010-10-14
  • 打赏
  • 举报
回复
* 假设你的标签 Name 值为 Label1,

你的要关闭的所有表单均要这运行,并且这些表单不能是模式表单,否则无法在别处判断了,因为如果是模式表单,模式表单之外是非活动的
表单的Load事件:
If Type('表单文件名')='O' && 表单文件名不是表单Name值
Return .F.
Else
Public 表单文件名
Endif

表单的Unload事件:
Release 表单文件名


然后你判断并要关闭与 Label 同名的表单时:

lcLabelCaption=Thisform.Label1.Caption
If Type("&lcLabelCaption.")='O'
&lcLabelCaption..Release
Endif
十豆三 2010-10-13
  • 打赏
  • 举报
回复
顺便问下,能否做一个功能,就是我打开某个表单的时候,这个表单必须关闭后才能进行其他的操作,否则这个打开的表单就独占了活动窗口

除主表单(顶层表单)外,所有子表单的 WindowType 设为1(即模式表单),ShowWindow 属性设为1(在顶层表单中)

这样就只能有一个活动表单了。
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 zkjstar 的回复:]
引用 23 楼 wwwwa 的回复:
下午我做1个简单 示例

多谢了
[/Quote]

冒昧的问下,为什么这里的斑竹回答问题不采用远程协助呢?
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 wwwwa 的回复:]
下午我做1个简单 示例
[/Quote]
多谢了
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
下午我做1个简单 示例
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 wwwwa 的回复:]
呵呵,这样做2-3个表单,名字也用你的变量,只要能呈现错误就行
[/Quote]
没有错误呈现,是我不知道如何做这个功能:

&&判定与label标签的Caption同名的表单是否存在
&&如果存在,就关闭这个表单
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
呵呵,这样做2-3个表单,名字也用你的变量,只要能呈现错误就行
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wwwwa 的回复:]
你另外做1个简单的程序,只要能呈现错误就行
[/Quote]
您也看了,我上面的东西基本上都是变量的,连表单的名字都是变量替代的,只有在我这个特殊的环境下我才要用这个方法,我是想简化都很困难,不次于从新做,现在我的环境在我电脑上搭好了,服务器是10M光纤的,数据库是SQL2005的,
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
无法模拟你的环境
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
你另外做1个简单的程序,只要能呈现错误就行
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wwwwa 的回复:]
这样,你另外做1个,只有能呈现错误就行
[/Quote]
工作量太大了,恳请您远程协助,如果解决了,我保证把帖子贴出来结贴
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
这样,你另外做1个,只有能呈现错误就行
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zkjstar 的回复:]
引用 13 楼 zkjstar 的回复:
引用 12 楼 wwwwa 的回复:
改用DBF,只要10条记录左右

我代码都要重写啊,兄弟,光那个两级动态菜单系统的代码我都头大了

我上面贴出来的代码是由代码生成的第二级菜单(Image控件)调用的自定义的方法,第一级和第二级菜单的生成方式是由后台SQLserver数据库生成的
[/Quote]
我QQ是:270882007,您远程调试好吗?
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zkjstar 的回复:]
引用 12 楼 wwwwa 的回复:
改用DBF,只要10条记录左右

我代码都要重写啊,兄弟,光那个两级动态菜单系统的代码我都头大了
[/Quote]
我上面贴出来的代码是由代码生成的第二级菜单(Image控件)调用的自定义的方法,第一级和第二级菜单的生成方式是由后台SQLserver数据库生成的
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wwwwa 的回复:]
改用DBF,只要10条记录左右
[/Quote]
我代码都要重写啊,兄弟,光那个两级动态菜单系统的代码我都头大了
WWWWA 2010-10-13
  • 打赏
  • 举报
回复
改用DBF,只要10条记录左右
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zkjstar 的回复:]
引用 9 楼 wwwwa 的回复:
上传你的表单、DBF到www.access911.net/csdn
,用WINRAR压缩

文件多大,而且后台数据库是SQL的,没数据库不能运行啊
[/Quote]
我有QQ,您方便执行远程协助吗?如果解决了,我把答案贴到这里给您结贴
zkjstar 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wwwwa 的回复:]
上传你的表单、DBF到www.access911.net/csdn
,用WINRAR压缩
[/Quote]
文件多大,而且后台数据库是SQL的,没数据库不能运行啊
加载更多回复(15)
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows 的常见问题 这些是有关 Microsoft Visual FoxPro 最常见的问题。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。 若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分: --------------------------------------------------------------------- 部分 1. 技术支持与市场 部分 2. Visual FoxPro 6.0 新增功能 部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植 部分 4. Visual FoxPro 常见问题 --------------------------------------------------------------------- 部分 1. 技术支持与市场 问题 1-1: 从何处可以获得产品的更新版本? 答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 和更新的示例、向导及其他代码的信息,该站点的网址为: www.microsoft.com/vfoxpro 请定期查看该网站,以便下载产品的最新版本。 问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料? 答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 如何获得技术支持,以及如何报告软件错误? 答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见问题的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。 问题 1-4. 什么是 Knowledge Base?如何使用它? 答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: support.microsoft.com 问题 1-5: 是否会有 Visual FoxPro 6.0a? 答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不会使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还会在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。 问题 1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品? 答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。 问题 1-7: 哪里可以找到 Visual FoxPro 的使用示例? 答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的新示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运行 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用新的 HOME(2) 函数方便地找到已安装示例的位置。 除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供新的示例。
第十章 常用的表单控件 VFP在面向对象开发环境中,是通过在表 单上放置控件来完成信息的输入设计工作的。 在设计表单时可以使用两类控件:与表中数据 捆绑的控件和不与数据捆绑的控件。所谓捆绑 控件是指当输入或选择的值要保存或者被引用 时,就需为该控件设置一个数据源,数据源可 以是表中的字段或变量。对于数据源是变量或 字段的控件,则需要设置控件的ControlSource 属性;若数据源是整个表中的数据,则需要设 置RecordSource属性。而非捆绑控件则不与数 据源直接捆绑。 10.1 标签控件(Label) 标签控件:它是一个显示文本图形的控件, 在设计时可以直接修改其中的文本,标签具有自 己的一套属性、事件和方法,能够响应绝大多数 鼠标事件,可以在运行时动态地改变标签文本。 可以使用TabIndex属性为标签指定一个Tab次序, 但标签并不能获得焦点,而是将焦点传递给Tab 键次序中紧跟着标签的下一个控件。 常用的标签属性: Caption属性 用于指定标签的标题文本,最多可包含的字 符数量为256。标签文本显示在屏幕上以帮助用 户识别各个对象。用户在产生表单或控件对象时, 系统给予对象的Caption属性值和Name属性值是 相同的,此时用户应特别注意它们的区别。 用户在为控件设置Caption属性时,可以将其 中的某个字符作为热键,方法是在该字符前插入 一个反斜杠(\)和一个小于号(<)。 AutoSize属性 该属性用于确定是否根据标题的长度来调整 标签的大小。 Alignment属性 该属性指定标题文本在控件中显示时的对齐 方式。对于不同的控件,该属性的设置是有区别 的。对于标签,该属性的设置值如下表所示。 设置值 说 明 0 (默认值)左对齐,文本显示在区域的 左边 1 右对齐,文本显示在区域的右边 2 中央对齐,将文本居中排放,使左右两 边的空白相等 BackStyle属性 该属性用于确定标签是否透明。当标签控件 完全处于另一个控件的上方时,标签将遮住下方 的控件,此时若标签控件的BackStyle属性设置为 0,则下方的控件将透过标签显示出来。 WordWrap属性 该属性用于确定标签上显示的文本能否换行。 前提是AutoSize属性值应设置为.T.。 FontSize属性 该属性确定标签上显示的文本字体的大小。 ForeColor属性 该属性用于确定标签上显示的文本字体的颜 色。 【例10.1】交换两个变量中的数据(如下图1所示) 。 设计步骤如下: 建立应用程序用户界面。 选择"新建"表单,进入表单设计器,增加一 个命令按钮Command1,4个标签Label1、Label2、 Label3、Label4(如图10-3左所示)。 设置对象属性(如表10-2),设置完成之后的 界面如图10-3右所示。 编写程序代码。 *编写命令按钮Command1的Click事件代码: t= Thisform.Label3.Caption Thisform.Label3.Caption= Thisform.Label4.Caption Thisform.Label4.Caption=t 运行程序,单击"交换"按钮,即可看到两个白 框中的数据相互交换。 例10.1 10.2 命令按钮控件(Command) 命令按钮一般是用于启动某一动作的事件 (如关闭表单、移动记录等)。这些事件的操作 代码通常是放置在命令按钮的Click事件中。当用 户需要完成某项特定的操作时,可单击此命令按 钮。 常用属性: Default属性和Cancel属性 Default属性值为.T.的命令按钮称为"确认" 按钮。命令按钮的Default属性的默认值为.F.。一 个表单内只能有一个"确认"按钮,当用户将某 个命令按钮设置为"确认"按钮时,先前存在的 "确认"按钮将自动变为"非确认"按钮。 "确 认"按钮的行为要受到KEYCOMP设置(DOS或 WINDOWS)的影响。在"确认"按钮所在的表 单激活的情况下,"确认"按钮的行为如下表所 示。 设置值 效 果 DOS 按Ctrl+Enter,选择"确认"按钮、执行Click事件代码 WINDOWS 当焦点不在命令按钮上时,按Enter,选择"确认"按钮、 执行Click事件代码 Cancel属性值为.F.的命令按钮称为"取消" 按钮。命令按钮的Cancel属性默认值为.F.。在" 取消"按钮所在的表单激活的情况下。按Esc键即 可激活"取消"按钮,执行该按钮的Click事件代 码。 这两个属性在设计和运行阶段都可使用,主 要适用于命令按钮。 Enabled属性 指定表单或控件能否响应由用户引发的事件。 默认值为.T.,即对象是有效的,能被选择,能响应 用户引发的事件。 Enabled属性使得用户(程序
第1章 程序设计 1 1. 什么是主程序 2 2. 如何编写主程序 3 3. 如何加入READ EVENTS 6 4. 如何隐藏Visual FoxPro的主窗口 7 5. 如何处理“不能退出FoxPro”的情况 8 6. 如何设计错误捕捉程序 9 7. 如何实现程序的背景音乐 14 8. 如何把金额由数字变成大写 17 9. 如何制作拖动功能 19 10. 如何进行高级密码处理 23 11. 如何把文字转换成首位拼音码 27 12. 如何防止程序的多次开启 28 13. 如何以编程方式添加数据环境到表单 29 14. 如何使用HTML Help Workshop编写HTML帮助 31 15. 如何调用帮助文件 39 16. 如何为_Screen表单指定事件过程 42 第2章 界面设计 45 17. 如何从打印预览工具栏中移除按钮 46 18. 如何隐藏和显示系统工具栏 48 19. 如何制作自定义工具栏 50 20. 如何进行动态的菜单设计 55 21. 如何进行权限菜单的设计 60 22. 如何在顶层表单里使用自己的工具栏和菜单 70 23. 如何设计快捷菜单 74 24. 如何实现移动字幕 78 25. 如何制作异形表单 81 26. 如何制作类似Media Player的图形表单 88 27. 如何动态显示表单 94 28. 如何创建能保存大小和位置的表单 95 29. 如何实现在Grid中回车自动换行 99 30. 如何在Grid拆分窗口中取消拆分条 101 31. 如何利用Grid的动态属性进行动态设计 104 32. 如何生成一个具有滚动条的窗口来移动记录 108 33. 如何将程序图标放入系统托盘 111 第3章 数据处理 115 34. 如何使用GetFile()函数与宏替换打开表(.DBF) 116 35. 如何实现记录按笔画排序 117 36. 如何实现数据实时筛选 119 37. 如何利用Excel来创建统计图形 121 38. 如何利用Graph对象来创建统计图形 125 39. 如何实现数据的进制转换 133 40. 如何查找两个表中相同或不同的记录 140 41. 如何确定整数的奇偶数 142 42. 如何用低级函数转换TEXT文件到DBF 143 43. 如何使用数据库事件进行表加密 145 44. 如何在备注字段中搜索字符串 149 45. 怎样导入Microsoft Access 的表结构和数据 155 46. 如何将通用字段中的内容恢复成当前存储格式的物理文件 159 47. 如何用ADO Stream 对象来获取二进制数据 163 48. 如何正确使用SELECT-SQL查询语句 164 第4章 ActiveX控件 180 49. 如何注册ActiveX控件 181 50. 如何调用进度条控件 183 51. 如何使用状态栏控件 184 52. 如何使用滑尺控件 188 53. 如何用MSComm控件 189 54. 如何使用日历控件 191 55. 如何使用日期挑选器控件 193 56. 如何使用TreeView控件 199 57. 如何使用工具条控件 206 58. 如何使用图表控件 209 59. 如何使用格式文本框控件 216 60. 如何使用SysInfo控件 226 61. 如何使用动画控件 229 62. 如何使用多媒体控件 231 63. 如何使用Kodak图像扫描控件 234 64. 如何使用Animation GIF控件 237 第5章 文件处理 240 65. 如何删除文件到回收站 241 66. 如何获得文件属性和改变文件属性 242 67. 如何以相应的应用程序来打开已建立关联的文件 250 68. 如何将文件按扩展名与应用程序建立关联 253 69. 如何进行DOS/Windows文本文件与UNIX/Linux文本文件的相互转换 257 70. 如何遍历磁盘中的所有目录及文件 258 71. 如何使用低级函数读写文件 263 72. 如何为Visual FoxPro应用程序增加文件压缩功能 271 73. 如何利用SHFileOperation()函数进行文件复制与删除 275 74. 如何以编程方式读取和设置磁盘卷标 286 75. 如何在Windows NT中监视文件系统的改变 287 第6章 类应用与设计 291 76. 如何在子类中调用父类方法程序代码 292 77. 如何屏蔽子类对其父类的自动继承 293 78. 如何让表单设计器使用自定义表单类 296 79. 如何设计能正确显示和存储下拉列表中不存在选项的组合框类 297 80. 如何利用Systray类将图标添加到系统托盘中 304 81. 如何使用_thermometer类来实现执行进度条 315 82. 如何使用_StopWatch类实现计时程序设计 317 83. 如何利用_ShortcutMenu类进行动态快捷菜单设计 321 84. 如何使用WinZip Manager类进行文件压缩和解压缩 325 第7章 网络应用 332 85. 如何获得本机IP地址 333 86. 如何获得局域网内网卡的物理地址 333 87. 如何使用Internet Transfer控件制作FTP工具 336 88. 如何使用WebBrowser控件编写Web浏览器 338 89. 如何映射和断开网络驱动器 343 90. 如何实现超级链接效果 349 91. 如何使用Winsock控件进行常用网络应用开发 352 92. 如何使用MAPI控件发送带附件的邮件 359 93. 如何判断计算机是否已经连接到网络 362 94. 如何通过编程运行拨号网络连接 364 95. 如何实现Ping操作 369 第8章 客户/服务器编程 373 96. 如何进行基于文件服务器的多用户编程 374 97. 如何建立ODBC数据源 383 98. 如何建立到ODBC数据源的连接 387 99. 如何使用视图设计器进行远程视图设计 389 100. 如何用视图指令和函数进行远程视图设计 399 101. 如何使用SPT扩展远程视图 406 102. 如何实现游离视图 416 103. 如何使用SQL-DMO枚举可用的SQL Server数据库服务器 419 104. 如何启动和停止SQL Server服务 421 105. 如何获得SQL Server中的可用数据库列表 425 106. 如何取得服务器的硬盘目录结构 427 107. 如何在SQL Server上创建数据库 431 108. 如何设置SQL Server数据库选项 433 109. 如何在SQL Server上增加、删除用户和设置用户权限 436 110. 如何在SQL Server中进行数据库备份和恢复 444 111. 如何使用SQL-DMO为SQL Server设置任务 447 112. 如何与NT服务器进行时间同步 449 113. 如何在SQL Server数据表中创建惟一值 450 第9章 Windows相关设计 452 114. 如何打开Windows控制面板功能选项 453 115. 如何在Visual FoxPro中调用Windows命令 455 116. 如何修改Windows的系统日期与时间 457 117. 如何实现重启或关闭本地计算机 458 118. 如何实现定时重启或关闭远程计算机 461 119. 如何锁定Windows NT/XP计算机 463 120. 如何获得Windows的安装目录 464 121. 如何获得Windows的系统目录 465 122. 如何获得应用程序的当前目录 467 123. 如何从Visual FoxPro中关闭指定的应用程序 468 124. 如何检测软驱中是否放入了磁盘 469 125. 如何检测软盘是否进行了写保护 470 126. 如何将一个长文件名转换为短文件名 471 127. 如何获得操作系统的语言设置 472 128. 如何管理开始菜单中文档中的内容 472 129. 如何用Windows Script Host创建桌面快捷方式 473 130. 如何用Windows Script Host进行磁盘碎片整理 475 131. 如何用Windows Script Host打开管理工具中的选项 476 132. 如何获得系统中的逻辑驱动器 476 133. 如何获得系统中的未使用的驱动器盘符 478 134. 如何调用磁盘格式化对话框 480 135. 如何获得磁盘的总大小与可用空间 481 136. 如何打开Windows关于对话框 483 137. 如何进行Windows外观颜色设置 484 138. 如何获得计算机名和用户名 487 139. 如何修改计算机名称 488 140. 如何获得Windows的开启时间 489 141. 如何获得当前系统中安装的打印机 491 142. 如何将打印机设置为Windows的默认打印机 492 143. 如何获取打印机设备的句柄 493 144. 如何获得计算机键盘的类型 496 145. 如何交换鼠标的左右键功能 497 146. 如何获得和设置鼠标的双击速度 498 147. 如何屏蔽Ctrl+Alt+Del组合键 500 148. 如何打开或关闭光盘驱动器 501 149. 如何获得计算机硬盘卷序列号 502 150. 如何隐藏Windows的任务栏 504 151. 如何在系统启动时自动运行指定程序 506 第10章 报表设计 507 152. 如何使用报表设计器的工具栏与菜单 508 153. 如何理解报表设计器各个带区的作用 513 154. 如何进行数据分组报表设计 514 155. 如何在报表运行时访问报表的数据环境 518 156. 如何检测报表的当前输出模式 518 157. 如何进行帐页格式的报表设计 519 158. 如何进行报表的打印设置 520 159. 如何在NT/XP系统中添加自定义纸张 521 160. 如何获得报表的总页数 530 161. 如何进行面向对象的程序化报表设计 530 162. 如何使用Excel来打印报表 536 第11章 程序安装 540 163. 如何使用Visual FoxPro 6.0的安装向导 541 164. 如何自动安装Visual FoxPro 6.0安装向导制作的安装程序 544 165. 如何卸载使用安装向导安装的应用程序 545 166. 如何为编译后的应用程序文件指定图标 545 167. 如何使用InstallShield制作安装程序 546 附录 558 附录1. 函数分类表 559 附录2. 命令分类表 570 附录3. Visual FoxPro系统变量 580 附录4. 系统菜单和菜单选项常数 581 附录5. INKEY()和LASTKEY()函数的返回值 584 附录6. Visual FoxPro变量命名约定 586 附录7. Visual FoxPro对象命名约定 586 附录8. Visual FoxPro表字段命名约定 587 附录9. Visual FoxPro系统容量 587
11.1 系统需求分析 传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误 的发生。因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺 少的。它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。该系统可以实 现如下功能: 1. 数据需求 通过调查,总结出该应用程序对数据的需求大致有如下这些: (1) 学生信息 包括学号,姓名,性别,出生日期等 (2) 学生成绩信息 主要包括学号, 课程编号,平时成绩 (3) 课程信息 包括课程编号,课程名称 2. 功能需求 功能分析的任务是了解用户对数据的处理方法和输出格式。 (1) 基本数据录入 基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。要求系统能够 录入这些数据,并且可以进行修改。在数据录入和修改过程中应保持数据的参照完整性 。 (2) 学生和管理员信息的维护 要求能够根据需要对学生和管理员信息进行维护修改等。 (3) 打印输出 打印学生信息表。 11.2 系统设计 1. 程序总体结构设计 在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于 对程序分层设计和实现。图1所示为公共计算机成绩管理系统的功能模块图。 图1公共计算机成绩管理系统功能模块 2. 数据库逻辑设计 进行数据库设计的依据有三个:第一是在进行系统调查时由成绩管理员提供的各种 处理数据;第二是功能设计结果;第三是数据库设计规范化理论。数据库设计是系统设 计的一项基本工作,其效果的好坏,对后续设计、调试、使用、维护等工作关系极大, 因此,一定要高度重视这一部分工作。当然,我们不能简单地将数据库设计理解为在计 算机上用可视化的方法建立表的过程,其主要工作是建立一种完整、规范的数据模型以 支持整个应用系统对数据的要求。 根据对实际情况进行分析建立关系模型 1) 学生信息表(学号,姓名,性别,出生日期) 2) 学生成绩表(学号, 课程编号,平时成绩) 3 课程表(课程编号,课程名称) 11.3 创建项目 Visual Foxpro推荐在项目管理器中开发应用程序,因为项目管理器会为开发工作带来很多方便 。在项目管理器中创建一个项目后,应用程序就具备了一个开发框架,然后在这个框架 中,再利用项目管理器所提供的强大功能,按照需求来实现应用程序的设计。 用户可以启动Visual Foxpro,选择【文件】"【新建】命令,在打开的对话框中,选择"项目"单选按钮,然后 单击"新建文件"按钮,接着在"创建"对话框中,输入项目文件名并确定项目路径(本例 使用的路径为D:\公共计算机成绩管理系统),然后单击"保存"按钮,即可启动项目管理 器。 一个完整的应用程序,即使规模不大,也会涉及到多种类型文件,如dbc数据库、d bf表以及菜单、表单、报表、位图等。为了以后的修改、维护工作方便进行,就需要把 这些文件放在不同的文件夹中便于管理维护。 11.4数据库的物理设计 a) 数据库名为公共计算机成绩管理.dbc b) 数据表 i. 学生信息表.dbf 学号/C/10,姓名/C/10,性别/L/1,出生日期/D/8,系科/C/30,备注/M/4,照片/G/4 ii. 学生成绩表. dbf学号/C/10, 课程编号/C/2,平时成绩/N/6/2 iii. 课程表 课程编号/C/2,课程名称/C/14 11.5界面设计 1) 创建启动表单 下面设计应用程序的封面,主要由一个表单来实现. 在项目管理器中,打开"文档"选项卡,选择"表单"选项,单击"新建"按钮,在打开 的对话框中单击"新建表单"按钮,这时,将弹出一个表单设计器和表单Form1。 单击菜单项后的"创建"按钮,即可在打开的菜单设计器窗口中创建该菜单项的子菜单 。如果要设置命令 的快捷键,可以单击其后的选项按钮,z然后在打开的对话框中,输入快捷键的名称。 最后单击确定按钮,返回到菜单设计器窗口,在"退出"菜单项的文本框中,输入qu it,然后单击 关闭按钮,将菜单保存为"主菜单.mnx"。运行该菜单,其效果如图所示。 接着,创建应用程序的主文件,将其保存为"主程序.prg" 。在代码编辑窗口中,输入以下代码: set talk off set date to ymd set cent on clear all c_p1=sys(16) c_p2=left(c_p1,rat('\',c_p1,1)-1) set defa to &c_p2 do form 表单1.scx read events quit 如图所示,在项目管理器中,将"主程序.prg"设置为主文件,然后选中"主程序.prg"并 单击 "运行"按钮. 运行主程序后的效果 11.7表单设计         输入Click事件的代码。 form1的Click事件的代
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,使用FllAddFoxCode()向智能感应库添加所有的函数原型(需要VFP7以上),此库存所有函数使用VFP推荐的命名规则,一般可以根据函数名和知能感应的提示参数来推测参数及返回值。 开发环境可以使用FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由使用、散发此函数库及此帮助,包括应用于你的商业软件中。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meizvfp.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial        读取指定硬盘的序列号 GetCpuId           读取CPU的序列号 GetMAC            读取网卡的MAC地址 GetVolumeNumber       读取指写磁盘的卷标 IsDiskInDrive        检查指定磁盘是否就绪 GetPort           读取系统的串口、并口 ComOpen           打开串口 ComWrite           向串口输出信息 ComRead            从串口读取信息 ComClose           关闭串口 GetGUID            获取全球唯一ID AEthernet          枚举网卡的所有信息 加密解密函数: MD5File           计算一个文件的MD5效验和 MD5String          计算一个字符串的MD5效验和 CRC32File          计算一个文件的CRC32效验和 CRC32String         计算一个字符串的CRC32效验和 des             采用DES算法加密或解密一个字符串,长度为8位 des16            采用DES算法加密或解密一个字符串,长度为16位 des24            采用DES算法加密或解密一个字符串,长度为24位 EnDeString          双向加密解密字符串的函数 Encrypt           双向加密解密字符串 RSACalc           RSA计算函数 RSAGen            生成随机RSA密钥函数 RSACmp            比较两个十六进制值是否相等 URLEncode          URL编码 URLDecode          URL解码 QPEncode           Quoted-Printable QP编码 QPDecode           Quoted-Printable QP解码 压缩解压函数: Zip              压缩文件 UnZip             解压文件 UnZipFile           解压单个文件           ZipInfo            测试一个文件是否在压缩文件中存在 ZipFileToStr         将压缩文件中的文件解压到变量 ZipAFile           将zip文件中的文件信息生成的数组 CompressString        压缩一个字符串 DeCompressString       解压字符串 数据库: CursorToStr         将Cursor生成变量 ChangesToStr         将Cursor的变动情况生成变量         StrToCursor         将变量还原为Cursor AppendFromStr        将变量中的表追加到指定表中 ACursorList         将变量中的表信息生成数组 ACursorFields        将变量中的指定表的字段信息生成数组 CRC32Record         计算一条记录的CRC32值 SQLCallBack         SQL回调函数载入 SQLCallReset         SQL回调函数卸载 PackMDB           压缩修复Access数据库 ReadMemo           读取vfp中大于16M的备注字段 网络相关函数: DownFile           从internet上下载文件到本地 DownFileX           线程方式从网上下载一个文件 HttpGetFileSize       读取internet上的文件大小 HttpPostData         向http服务器Post数据 HttpOpen           打开一个Internet句柄 HttpAddParms         为Http句柄添加一个参数 HttpSend           发送Http句柄中的Post数据 HttpClose          关闭Http句柄 FtpDownFile          从FTP服务器下载文件 FtpUploadFile        向FTP服务器上传文件 FtpConnect          连接FTP服务器 FtpDisconnect        断开FTP服务器连接 FtpAFile          枚举Ftp中的所有文件 FtpCreateDir        在FTP服务器上创建一个文件夹         FtpSetCurrentDir      设置当前的文件夹 FtpDeleteDir        删除FTP服务器上的文件夹 FtpDelFile         删除FTP服务器上的文件 FtpRename          重命名FTP服务器上的文件 FtpFOpen          打开FTP服务器上的文件 FtpFClose         关闭FTP服务器上的文件 FtpFRead          读取FTP服务器上的文件 FtpFWrite          写入FTP服务器上的文件 FtpSetPasv          设置FTP被动工作模式 ShareAdd           在局域网共享文件夹 ShareDel           删除共享文件夹的共享 ShareMapDrive         映射网络驱动器 ShareDelDrive         删除映射的网络驱动器 GetLocalIP          读取本机IP DomainToIP          转换域名为IP地址 DialUp            建立拨号连接 DialDown           断开拨号连接 GetSqlServer         列出所有网络上的SQL Server IpToMAC           根据IP得到MAC地址 邮件函数: SmtpCreate          创建一个SMTP发送邮件的句柄 SmtpNewMail         在内存中创建邮件内容,等待发送 SmtpSend           发送邮件 SmtpGetLastError       检测邮件最后的错误 Pop3Create          创建一个POP3接收邮件的句柄 Pop3Close          关闭句柄 Pop3AMailList        枚举POP3服务器上的邮件数量 Pop3DeleteMail        删除POP3邮件服务器上的邮件 Pop3GetMail         下载一封邮件 Pop3GetMailHeader      下载邮件头 Pop3DeleteMail        删除服务器上的邮件 打印相关函数: PaperAdd           添加自定义纸张并返回ID PaperDel           删除自定义纸张 PaperInfo          读取所有纸张信息或指定纸张信息 APaper            枚举所有纸张生成数组 GetDefaultPrinter      取得默认打印机的名称 SetDefaultPrinter      设置默认打印机 PrinterOpen         启用一个打印任务 PrinterOutPage        打印页对像 PrinterClose         结束打印 常用转换函数: ToPY             生成指写字符串的拼音首字 NToC             数字转人民币大写 hzbh             计算指定字符串的汉字笔划 StringToDword        将高底位存放的字符串,转换为字符型 DwordToString        将整型数值转换为字符型数值 NumConver          进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum           将指定进制的字符串转换为数值型 GB2312ToBIG5         简体转繁体 BIG5ToGB2312         繁体转简体 FormToBmp          将表单保存为BMP图片 RectToBmp           指定屏幕区域保存为bmp图片 StrReverse          指定屏幕区域保存为bmp图片 ImageConver         转换图片格式 FTrim            删除字符串中除指定字符以外的字符 Thumbnail          缩放图片 注册表读写函数: regRead           读取注册表中的设置 regWrite           向注册表中写入设置 regDelKey          删除注册表中的分支 regDelValue         删除注册表中的设置 ini文件读写函数: iniRead           从ini文件中读取设置 iniWrite           向ini文件中写入一个设置 iniSet            设置默认的数据段和ini文件 iniSetSection        设置默认的数据段 iniSetFileName        设置默认的ini文件 系统托盘 SysTrayAdd          向系统托盘添加一个图标 SysTrayEdit         修改系统托盘的图标 SysTrayDel          删除系统托盘中的图标 HotKeyAdd          向系统注册一个热键 HotKeyDel          删除向系统注册的热键 SysTrayShowMessage      显示托盘消息 文件操作 CopyFiles          复制文件 MoveFiles          移动文件 DeleteFiles         删除文件 CreateShortcut        创建快捷方式 GetIcon           释放exe或dll中的图标 其它: SetVFPEvents         设置MYFLL内部函数回调功能 SetDateTime         设置Windows系统时间 ChangEres          更改屏幕的分辨率 idleLoad           开始加载空闲检测 idleSeconds         读取系统空闲时间 idleUnload          卸载空闲检测 KillApp           终止指定进程 KillAllApp          终止所有进程,但排除指定标题的进程 KillProcessByName      根据程序文件名杀死一个进程 FindAllFile         查找指定文件夹下的所有文件 IsNum            检测函数是否是数字 CheckProcess         检测主程序是否重复运行 ProcLoad            载入一个VFP函数,取得函数地址 ProcUnload          卸载函数 MemRead           读取指定地址的内存 MemWrite           写入指写内存 PushError          系统错误处理压栈 PopError           系统错误处理出栈 Format            格式化输出字符串(类C语言) CreateLink          创建文件关联 DesktopHide         隐藏桌面 SystemKeySet         禁用系统键 RegisterFile         注册文件名解除文件注册 封装过的Win32 API函数: FindWindow          查找指定窗口的句柄 SendMessage         向指写窗口发送指定消息 PostMessage         将消息投递到指定句柄的消息队列 ShowWindow          显示指定窗口 ShowWindowAsync       显示指定窗口 SetWindowLong        设置窗口的扩展样式 SetLayeredWindowAttributes  设置窗口效果 SetForegroundWindow     激活指定窗口使这成为最前面的窗口 ShellExecute         调用系统关联,打开一个文件 ShellExecWait        调用一个程序,并等待执行结束 SuspendThread        暂停一个线程 ResumeThread         恢复一个线程 Beep             使电脑内喇叭发出beep声 ExitWindowsEx        退出Windows Sleep            程序挂起nMilliseconds毫秒 ExitProcess         终止当前进程 GetLastError         返回最后的错误号码 SetParent          设置窗口的父窗口 UpdateWindow         更新窗口

2,718

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧