| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		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 文章: 564 來自: 臺灣
  第 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 文章: 477
 
  第 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 文章: 477
 
  第 10 樓
  | 
		
			
				 發表於: 星期三 十一月 02, 2005 11:53 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				就方法來論jmforu的方式需要較高的程式技巧;
 
且BINDEVENT() VFP8.0後才支援. | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |