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

刪除所有動態產生的元件

答題得分者是:kuf41
cswang1210
一般會員


發表:46
回覆:42
積分:17
註冊:2005-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-10-22 16:37:16 IP:220.130.xxx.xxx 訂閱
各位大大....
小弟動態產生元件後...元件名稱開頭為"DDD..."
想要把所有DDD開頭名稱的元件刪除.....

for j:=0 to ComponentCount-1 do
begin
if Components[j] is TwwDataInspector then
begin
if copy(Components[j].Name,1,3)='DDD' then
Components[j].Free;
end;
end;

結果會出現"list index out of bounds..."的錯誤訊息
請問我該怎麼寫會比較好...謝謝!

henrybwu
一般會員


發表:1
回覆:4
積分:1
註冊:2010-10-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-10-22 17:53:33 IP:59.125.xxx.xxx 訂閱
要不要試試看先把所有動態元件的"名稱"存到一個StringList裡面
等整個畫面的元件都SCAN完次後再用類似 Components[StringList[i].text].Free 的做法來刪除元件
這樣或許可以避開刪除一個元件之後 Index 改變的問題

===================引 用 cswang1210 文 章===================
各位大大....
小弟動態產生元件後...元件名稱開頭為"DDD..."
想要把所有DDD開頭名稱的元件刪除.....

for j:=0 to ComponentCount-1 do
begin
if Components[j] is TwwDataInspector then
begin
if copy(Components[j].Name,1,3)='DDD' then
Components[j].Free;
end;
end;

結果會出現"list index out of bounds..."的錯誤訊息
請問我該怎麼寫會比較好...謝謝!

kuf41
中階會員


發表:14
回覆:45
積分:51
註冊:2006-12-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-10-22 17:55:20 IP:220.136.xxx.xxx 訂閱
for j:=0 to ComponentCount-1 do
改為
for j:=ComponentCount-1 downto 0 do



------
一切都為了明天
henrybwu
一般會員


發表:1
回覆:4
積分:1
註冊:2010-10-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-10-22 18:03:23 IP:59.125.xxx.xxx 訂閱
對喔.....都忘了可以從後面找回來.......您的方法應該是正解
又多學到一招了

===================引 用 kuf41 文 章===================
for j:=0 to ComponentCount-1 do
改為
for j:=ComponentCount-1 downto 0 do



cswang1210
一般會員


發表:46
回覆:42
積分:17
註冊:2005-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-10-22 23:00:57 IP:220.130.xxx.xxx 訂閱
謝謝兩位的幫忙....
===================引 用 kuf41 文 章===================
for j:=0 to ComponentCount-1 do
改為
for j:=ComponentCount-1 downto 0 do



系統時間:2017-10-18 6:29:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!