如何讓程式一開始執行時,屬性能依序讀取 |
尚未結案
|
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
我寫了一個元件
有兩個屬性如下
published
Property btn:TComponent read Fbtn write setbtn;
property btnIndex:Integer read FbtnIndex write SetbtnIndex; 如何才能讓程式一開始run時,先去read 和 write "btn"屬性而不是先read 和 write "btnIndex"屬性,
我記得只寫在前面的屬性會被先讀取,但我的程式就先讀btnIndex,不知有沒有人能指點一下。謝謝
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
引言: 我寫了一個元件 有兩個屬性如下 published Property btn:TComponent read Fbtn write setbtn; property btnIndex:Integer read FbtnIndex write SetbtnIndex; 如何才能讓程式一開始run時,先去read 和 write "btn"屬性而不是先read 和 write "btnIndex"屬性, 我記得只寫在前面的屬性會被先讀取,但我的程式就先讀btnIndex,不知有沒有人能指點一下。謝謝建議你重新思考你的設計架構 屬性是不應該有依賴性的,尤其是會出錯的那種依賴性 |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 我寫了一個元件 有兩個屬性如下 published Property btn:TComponent read Fbtn write setbtn; property btnIndex:Integer read FbtnIndex write SetbtnIndex; 如何才能讓程式一開始run時,先去read 和 write "btn"屬性而不是先read 和 write "btnIndex"屬性, 我記得只寫在前面的屬性會被先讀取,但我的程式就先讀btnIndex,不知有沒有人能指點一下。謝謝針對這種有相依性的屬性可Override Loaded方法,在Loaded中控制實際寫入邏輯,Loaded方法會在元件屬性全部載入後再呼叫,因此大部分VCL元件處理相依性屬性時,在SetXXXX的方法內會用csReading判斷目前是否正由資源檔載入屬性 if csReading in ComponentState then FXXXX := Value//表示正在讀入屬性值,不做處理邏輯,只暫時寫入Flag else begin DoPhysicalSetLogic; end; //最後在 loaded Method 中由於全部屬性已經寫入FXXXX 你可以安心處理DoPhysicalSetLogicps.Loaded只會呼叫一次 混心雜欲 棄修身~唉
------
唉~ |
iamjsn
初階會員 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |