上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
lcm
註冊時間: 2004-12-27 文章: 45
第 1 樓
|
發表於: 星期四 九月 01, 2005 2:23 am 文章主題: 請問如何利用timer設計當使用者在10分內未按任何鍵,則強迫將form關閉,謝謝。 |
|
|
請問如何利用timer設計當使用者在10分內未按任何鍵,則強迫將form關閉,謝謝。 |
|
回頂端 |
|
 |
bin1x
註冊時間: 2004-08-27 文章: 462
第 2 樓
|
發表於: 星期四 九月 01, 2005 9:33 am 文章主題: |
|
|
哈哈動腦時間到
在form 中
加入個timer
interval 原先不清楚mili seconds 對於10分鐘的意義
後來用我較熟悉的函數seconds()
找到了10分鐘是10秒鐘的60倍,而10秒鐘=10000
timer.timer 中加了thisform.release,搞定
至於10分鐘內有無keypress
用個flag 代表狀態
若無keypress 設成false有參數可用
在timer.timer事件中判定,很好玩的哩 |
|
回頂端 |
|
 |
liangszpt

註冊時間: 2004-11-18 文章: 263 來自: な东省深圳市
第 3 樓
|
發表於: 星期四 九月 01, 2005 5:25 pm 文章主題: |
|
|
1 先学会ON KEY LABEL 的用法
2 增加FORM的一个属性KEYFLAG
3 在FORM.INIT里面把键盘上面的键都用ON KEY LABEL定义好,例ON KEY LABEL A _screen.activeform.keyflag='T',
THISFORM.KEYFLAG='F'
4 然后用TIMER设定每10分钟检查THISFORM.KEYFLAG的值,如果为'F',说明用户没有操作过,可以关闭窗口(thisofrm.release)
但不知怎么测出有没有动过MOUSE |
|
回頂端 |
|
 |
bin1x
註冊時間: 2004-08-27 文章: 462
第 4 樓
|
發表於: 星期四 九月 01, 2005 7:36 pm 文章主題: |
|
|
代碼: |
LPARAMETERS nKeyCode, nShiftAltCtrl
if nKeyCode > 0
thisform.flag = .t.
endif
|
表示有按鍵,mouse 有mouse move 事件 |
|
回頂端 |
|
 |
lcm
註冊時間: 2004-12-27 文章: 45
第 5 樓
|
發表於: 星期一 九月 05, 2005 11:43 pm 文章主題: |
|
|
需要再加入各個控制項的mousemove,keypress等,就以了,謝謝。 |
|
回頂端 |
|
 |
nelsonchuang
註冊時間: 2003-09-04 文章: 563 來自: 臺灣
第 6 樓
|
發表於: 星期二 十一月 01, 2005 3:50 pm 文章主題: Re: 請問如何利用timer設計當使用者在10分內未按任何鍵,則強迫將form關閉,謝謝。 |
|
|
lcm 寫到: | 請問如何利用timer設計當使用者在10分內未按任何鍵,則強迫將form關閉,謝謝。 |
1.先取2個變數記下滑鼠之X,Y軸之位置,1個變數記下記時器計算時間.
2.在FORM中加入一記時器.
3.當FORM啟動時,啟動記時器.
4.假設記時器每30秒檢測一次(也可以2分鐘),將時間記到第一項的變數中.
5.檢查現在滑鼠之X,Y軸是否和先前之位置相同(檢查這個就夠啦!這年頭那有人打了10分鐘的電腦,滑鼠連
不小心碰都碰不到.除非沒裝!)
6.位置和先前相同時,把記時歸0
7.當記時到了10分鐘.結束FORM
這樣子應該夠清楚了吧!至於元件請自行參考HELP.
4年前我也寫了一個,專門用來對付佔著毛坑不拉"死"的USER
不過注意哦!!!!!!!!!!!!!!!!!!!!!!!!!!當使用者給你開啟預覽列印後10分鐘,再關它,會出現錯誤訊息! _________________ 大家好,請多指教 |
|
回頂端 |
|
 |
jmforu
註冊時間: 2005-10-27 文章: 6
第 7 樓
|
發表於: 星期二 十一月 01, 2005 7:40 pm 文章主題: |
|
|
*FORM新增一个方法 mymousemove
*
* form.init
*---------------------
This.AddProperty('is_key',.F.)
This.AddProperty('no_key_time',0)
This.KeyPreview=.T.
THIS.timer1.Interval=60000 &&
For Each oo As Object In Thisform.Objects
If Upper(oo.Class)<>Upper('TIMER')
Bindevent(oo,'mousemove',Thisform,'mymousemove')
Endif
Endfor*
*form keypress
*----
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nkeycode>0
this.is_key=.t
thisform.timer1.Reset
ENDIF
*
* FORM.TIME1.TIMER事件
*
If Not Thisform.is_key
Thisform.no_key_time = Thisform.no_key_time + 1
If Thisform.no_key_time>=10
Release Thisform
Endif
ELSE
thisform.is_key=.f.
Thisform.no_key_time=1
Endif
*
*form mymousemove
*
LPARAMETERS nButton, nShift, nXCoord, nYCoord
thisform.is_key=.t.
thisform.timer1.Reset |
|
回頂端 |
|
 |
小賴
註冊時間: 2004-12-27 文章: 476
第 8 樓
|
發表於: 星期二 十一月 01, 2005 8:08 pm 文章主題: |
|
|
TO:newsonchuang兄
以mrow(), mcol()記錄mouse座標,檢測mouse是否動過 ;
確實較為乾淨俐落, 好方法 ! 小弟受教了, 感謝分  |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 9 樓
|
發表於: 星期三 十一月 02, 2005 9:48 am 文章主題: |
|
|
jmforu, 兄寫的也不錯,
用Bindevent 方式, 改寫每個物件的 鍵盤及MOUSE method
各有巧妙之處. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
小賴
註冊時間: 2004-12-27 文章: 476
第 10 樓
|
發表於: 星期三 十一月 02, 2005 11:53 am 文章主題: |
|
|
就方法來論jmforu的方式需要較高的程式技巧;
且BINDEVENT() VFP8.0後才支援. |
|
回頂端 |
|
 |
|