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

迴圈

答題得分者是:pedro
linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-06 20:55:52 IP:60.248.xxx.xxx 訂閱

for j:= 0 to ADOTable1.RecordCount-1 do begin
Edit[j].Text:= ADOTable1.FieldByName('名稱').AsString;

請問一下可以用這樣的寫法嗎?

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-07 12:51:29 IP:60.248.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-08 09:34:06 IP:60.248.xxx.xxx 訂閱

感謝pedro756901兄給的案例~

不知道您有沒有大作可以看(書...)

因為小弟只會看案例來舉一反三(買了三~四本...裡面都一樣的案例.....看沒有@@")

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-08 15:16:21 IP:60.248.xxx.xxx 未訂閱

>感謝pedro756901兄給的案例~

呵呵,不客氣,著作倒是沒有,不過我可以大致解釋一下這程式意思

> 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
> MyEdits[i].Text:=IntToStr(i);
> end;

在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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-09-09 02:00:05 IP:60.248.xxx.xxx 訂閱

感謝你解說的這麼詳細~

可以在請教一下嗎?為什麼我不能同時使用LABEL和EDIT?

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-09-11 09:42:27 IP:60.248.xxx.xxx 未訂閱

可以啊,在這段之後

if Self.Components[i] is TEdit then
begin
MyEdits[j]:=(Self.Components[i] as TEdit);
Inc(j);
end;
再加上

if Self.Components[i] is TLabelthen
begin
MyLabels[j]:=(Self.Components[i] as TLabel);
Inc(k);
end;

linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-09-15 18:02:27 IP:60.248.xxx.xxx 訂閱

===================引 用 文 章===================

可以啊,在這段之後

if Self.Components[i] is TEdit then
begin
MyEdits[j]:=(Self.Components[i] as TEdit);
Inc(j);
end;
再加上

if Self.Components[i] is TLabelthen
begin
MyLabels[j]:=(Self.Components[i] as TLabel);
Inc(k);
end;
先感謝你的指導~~^^

執行後會出現"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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-09-15 18:34:07 IP:60.248.xxx.xxx 訂閱

耶~~~

小弟依照你的方法試出來了~

先前是手殘弄錯了~~感謝你~~

linkhanks
一般會員


發表:3
回覆:11
積分:2
註冊:2006-07-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-09-16 02:15:48 IP:60.248.xxx.xxx 訂閱

抱歉我可以再請教一下嗎?

Image可以用這種方式嗎?

就是欄位裡的資料是圖檔的位置~

小弟先試了之前的方式好像是不同的資料型態~所以不能用這種方式?!

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