ReadComponent 讀不出 Left 與 Top 屬性值 |
答題得分者是:william
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
小弟寫了一個複合式的 TCamera Component, 程式碼如下:
type TCameraImage = class(TImage) private procedure WMRBUTTONDOWN(var Message: TWMRBUTTONDOWN); message WM_RBUTTONDOWN; end; type TCamera = class(TButton) private FImage: TCameraImage; FNameLabel: TTntLabel; published property Image: TCameraImage read FImage write FImage; property NameLabel: TTntLabel read FNameLabel write FNameLabel; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; // ... { TCameraImage } procedure TCameraImage.WMRBUTTONDOWN(var Message: TWMRBUTTONDOWN); begin inherited; if Assigned(Owner) and (Owner is TWinControl) then TWinControl(Owner).SetFocus; end; { TCamera } constructor TCamera.Create(AOwner: TComponent); begin inherited; Height := 75; Tag := 0; Width := 75; FImage := TCameraImage.Create(AOwner); FImage.Align := alClient; FImage.Parent := Self; FImage.Stretch := True; FNameLabel := TTntLabel.Create(AOwner); FNameLabel.Parent := Self; FNameLabel.Transparent := True; FNameLabel.BringToFront; end;小弟在 Form1 中動態 Create 了一個 TCamera 後 這個 TCamera 的 Owner 是 Form1, Parent 是一個 TPageControl 上的一 TTabSheet 最後在 WriteComponent(Form1) 中記下了 Form1 中的每個 Component 小弟的問題是小弟可以看到記錄檔中有記下了 TCamera.NameLabel 的 Left 與 Top 屬性值 但再次要以 ReadComponent(Form1) 方式讀出時這 Left/Top 屬性時就不成功了 (讀出的值皆為 0) 請問一下大家可能的原因為何? |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Too lazy to code , > < face='Lucida Console'>http://pywong.hk.st http://www.lazybones.ca
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
小弟剛修改了做法, 將 FNameLabel 與 FImage 的 Owner 都設為 nil 了
問題是出在 constructor TCamera.Create(AOwner: TComponent); 這邊吧
在 TMemoryStream.ReadComponent(Form1) 時, 已經將 NameLabel 與 CameraImage 讀進來了,
可是 constructor TCamera.Create 這裡又 create 出另一個 NameLabel 與 CameraImage
於是每多 WriteComponent / ReadComponent 一次
NameLabel 與 CameraImage 就又多一個
最後小弟將在 TCamera 多設了 NameLabelCaption、NameLabelLeft、NameLabelTop 三個屬性給 NameLabel 用就可以了
不過得在異動 NameLabel 的 Caption/Left/Top 時,
同時將值指定給 TCamera 的 NameLabelCaption/NameLabelLeft/NameLabelTop 三個屬性, 似乎是不好的做法
謝謝 >
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Typo >> >>, face='Lucida Console'>http://pywong.hk.st http://www.lazybones.ca
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |