元件名稱可以變數代入嗎? |
答題得分者是:Stallion
|
esp_pzj
初階會員 發表:32 回覆:70 積分:40 註冊:2007-02-09 發送簡訊給我 |
例如:現在有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 發送簡訊給我 |
無法使用變數,需要使用動態產生元件的方法!
<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 發送簡訊給我 |
獻醜
<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 發送簡訊給我 |
是否可以考虑这样实现:
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, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |