中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
关于自定义组件属性中的default、stored等用法
作者:未知 时间:2004-09-14 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

Justmade  兄的解答:

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 的函數,以因應情況來決定是否儲存。

nodefault 平常不必用,當你沒設 default XXX 時便等於 noDefault (以該類變數的 Default 為該 Property 預設值)

但當你某 Property 時承繼自父代而在父代有設 default 時,你便可以 nodefault 來還原成沒 default 的狀態。

implements 是 Interface 用的 Directive, 與這其他幾個 directive 完全無關,是指出某 Property / Method 是實現某 Interface 之用。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有