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

元件名稱可以變數代入嗎?

答題得分者是:Stallion
esp_pzj
初階會員


發表:32
回覆:70
積分:40
註冊:2007-02-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-03 10:47:02 IP:210.60.xxx.xxx 訂閱
例如:現在有edit1、edit2、 edit3、edit4、edit5 元件
利用迴圈來設定edit的值。

for i:=1 to 5 do
begin
edit(i).text:='edit' IntToStr(i);
end;

結果如同:
edit1.text:='edit1';
edit2.text:='edit2';
edit3.text:='edit3';
edit4.text:='edit4';
edit5.text:='edit5';

------
學藝不精 謝多多指教
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-03 11:09:43 IP:211.22.xxx.xxx 未訂閱
無法使用變數,需要使用動態產生元件的方法!
<textarea cols="60" rows="10" class="delphi" name="code"> var EditArray:array[0..4] of TEdit; i:integer; begin for i := 0 to 4 do begin EditArray[i] := TEdit.Create(Self); EditArray[i].Name := 'Edit' IntToStr(i); EditArray[i].Visible := true; EditArray[i].Left := 100; EditArray[i].top := 100 i * 10; // .... your code end; // .... your code for i := 0 to 4 do EditArray[i].Free; end; </textarea>
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-03 11:25:56 IP:59.124.xxx.xxx 未訂閱
獻醜
<textarea class="vb" rows="10" cols="60" name="code"> procedure TForm1.Button1Click(Sender: TObject); var I : Integer; Edt : TEdit; begin for i := 1 to 5 do begin Edt :=TEdit(Self.FindComponent('Edit' IntToStr(I))); if Edt <> Nil then begin Edt.Text := 'edit' IntTostr(i); end end; end; </textarea>


Fishman
------
Fishman
uian
一般會員


發表:1
回覆:1
積分:0
註冊:2007-03-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-15 11:02:13 IP:211.166.xxx.xxx 訂閱
是否可以考虑这样实现:

1.通过 父控件 的 Controls[Index] 枚举自控件。
2.通过 子控件 的 Name 属性确认是否为需要操作的控件。if Controls[Index].Name = "Edit" inttostr(i) then 。。。;
3.转化 子控件 类型,并进行操作。 TEdit(Controls[Index]).text := "....";


仔细看过 Fishman 的办法,发现自己的才是真正[献丑]了。路过的版主帮忙删除掉吧。真的很丑……
------
Never, never surrander...
編輯記錄
uian 重新編輯於 2007-05-15 12:32:51, 註解 無‧
系統時間:2024-04-26 8:13:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!