Delphi Interceptor Classes |
答題得分者是:pprayer
|
boy330077
一般會員 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
根據參考(http://grandruru.blogspot.tw/2012/11/delphi-interceptor-classes-tbutton.html)
參考遇到的問題是覆寫 TMaskEdit 的 事件 由於訊息錯誤。 我遇到類似的問題發生在 TFMTBcdField 的 SetAsString 中,因此想參照此方法做覆寫這個事件。 測試了很久最後終於 compile 過了,但是不幸的是,他沒有跑進我覆寫新的副程式當中。 不知道我是觀念錯誤,還是語法不正確。 [code delphi] TFMTBcdField = class(Data.DB.TFMTBCDField) procedure SetAsString(const Value: string); override; end; ... { TFMTBcdField } procedure TFMTBcdField.SetAsString(const Value: string); begin //inherited; // end; [/code] |
pprayer
高階會員 發表:35 回覆:185 積分:174 註冊:2002-03-13 發送簡訊給我 |
如果你想改寫TFMTBcdField這個元件,
那要先確定TFMTBcdField. SetAsString這方法後面是否有virtual、dynamic、或者abstract 類似這樣 procedure SetAsString; abstract; 之後你在建立一個繼承TFMTBcdField的元件 ex TMYBcdField來改寫SetAsString TMYBcdField = class(TFMTBCDField) procedure SetAsString(const Value: string); override; end; 如果那個方法是private或者是static,就不能改寫了。 ===================引 用 boy330077 文 章=================== 根據參考(http://grandruru.blogspot.tw/2012/11/delphi-interceptor-classes-tbutton.html) 參考遇到的問題是覆寫 TMaskEdit 的 事件 由於訊息錯誤。 我遇到類似的問題發生在 TFMTBcdField 的 SetAsString 中,因此想參照此方法做覆寫這個事件。 測試了很久最後終於 compile 過了,但是不幸的是,他沒有跑進我覆寫新的副程式當中。 不知道我是觀念錯誤,還是語法不正確。 [code delphi] TFMTBcdField = class(Data.DB.TFMTBCDField) procedure SetAsString(const Value: string); override; end; ... { TFMTBcdField } procedure TFMTBcdField.SetAsString(const Value: string); begin //inherited; // end; [/code] |
boy330077
一般會員 發表:39 回覆:59 積分:19 註冊:2009-10-15 發送簡訊給我 |
關於這點
TFMTBCDField = class(TNumericField) TNumericField = class(TField) TField = class(TComponent) ... protected procedure SetAsString(const Value: string); virtual; ... 然後 FMTBcdField 有再覆寫過一次 TFMTBCDField = class(TNumericField) ... protected procedure SetAsString(const Value: string); override; ... 所以原生在 Data.DB 裡面已經override過了 按照範例的 TMaskEdit 的 ValidateError 也是在 protected 裡面 我以為可以一樣攔截,但是實做以後都會略過我多寫出來的副程式,完全沒有進入。 或是希望被攔截的事件一定要 virtual 我就不能理解了
編輯記錄
boy330077 重新編輯於 2016-08-30 22:28:15, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |