迴圈 |
答題得分者是:pedro
|
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
var
i,j:Integer; MyEdits:array of TEdit; begin SetLength(MyEdits,6); j:=0; for i := 0 to Self.ComponentCount-1 do begin if Self.Components[i] is TEdit then begin MyEdits[j]:=(Self.Components[i] as TEdit); Inc(j); end; end; for i :=0 to j-1 do begin MyEdits[i].Text:=IntToStr(i); end; |
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
>感謝pedro756901兄給的案例~ 呵呵,不客氣,著作倒是沒有,不過我可以大致解釋一下這程式意思 > for i := 0 to Self.ComponentCount-1 do 在Form的container裡(就是控制項的Parant是Form),可以用ComponentCount去知道Form上有多少個控制項,用Is去判斷該控制項是否為某一類型的控制項,然後用As去轉型. 因為MyEdits宣告為array of TEdit,是一個TEdit陣列,把Components[i]所轉型指向它,Components[i]是一個定義TComponent型態的類別的資料,實際上需視執行時所建立的是什麼物件,所以需判斷Is是否為TEdit,及轉型As為TEdit. |
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
===================引 用 文 章=================== 可以啊,在這段之後 if Self.Components[i] is TEdit then if Self.Components[i] is TLabelthen 執行後會出現"Project Project1.exe raised exception class EInvalidCast with message 'Invalid class typecast'. Process stopped. Use Step or Run to continue." |
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
|
linkhanks
一般會員 發表:3 回覆:11 積分:2 註冊:2006-07-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |