| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
买学问 - 大牛一对一辅导,有问必答买学问 - 专业的付费知识问答平台
共有 2167 人关注过本帖
标题:关于单个表单能否编译为EXE文件的探讨。已提供示例供大家下载。
只看楼主 加入收藏
厨师王德榜
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:82
帖 子:501
专家分:1878
注 册:2013-2-16
结帖率:100%
  问题点数:0  回复次数:15   
关于单个表单能否编译为EXE文件的探讨。已提供示例供大家下载。
好像以前有朋友讨论过这个问题,一个独立的表单文件,能否编译成EXE执行文件?

原帖在这里 https://bbs.bccn.net/thread-391963-1-1.html ,大家也发表了看法。

我最近尝试了一下,发现不用 Main.prg ,仅一个表单文件,也能编译成EXE执行文件!
当然,这个表单文件,是一定要设置为“主文件”的。
附件是我的一个小作品,写得很粗糙,大家将就着看,为了方便初学者学习,源代码全部公开了。

这个示例中,就只有一个表单文件,也照样编译成EXE执行文件了,在我的电脑上和同事的电脑上运行正常。我的环境是VFP9.0 英文版 SP1

欢迎下载,当然,也欢迎拍砖。(原链接文件不完整,新的下载链接,放在7楼)

[此贴子已经被作者于2016-1-11 09:33编辑过]

附件: 您没有浏览附件的权限,请 登录注册
搜索更多相关主题的帖子: 源代码  执行文件  英文版  朋友  
2016-01-10 17:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
vfp9上能被反編譯出源碼的,就是所有使用表單寫的部分。

授人以渔,不授人以鱼。
2016-01-10 18:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
單個表單以及一組表單,聯編成可執行文件,當然可以,祇是很多要在表單加載之前和卸載之後執行的代碼沒法寫而已。

授人以渔,不授人以鱼。
2016-01-10 18:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:194
帖 子:6524
专家分:28847
注 册:2014-5-20
  得分:0 
可以的
可在Load和Unload事件处理表单前后和事务
2016-01-10 20:04
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15455
专家分:65956
注 册:2006-4-27
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册
2016-01-10 20:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:194
帖 子:6524
专家分:28847
注 册:2014-5-20
  得分:0 
厨师煮菜忘记下盐,没味道。
2016-01-10 21:28
厨师王德榜
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:82
帖 子:501
专家分:1878
注 册:2013-2-16
  得分:0 
忘记放一个自定义类了,项目已经重新打包,请下载这个:

附件: 您没有浏览附件的权限,请 登录注册
2016-01-11 09:32
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:44
帖 子:629
专家分:2080
注 册:2014-2-7
  得分:0 
粗略看了一下楼主的源代码,特指出以下问题供参考:
1. 控件的命名不规范,读起来比较吃力。如:文本框 CWDH 的命名就很令人费解。若改为 txtPath,可读性就好多了。
2. 楼主是通过在表单的 Init事件中隐藏VFP主窗口的,实际运行时主窗口会闪一下。更好的方法是:在同路径下新建一个 config.fpw,在该文件中添加一行 screen=off
3. 单击 command2 时应该是选择文件夹,但楼主却使用了GetFile()函数,应该改为 GetDir()。对判断返回结果时,不要仅判断结果是否为空,还应判断文件夹是否存在,因为GetFile()和GetDir()可以输入一个不存在的文件或文件夹
4. 当鼠标指针移动到“年月值”右侧的两个箭头label时,显示操作提示,还使用了定时器,太复杂了。更好的方法是:设表单的 ShowTips=.t.,然后再分别设置两个箭头标签的 ToolTipText属性
5. 楼主禁用了表单的关闭按钮,不太好。改进:设表单的 Closable=.t.,将退出按钮(command1)中的 clear events 语句移至表单的 destory 事件中。
6. 为了使窗口底部的状态条控件始终位于窗口底部并随窗口缩放,楼主在表单的 resize事件中调用了状态条控件的 resize类方法。更简单的方法是:设置状态条的 anchor 属性为 14 即可。
7. “全选”的代码是:UPDATE pdflist  SET pdflist.ischeck = iif(this.Value=1,.t.,.f.) ,可精简为:UPDATE pdflist  SET pdflist.ischeck = (this.Value=1)
8. 在“预览改名”时,楼主用了 4 条 update 语句,也就是说对数据表扫描了 4 次,效率很低。不妨更改为:在一个 scan循环中使用条件判断和 replace 高效
……

泉城飞狐
2016-01-11 15:56
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15455
专家分:65956
注 册:2006-4-27
  得分:0 
回复 8楼 liuxingang28
5. 楼主禁用了表单的关闭按钮,不太好。改进:设表单的 Closable=.t.,将退出按钮(command1)中的 clear events 语句移至表单的 destory 事件中。
测试:1、Closable=.t.  不起作用
2、clear events 语句移至表单的 destory 事件中  关闭不掉表单
2016-01-11 17:29
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:44
帖 子:629
专家分:2080
注 册:2014-2-7
  得分:0 
回复 9楼 tlliqi
我已经测试过,将表单的 closable 属性设为 .t.后,表单的关闭按钮可用。将“退出”按钮中的 clear events 移至表单的 destory 事件代码后,单击“退出”按钮或标题栏上的“关闭”按钮后,都能正常退出系统。
你不妨再测试一下。

泉城飞狐
2016-01-12 08:13







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

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