線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:649
推到 Plurk!
推到 Facebook!

各位大大...有個OO觀念想請教大家...

尚未結案
sprewell
一般會員


發表:13
回覆:21
積分:6
註冊:2003-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-05 18:07:50 IP:61.219.xxx.xxx 未訂閱
各位大大...有個OO觀念想請教大家... 我有個parent class繼承自TShape,目的為畫出一條線 Parent_Link = class(TShape) . . public procedure WndProc(var Message: TMessage); override; 其中WndProc會判斷使用者是否在此線上按了滑鼠,並彈出一個POPMEMU 另外有個 child class繼承此Parent_Link Child_Link = class(Parent_Link) . . public procedure WndProc(var Message: TMessage); override; 並覆寫其WndProc程序,目的是把彈出POPMEMU的功能取消 後來我實做下列程式: var Child : Child_Link; begin ...... Child := Child_Link(XXX.InsertLink(....)); //InsertLink(....)會傳回一個Parent_Link物件 ..... end; 我想要用覆寫方式蓋掉原本Parent_Link的popmenu功能,但是卻發現在轉成Child_Link後,它還是執行Parent_Link的WndProc 請大家幫我解解惑....謝謝!!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-05 20:43:51 IP:203.222.xxx.xxx 未訂閱
沒有完整的CODE,神也不知道那個環節有問題
tinochen
一般會員


發表:0
回覆:18
積分:8
註冊:2002-07-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-06 10:02:04 IP:211.22.xxx.xxx 未訂閱
引言: 我想要用覆寫方式蓋掉原本Parent_Link的popmenu功能,但是卻發現在轉成Child_Link後,它還是執行Parent_Link的WndProc 請大家幫我解解惑....謝謝!!
因為你當初Create的物件是Parent_link,你要override就Create Child_Link ,以你的寫法父物件轉為子物件編譯雖沒問題,但使用卻要很小心,若子物件有父物件中沒有的物件參考很容易發現memory的存取error,正規oo中是較不認同父轉子(除非你當初是子物件實體),但子轉父是很正常。 發表人 - tinochen 於 2003/12/06 10:10:52
sprewell
一般會員


發表:13
回覆:21
積分:6
註冊:2003-11-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-08 10:50:11 IP:61.219.xxx.xxx 未訂閱
感謝各位大大的解答...^^ 不放上完整的CODE是因為CODE太多了...就用節錄的方式...請見諒... 會有這個問題主要是因為公司的產品中本來就有很多物件..而之前可能沒有預料到後面需要再繼承使用的問題...><...而我又不太願意去改寫之前的那些物件...因為很多地方還會再用到... 不過我終於弄懂子物件跟父物件間的關係...感謝..^^ Delphi....我真的是摸不透你阿!!
系統時間:2024-03-29 20:29:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!