線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1266
推到 Plurk!
推到 Facebook!

ListView1.Columns.Insert 程式執行過程

答題得分者是:cmf
ruwill
一般會員


發表:33
回覆:31
積分:12
註冊:2002-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-13 12:00:25 IP:210.68.xxx.xxx 未訂閱
抱歉,各位你請教一下,已以下的程式碼中 位於Classes unit 的TCollection = class(TPersistent) function TCollection.Add: TCollectionItem; begin Result := FItemClass.Create(Self); Added(Result); end; 當我中斷點設到Result := FItemClass.Create(Self); 在進一步追蹤, 我很難理解,為何他會去去執行這段的程式碼 constructor TListColumn.Create(Collection: TCollection); var Column: TLVColumn; begin FOrderTag := Collection.Count; inherited Create(Collection); FWidth := 50; FAlignment := taLeftJustify; FImageIndex := -1; with Column do begin mask := LVCF_FMT or LVCF_WIDTH or LVCF_IMAGE; fmt := LVCFMT_LEFT; cx := FWidth; iImage := FImageIndex; end; if TListColumns(Collection).Owner.HandleAllocated then ListView_InsertColumn(TListColumns(Collection).Owner.Handle, Index, Column); end; 不是應該先執行下面這段程式碼 constructor TCollectionItem.Create(Collection: TCollection); begin SetCollection(Collection); end;
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-13 12:19:31 IP:61.218.xxx.xxx 未訂閱
引言: 抱歉,各位你請教一下,已以下的程式碼中 位於Classes unit 的TCollection = class(TPersistent) function TCollection.Add: TCollectionItem; begin Result := FItemClass.Create(Self); Added(Result); end; 當我中斷點設到Result := FItemClass.Create(Self); 在進一步追蹤, 我很難理解,為何他會去去執行這段的程式碼 constructor TListColumn.Create(Collection: TCollection); var Column: TLVColumn; begin FOrderTag := Collection.Count; inherited Create(Collection); FWidth := 50; FAlignment := taLeftJustify; FImageIndex := -1; with Column do begin mask := LVCF_FMT or LVCF_WIDTH or LVCF_IMAGE; fmt := LVCFMT_LEFT; cx := FWidth; iImage := FImageIndex; end; if TListColumns(Collection).Owner.HandleAllocated then ListView_InsertColumn(TListColumns(Collection).Owner.Handle, Index, Column); end; 不是應該先執行下面這段程式碼 constructor TCollectionItem.Create(Collection: TCollection); begin SetCollection(Collection); end;
因為 TCollection.FItemClass = TListColumn 所以 ADD 時 會 FItemClass.Create(self);
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-13 12:27:38 IP:61.218.xxx.xxx 未訂閱
//再建立時可以指定 參數類別 constructor TCollection.Create(ItemClass: TCollectionItemClass);    //TListColumn 之繼承關希 TObject-> TPersistent -> TCollectionItem -> TListColumn        
------
︿︿
ruwill
一般會員


發表:33
回覆:31
積分:12
註冊:2002-11-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-13 14:11:33 IP:210.68.xxx.xxx 未訂閱
TCollection.FItemClass = TListColumn 謝謝你的回答,只是上面這一行是在哪邊設定,我還是找不到,麻煩告知
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-13 14:30:14 IP:61.218.xxx.xxx 未訂閱
引言: TCollection.FItemClass = TListColumn 謝謝你的回答,只是上面這一行是在哪邊設定,我還是找不到,麻煩告知
在你建立 TCollection 時 就要指定 TCollection.Create(ItemClass: TCollectionItemClass);
------
︿︿
ruwill
一般會員


發表:33
回覆:31
積分:12
註冊:2002-11-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-13 17:27:14 IP:210.68.xxx.xxx 未訂閱
感謝你的回答,我找到了
系統時間:2024-04-29 5:57:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!