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

关于自定义组件属性中的default、stored等用法?

答題得分者是:Justmade
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-14 09:56:15 IP:61.155.xxx.xxx 未訂閱
请问stored, default (or nodefault), and implements 怎么使用? 特别是在使用default 时候会常常出错,关于string、integer、枚举、子界、数组等属性中default 使用? 谢谢!
Justmade
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-14 11:11:25 IP:218.16.xxx.xxx 未訂閱
Default 不是給值這個 property , 而是告訴 Component writer 若這個 Property 的現值是這個值的話,就不用寫進 DFM (或 writeComponent 時不用包括這個 Property),以節省空間。    若你的 default 值是這個類的預設 default 值的話(如數字類是0, Set 是 [] 等),是不用寫出來的。    若你那個property的預設值跟一般不同的話,如是 interger 預設是 5 ,你可用 : property Number read FNumber write FNumber default 5;    但要記得當這個 Object Create 出來時,Number 仍然是 0 的,若你在程式碼及使用者都沒修改,因為 Number 是 0 不是 Default ,所以便會寫入 DFM。所以通當我們會在這個 Class 的 Create Constructor 加入設定這個 Property 成 Default 值 :    FNumber := 5;    這樣,若使用者沒更改,這個 Property 便不用寫入 DFM 而 run 時因為 Create 時會設成 5,便附合應有的值了。    另外,只有 Cardinal 的變數 (Integer, Boolean, Set, Enum 等) 才可設定 Default, String / Collection 等不可以。    另外,default 這個字眼也有另一個意思,是與上述的無關的,是設定 Default property 的意思,通當會是 Event ,那在 IDE 雙擊元件時會設定該 Event 了 : property OnCLick read FOnClick write FOnClick;default; stored 是設定此 Property 是否存進 DFM 及 writeComponent 時是否包括此資料,這個是比 Default 優先的,若是 True 則即使是 Default Value 都要存,若是 False 則即是不是 Default Value 都不存 (值會失去,下次讀入或執行時會變成 Default 值)。 Stored 除了可直接指明 True / False 外還可用回傳 Boolean 的函數,以因應情況來決定是否儲存。
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-14 11:44:51 IP:61.155.xxx.xxx 未訂閱
真的有听君一席话胜看10遍书的感觉,多谢了! 可否将
Justmade
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-14 13:39:30 IP:218.16.xxx.xxx 未訂閱
nodefault 平常不必用,當你沒設 default XXX 時便等於 noDefault (以該類變數的 Default 為該 Property 預設值) 但當你某 Property 時承繼自父代而在父代有設 default 時,你便可以 nodefault 來還原成沒 default 的狀態。 implements 是 Interface 用的 Directive, 與這其他幾個 directive 完全無關,是指出某 Property / Method 是實現某 Interface 之用。 Interface 是另一個大題目,不是一篇回覆裡可寫的,你也可在網上找找有大量資料。 可參考一下 : http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28754
系統時間:2024-05-04 17:23:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!