動態元件釋放時ERROR |
答題得分者是:hahalin
|
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
v_arrayNum:=5; //此數不固定,是抓資料後決定
v_num:=v_arrayNum;
while v_num>0 do // 釋放
begin
xtfcLabel1[v_num-1].free;
xtRichEdit[v_num-1].free;
xtTabSheet[v_num-1].free;
v_num:=v_num+1;
end; // if xtfcLabel1 <> nil then FreeAndNil(xtfcLabel1); SetLength(xtTabSheet,v_ArrayNum); //確定數目
SetLength(xtRichEdit,v_ArrayNum);
SetLength(xtfcLabel1,v_ArrayNum);
v_num:=0;
while v_num
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
v_arrayNum:=5; //此數不固定,是抓資料後決定 v_num:=v_arrayNum; while v_num>0 do // 釋放 begin xtfcLabel1[v_num-1].free; xtRichEdit[v_num-1].free; xtTabSheet[v_num-1].free; dec(v_num); end;http://pywong.hk.st http://www.lazybones.ca |
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
可以用這樣方式釋放。 For I:=Low(xtTabSheet) to High(xtTabSheet) do if assigned(xtTabSheet[I]) then FreeAndNil(xtTabSheet[I]); 觀念上應該是這樣建立的。 xtTabSheet[v_num]:=tTabSheet.Create(Self);{指的是Form} xtTabSheet[v_num].Parent := PageControl4; xtTabSheet[v_num].PageControl:=PageControl4; .... |
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
我試是正確的。
不曉得您出了什麼問題?
For I:=Low(xtTabSheet) to High(xtTabSheet) do begin xtTabSheet[I]:=tTabSheet.Create(Self); xtTabSheet[I].Parent := PageControl4; xtTabSheet[I].PageControl:=PageControl4; xtTabSheet[I].Caption:='回覆' inttostr(I 1); xtRichEdit[I] := TRichEdit.Create(Self); xtRichEdit[I].Parent := xtTabSheet[I]; ..... end;補充一點。在釋放物件後 For I:=Low(xtTabSheet) to High(xtTabSheet) do if assigned(xtTabSheet[I]) then FreeAndNil(xtTabSheet[I]); setLength(xtTabSheet,0);{或 Finalize(xtTabSheet);} |
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
謝謝二位的示範,我剛剛也做了一個測試,發現用botton的方式是可以消除掉,
但我若寫在同一程式內時就出問題了.
我是先查有沒有產生過,有就清除,再產生.
後來清除那段我將之換到一個獨立的botton上,按botton後果然能去除TabSheet 如果這樣的話,我能在哪處去下
For I:=Low(xtTabSheet) to High(xtTabSheet) do
if assigned(xtTabSheet[I]) then FreeAndNil(xtTabSheet[I]); setLength(xtTabSheet,0);
這段敘述呢?
|
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |