VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

[轉貼]如何在 VFP 主視窗中自定義事件

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
朱育興



註冊時間: 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
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
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 樓

發表發表於: 星期四 三月 25, 2004 2:10 am    文章主題: 引言回覆

1.順便也連結相關網頁
VFP8說明檔上的自定事件詳細說明(轉貼)
http://vfp.sunyear.com.tw/viewtopic.php?t=1128&highlight=%A8%C6%A5%F3


2.
經我測試發現有一bug.如果你原來要BINDEVENT事件如果有程式碼在的話!!
不論你是否已經註解.只要有東西.都會出現錯誤訊息"not LPARAMETERS"

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作