3.如何加入READ EVENTS
来源:互联网 发布:淘宝客网站搭建 编辑:程序博客网 时间:2024/04/29 21:05
3
如何加入READ EVENTS
难度系数 êê
人气指数 90%
问题详述
我的程序为什么在编译后会一闪而过,关闭程序时,为什么提示“不能退出FoxPro”?
专家解答
请注意在问题2介绍的主程序中,加入了3个READ EVENTS,READ EVENTS的作用就是占用程序的进程,然后开始事务处理。许多的初学者问:为什么我的程序编译成EXE文件后一闪而过?其原因就是没有开始事务处理,所以程序就会一直向下执行。本节将逐一分析上面这个程序段的3个READ EVENTS。
在第一个READ EVENTS前,打开的是Begin表单,显示版权画面,表单的设计如图1-3所示,请注意表单的Unload方法设计。
图1-3 制作版权画面
在表单中使用了一个Timer控件,是为了进行画面显示的自动延迟时间。下面这段代码是进行表单的属性设置:
Height = 275
Width = 395
Desktop = .F.
ShowWindow = 2
AutoCenter = .T.
Picture = Begin.jpg
BorderStyle = 1
Caption = ""
ControlBox = .F.
Closable = .F.
MaxButton = .F.
MinButton = .F.
Movable = .F.
WindowType = 1
AlwaysOnTop = .T.
Name = "Form1"
然后编写表单的Init事件过程,定义全局变量nCountTime来计算时间延迟。
PUBLIC nCountTime
nCountTime=0
编写表单的Click方法,如果捕获到表单的鼠标单击事件,直接关闭表单,不再延迟。
RELEASE Thisform
编写表单的Unload方法,表单卸载时,执行CLEAR EVENTS命令,结束事务处理。
RELEASE nCountTime &&清除计时变量
CLEAR EVENTS
下面是Timer控件的时间延迟操作方法,设置Timer的Interval属性。
Interval=50
编写Timer事件计算延迟,可以根据自己的实际情况,通过更改Interval的值或nCountTime的循环次数来设定自己的延迟时间。
nCountTime=nCountTime+1
IF nCountTime=45
RELEASE Thisform
ENDIF
编写产品使用权的Label2(用户名)的Init方法:
This.Caption="ALLTRIM(SUBSTR(SYS(0),AT([#],SYS(0))+1,15))"
编写产品使用权的Label3(机器名)的Init方法:
This.Caption="ALLTRIM(LEFT(SYS(0),AT([#],SYS(0))-1))"
通过上面的分析看出,在关闭表单的时候,在Unload方法中执行了一条CLEAR EVENTS命令,来停止事务处理。这样,按照程序中的语句顺序,Visual FoxPro会自动寻找下一个READ EVENTS来进行事务处理,自然就执行到了DO FORM Login这里,从而显示了登录画面。同样的道理,在关闭Login表单的时候也同样执行了一条CLEAR EVENTS命令,然后程序按照语句顺序继续向下执行。由以上的介绍可得出结论:想在哪里开始事务处理,就在哪里加入READ EVENTS!
还剩最后一个READ EVENTS,这一个需要在结束应用程序退出Visual FoxPro时使用CLEAR EVENTS来清除,结束事务处理。否则,Visual FoxPro会提示“不能退出FoxPro”。
专家点评
在Visual FoxPro中使用READ EVENTS代替了READ命令,实际上二者的作用是十分相近的,READ命令用于激活控制,READ EVENTS用于开始事务处理,下列代码演示了READ命令的作用,对于理解READ EVRNTS会有所帮助。
cName=SPACE(20)
nPrice=0.00
nNumber=0.00
@1,1 SAY "货物名称" GET cName
@3,1 SAY "价 格" GET nPrice
@5,1 SAY "数 量" GET nNumber
READ &&激活控制,可以输入货物名称、价格和数量
上面的代码是在FoxPro 2.6中编写数据录入的代码,READ命令可以激活GET控制来允许用户录入数据,如果屏蔽掉READ命令,程序会自动向下继续运行,这与在Visual FoxPro中没有READ EVENTS程序会一闪而过是同样的道理。
- 3.如何加入READ EVENTS
- Common Wait Events---db file scattered read
- Why are Oracle’s Read Events “Named Backwards”?
- EVENTS
- Events
- 如何使用Oracle的events做跟踪
- 如何在DataTemplate中处理事件Events
- 如何在SPFILE中设置EVENTS
- Backbone.js中的Events模块如何使用?
- Exchange Online管理员如何取消Calendar Events?
- 如何加入过虑器
- 如何加入Three20到專案中
- 如何加入Three20到專案中
- php7如何加入环境变量
- 如何加入妈妈群
- 步步为营---如何加入Gnutella网络
- DataGrid 中如何加入序列号
- 如何加入google讨论组
- 让Excel自动高度显示选中的行
- (转)new String("abc")创建几个对象的解释
- 浅谈 “高内聚 ,低耦合”
- 做软件:不只是写代码
- 2.如何编写主程序
- 3.如何加入READ EVENTS
- Asp.Net学习心得
- 4.如何隐藏Visual FoxPro的主窗口
- 关于杨辉三角的分析
- ubuntu netbook remix里窗口总是自动最大化,怎么办?
- 5.如何处理“不能退出FoxPro”的情况
- 使用qsort对二维字符数组排序疑难问题调试及解决过程
- 6.如何设计错误捕捉程序
- intel集成显卡在ubuntu 9.04下性能不佳的解决方法