| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2411 人关注过本帖
标题:如何检测键盘输入Ctrl+C并结束定时器程序?
只看楼主 加入收藏
new_bird
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-8-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
如何检测键盘输入Ctrl+C并结束定时器程序?
**在表单中显示秒程序,我不想用命令按钮结束定时器,而用Ctrl+C如何实现?
**就是如何读取键盘缓冲区,以下程序为什么无效?

*我的表单上主要有一个开始答题命令和一个timer
*开始答题命令为
public thistimesec
thistimesec=int(second())
thisform.timer1.enabled=.t.

*计时器为
**thistimesec在开始答题中已经设置为Public变量
**不考虑second()秒大于86400**
tmpnum1=int(seconds())-thistimesec
**设想键盘按Ctrl+C结束程序,没成功**
    if chrsaw() then     &&判断输入
        t0=inkey()       &&等待按键
        clear typeahead  &&清除键盘缓冲区
        if t0=3 OR t0=17 then
          thisform.timer1.enabled=.f.
          close all
          clear events
          quit
        endif
    endif
thisform.labelTS.caption="已经答题时间为"+ltrim(str(tmpnum1))+"秒"
thisform.refresh

[ 本帖最后由 new_bird 于 2009-8-22 20:39 编辑 ]
搜索更多相关主题的帖子: 键盘结束定时器 键盘缓冲区 
2009-08-22 01:21
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:3 
楼主的编程思路还停留在面向过程程序设计阶段。请问,楼主的程序放在哪里能实现你的“定时”功能呢?不用命令按钮而改用按键的方式倒是能办到,可是结束该程序与开启该程序是不能放在一起的啊。通常的做法是表单中添加一个时间控件,开始的时候启动计时程序,结束的时候设置时间控件无效。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2009-08-22 13:29
n188
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2009-9-5
收藏
得分:3 
if t0=3 OR t0=17 then句
改 OR 为 And 试试
2009-09-12 18:15
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:3 
楼上的建议不可行!同一个变量不可能有两个值,这样一改就永远不会有满足要求的现象出现的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-09-13 08:48
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:3 
可以用ON KEY LABEL命令试试:

ON KEY LABEL Ctrl+C do Fox命令

相互学习,互相交流,共同提高。
2009-09-13 12:11
sd_tysd
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:81
专家分:319
注 册:2009-7-23
收藏
得分:3 
回复 楼主 new_bird
if chrsaw() then     &&判断输入   then  在VFP中没用,这是VB用的   
        t0=inkey()       &&等待按键
        clear typeahead  &&清除键盘缓冲区
        if t0=3 OR t0=17 then
          thisform.timer1.enabled=.f.
          close all
          clear events
          quit   此句是退出程序,回到操作系统
        endif
    endif
thisform.labelTS.caption="已经答题时间为"+ltrim(str(tmpnum1))+"秒"
thisform.refresh
以上程序运行就结束,根本没有读取键盘时间。

要想读取键盘需要建立一个封闭式循环,当的某个条件成立时退出循环。
循环开始前,读取时间,可以在循环终止时的时间减去前一个时间,即为用时。
终止时间可以ENDDO后,也可以在EXIT前后,标准在EXIT前最标准。

DO WHILE .t.
if inkey()=3
    EXIT
endif
ENDDO



[ 本帖最后由 sd_tysd 于 2009-9-13 20:25 编辑 ]
2009-09-13 20:19
hgfeng1984
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:139
专家分:513
注 册:2006-3-26
收藏
得分:3 
图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册


梅子上的代码,希望有帮助.
HotKey.rar (2.77 KB)


Ctrl+C不是复制吗?为啥定义这个呢,闷.

[ 本帖最后由 hgfeng1984 于 2009-9-13 21:22 编辑 ]
2009-09-13 21:20
快速回复:如何检测键盘输入Ctrl+C并结束定时器程序?
数据加载中...
 
   



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

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