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

自訂複合VCL元件撰寫SetFocus,可以使用但會警告

答題得分者是:aftcast
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-15 10:29:20 IP:220.134.xxx.xxx 訂閱

自訂複合VCL元件撰寫SetFocus,可以使用但會警告

前輩您好:

當我編譯自己撰寫的複合vcl元件時,會出現Method 'SetFocus' Hides Virtual method of base type 'TwinControl'
因為我複合元件中,有EDITBOX元件,我希望當使用該元件的表單,可以下達SetFocus轉移焦點,雖然
我目前編譯有問題,setfocus卻是可以執行的,但我想更清楚的問一下,是否我們在自訂元件時,若使用
到與繼承物件相同的列別都會出現相關警告,可以不予理會。


type
YEdit = class(TWinControl)


==================================================================
感謝回應的前輩、KTOP真是有人情味的好所在!

------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-15 11:35:17 IP:61.229.xxx.xxx 未訂閱

就物件導向的觀點來看,你override 父類別的virtual method時,父類別的方法會被hide起來,在runtiime的時候父類的方法就不會"直接"被呼叫,但可以"間接"的用指定的方式叫用,所以叫 hide起來,而不是replace。但delphi如何用間接的方式叫用父類的virtual method我就不確定。不過,記得delphi中有inherited這個字眼好像就是可以叫用。若你沒在同名的virtual method中使用inherited時,好像父類的功能就不會被叫,所以是會警告你。

話說回來,以物件的觀念來說,要override virtual,即polymorph多型時,都是IS的關係,不是composition複合的關係。就是說以你這個情形的元件,我覺得是不是改新增自己的method而不要override,比如說多二個method叫SetFoucusToBtn,SetFoucusToEdit,而保留整個元件的SetFoucus。

當然,雖然IS和Composition不太一樣的出發點,但經常都可以完成一樣的目的。

PS以上用的是比較c 的觀點,也許delphi上有些不同,若有錯請指正

蕭沖 qs.xiao@gmail.com
http://aftcast.blogspot.com/
生有涯而知無涯,以有涯隨無涯,殆矣
===================引 用 文 章===================

自訂複合VCL元件撰寫SetFocus,可以使用但會警告

前輩您好:

當我編譯自己撰寫的複合vcl元件時,會出現Method 'SetFocus' Hides Virtual method of base type 'TwinControl'
因為我複合元件中,有EDITBOX元件,我希望當使用該元件的表單,可以下達SetFocus轉移焦點,雖然
我目前編譯有問題,setfocus卻是可以執行的,但我想更清楚的問一下,是否我們在自訂元件時,若使用
到與繼承物件相同的列別都會出現相關警告,可以不予理會。


type
YEdit = class(TWinControl)


==================================================================
感謝回應的前輩、KTOP真是有人情味的好所在!

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-16 05:43:24 IP:220.134.xxx.xxx 訂閱

aftcast前輩:

感謝您講解這麼清楚個概念,發現自己寫VB6太久了,所以很多時候撰寫程式的概念還是
以Top-Down方式搭配Event的方式,忘記了物件導向的精髓,雖然自己學過c語言,但好像
也沒真正用oop方式寫過像樣的程式。


今天去圖書館將一些絕版好書,借出來後才發現自己自己在Ktop所問的問題,原來前人已經實
作很久,只是自己沒有發覺,有點沮喪,不過也因為您的熱情回覆,讓我都覺得自己要更努力啦!

------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-05-12 1:39:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!