  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		朱育興
 
 
  註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
  第 1 樓
  | 
		
			
				 發表於: 星期五 三月 12, 2004 10:40 pm    文章主題: [轉貼]如何在 VFP 主視窗中自定義事件 | 
				     | 
			 
			
				
  | 
			 
			
				這是在「動感論壇」上看到的。SomeDream 原創的。
 
 
如何在 VFP 主視窗中自定義事件(如 Click、RightClick、Resize 等等)
 
 
    看了 lqy821110 大俠在技術文章中所寫的《如何在 VFP 主視窗中建立自定義的事件、方法、屬性?》一文,很有裨益。(詳見http://www.vfp.cn/article_view.asp?id=725)
 
 
    不過該文似乎只說明了如何在 Screen 中自定義屬性和方法,而 Screen 的預設事件如如 Click、RightClick、Resize 等等卻無法通過可視化的手段加以更改。例如你可以在一個自定義的視窗的 Click 事件中寫上一段代碼,執行時只要按一下該視窗,這段代碼就會執行。但是如果你想對 VFP 主視窗也如法炮製,好像就 …… 不是很方便了。
 
 
    幸運的是 VFP8 為我們提供了一個事件連結函數 BindEvent(),可以說明我們實現這個功能。BindEvent()函數可以把事件、屬性或方法從一個 Visual FoxPro 物件連結到另一個 Visual FoxPro 物件,根據這個思路,我們只要自定義一個物件,在自定義的事件或者方法中寫上我們要執行的代碼,然後把它連結到 Screen 的 Click 或者 RightClick 等的事件中就可以了。
 
 
   其範例代碼如下:
 
 	  | 代碼: | 	 		  
 
_Screen.AddObject("oScreenHook","ScreenHook")
 
  && 在 Screen 中 Add 一個自定義的物件
 
BINDEVENT(_SCREEN,"RightClick",_screen.oScreenHook,"RightClick")
 
  && 在連結該自定義物件的 RightClick 事件到 Screen 中
 
 
DEFINE CLASS ScreenHook AS CUSTOM
 
  && 定義一個基於基本類別 Custom 的類,類名為 ScreenHook
 
    PROCEDURE RightClick && 建立自定義的事件 RightClick
 
    =MESSAGEBOX("RightClick!", 64,_Screen.Caption) && 要執行的事件
 
    ENDPROC
 
ENDDEFINE
 
READ EVENTS
 
 | 	  
 
 
      先執行這段代碼,然後右鍵按一下 VFP 主視窗就可以看到效果了。你還可以把自己做的右鍵功能表加入到這段程式中來。不過要注意的是,這段程式好像僅在 VFP8 中適用。
 
    以上所寫都是一點個人淺見,若有錯誤尚請各位高手大俠不嗇指正。 _________________ 希望有更多人來參與
 
 VFP wiki - 需要大家一起完成的VFP電子書與FAQ  | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 2 樓
  | 
		
			
				 發表於: 星期三 三月 24, 2004 5:46 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				post   lqy821110 大俠在技術文章中所寫的《如何在 VFP 主視窗中建立自定義的事件、方法、屬性?》一文  作比較
 
 
如何在VFP主窗體中創建自定義的事件、方法、屬性? 
 
2004年3月10日  作者:  『動感游標』  瀏覽選項:  顏色 默認 灰度 橄欖色 綠色 藍色 褐色 紅色   本文已被瀏覽 53 次 
 
 
 
   
 
  
 
 今天有位網友留言,問如何在主窗體中創建事件,我盡我所知解答如下,請大家參考:
 
 
  Screen是VFP內存變量,基於基類form,屬性、事件或方法,可在程序中引用,如要改變VFP窗體的標題(VFP)和背景色(紅色)並居中,則可以寫成:_
 
   screen.title="VFP"
 
   _screen.backcolor=255
 
   _Screen.autocenter=.t.。 
 
  若要在主窗口編寫自定義的事件,則較麻煩。至少要經過二步:第一步:定義一個自已的類,在這個類中來創建需要的事件或方法或屬性;第二步則是在_Screen中添加對象,並執行對像中的事件或方法。如下面我們可編寫一個程序,運行後可以在主窗體中顯示一個消息窗(事件): 
 
  &&改變主窗體的屬性 
 
  _Screen.caption="我的主窗體" &&改變主窗體的標題 (我的主窗體) 
 
  _Screen.BackColor=65535 &&改變主窗體的背景色(黃色) 
 
 
  &&第二步:在主窗體中添加對象,並執行事件或過程 
 
  _screen.AddObject('mymess','dismess') &&添加對像 
 
  _screen.mymess.DispMessage &&執行自定義的過程 
 
 
  &&第一步:在主窗體中定義類,並創建事件或過程 
 
  DEFINE CLASS dismess AS Custom && 定義一個基於基類Custom的類,類名為dismess 
 
  PROCEDURE DispMessage &&創建自定義的過程,過程名為DispMessage 
 
  MESSAGEBOX("你好嗎?這樣就可在主窗體中間接的建立自己的事件了!", 256,"好消息") &&要執        行的事件 
 
  ENDPROC 
 
  ENDDEFINE _________________ #############################
 
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
 
 
學會VFP使用者社區的搜尋,Code才會更有趣~
 
############################# | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		Ruey
 
 
  註冊時間: 2003-03-12 文章: 1698 來自: tunglo
  第 3 樓
  | 
		 | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |