全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1307
推到 Plurk!
推到 Facebook!

製作元件時,如何知道要用什麼MESSAGE

答題得分者是:Justmade
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-26 16:19:50 IP:61.219.xxx.xxx 未訂閱
之前有人說,再做VCL元件時, 不要直接取代原本元件的事件 如: procedure ?.NewOnClick(Sender : TComponent); begin //....... end; Button1.onclick := NewOnClick 可是我要怎麼知道onClick是哪一個Win Message呢? 之前看過Delphi Club的DOS MOVE元件中有宣告過 procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; 這兩個Message,大概知道是當滑鼠指到元件與離開時。 自利用這兩個程式去產生新的OnIn 和 OnOUt事件, 可是要如何知道宣告的訊息為何 是否如下 procedure 自訂(var Message: TMessage); message 要的訊息; ^^^^^^^^^^^^^^^^^^^ 固定如此寫 因為現在我想直按寫一個只能打特定字母的TEdit元件, 可是不想直接把 TEdit.onKeyDown 的事件給取代 所以想問,有沒有訊息的參考文件或列表!! ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-26 16:50:41 IP:218.16.xxx.xxx 未訂閱
建議你在 Delphi 源程式遊歷一下,這樣對你做自定元件幫肋很大的。 1. 開一個新專案,放進一個 TEdit 2. 按F12進到編程畫面,在 Edit1: TEdit;一行,按下Ctrl並安下 TEdit 跳到 TEdit 的宣告 3. 大約看過 TEdit 的宣告後,Ctrl-TCustomEdit 跳到TCustomEdit 的宣告 4. 在 TCustomEdit 找不到有關 KeyDown 的 Message 宣告,便跳到 TWinControl 5. 看到 procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN; 看看是甚樣 implement 的 6. 原來是呼叫 DoKeyDown ,再看看 DoKeyDown 7. DoKeyDown 處理了一些項目如 FormPreview 後是呼叫 KeyDown 的 8. 在 KeyDown 會看看使用者有沒有設定 onKeyDown,若有的話便執行。 若你不想使用 onKeyDown 事件來處理你的需要,你可以承繼TEdit元件然後自定 KeyDown 程序,那樣便不需要自行去處理其他的項目如 FormPreview 了。 當然,你亦可直接攔截 Message 但這樣做所有有關該 Message 的處理你都要另行安排否則便與一般作法不符了。如你自行攔截 WM_KEYDOWN 但卻沒處理 FormPreview 的話, FormPreview 在你的元件便會失效了。
系統時間:2024-11-23 2:13:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!