請問怎樣可以弄一個property包著多個property |
尚未結案
|
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
像這樣的宣告
private { Private declarations } FRect: TRect; public { Public declarations } published property MyRect: TRect read FRect write FRect; ... end;就可以這樣用 MyRect.Left := 100; MyRect.Top := 20; ... 要學怎樣 去做出你想要的 property 最快的方式 就是參考 Delphi 所提供的 Source... 發表人 - malanlk 於 2005/09/05 13:29:58 |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 我是想說 property 怎樣寫到.. 有一個加的符號... 就是說 比如 property size : <- 但是size 是包含 width , height ,...etc如果你想建一個可供物件檢視器處理的結構化的prperty的話 首先你必須為該結構化prperty建立一個類別(必須從TPersistent繼承下來 才具備永續儲存的能力) 接著在你設計的元件上定義該屬性,特別注意的事由於該屬性是類別 因此 你必須在你設計物件的建構者(Constructor) 中事先建立 解構者(Destructor)中釋放 架構範例如下 unit Component1; interface uses SysUtils, Classes; type //用來處理Size結構的類別 TSizeClass = Class(TPersistent) private FHeight: Integer; FWidth: Integer; procedure SetHeight(const Value: Integer); procedure SetWidth(const Value: Integer); published property Width : Integer read FWidth write SetWidth; property Height : Integer read FHeight write SetHeight; end; //你設計的元件 TComponent1 = class(TComponent) private FSize: TSizeClass; procedure SetSize(const Value: TSizeClass); public constructor Create(AOwner:TComponent);override; destructor Destroy;override; published property Size :TSizeClass read FSize write SetSize; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TComponent1]); end; { TSizeClass } procedure TSizeClass.SetHeight(const Value: Integer); begin FHeight := Value; end; procedure TSizeClass.SetWidth(const Value: Integer); begin FWidth := Value; end; { TComponent1 } constructor TComponent1.Create(AOwner: TComponent); begin inherited; FSize := TSizeClass.Create; end; destructor TComponent1.Destroy; begin FreeAndNil(FSize); inherited; end; procedure TComponent1.SetSize(const Value: TSizeClass); begin FSize := Value; end; end.混心雜欲 棄修身~唉
------
唉~ |
SamSam1230
中階會員 發表:128 回覆:178 積分:65 註冊:2004-12-23 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 謝謝speedup 的回答 問題是得到解決 但想多口問一下 為什麼 -> (必須從TPersistent繼承下來 才具備永續儲存的能力)永續儲存(Persistent )是指將物件的狀態儲存起來(例如將設計期的屬性存在 DFM中),新一代的程式語言基本上都會實作此依機制(例如Java 的Serialization) 而Delphi在VCL架構中從TPersistent中實作此一機制,也因此Delphi的元件(TComponent 繼承至TPersistent)具備將屬性狀態儲存起來的能力 由此可見雖然VCL 已經推出近十年了但其設計理念絕對不輸給現今的 Java /.Net 混心雜欲 棄修身~唉
------
唉~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |