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

請問各位大大該怎樣動態建立物件

答題得分者是:pcplayer99
xhunger
一般會員


發表:3
回覆:4
積分:1
註冊:2007-05-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-25 23:06:54 IP:218.168.xxx.xxx 訂閱
請問各位大大
我今天在FORM裡面想要用FOR迴圈去動態建立LABEL
並且LABEL的名稱是可被回圈控制的
比如
FOR i:=0 to 3 do
begin
LABEL.name:= i //或是一個陣列
end;

因為我主要是想要分別最創出來的LABEL來做屬性變化
煩請各位大大幫我解答一下
完全不知道該怎樣動態建立LABEL
看了其他文章還是看不懂在寫什麼
可以用簡單一點的程式碼說明一下嗎?
謝謝,拜託拜託
------
HAO
Stallion
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-25 23:12:13 IP:211.22.xxx.xxx 未訂閱
你有搜尋KTOP嗎?
看看這篇雷同的東西。
http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=87653
===================引 用 xhunger 文 章===================
請問各位大大
我今天在FORM裡面想要用FOR迴圈去動態建立LABEL
並且LABEL的名稱是可被回圈控制的
比如
FOR i:=0 to 3 do
begin
LABEL.name:= i //或是一個陣列
end;

因為我主要是想要分別最創出來的LABEL來做屬性變化
煩請各位大大幫我解答一下
完全不知道該怎樣動態建立LABEL
看了其他文章還是看不懂在寫什麼
可以用簡單一點的程式碼說明一下嗎?
謝謝,拜託拜託
xhunger
一般會員


發表:3
回覆:4
積分:1
註冊:2007-05-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-26 09:35:20 IP:60.250.xxx.xxx 訂閱
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;
end;

for i := 0 to 4 do
EditArray[i].Free;
end;
------
HAO
xhunger
一般會員


發表:3
回覆:4
積分:1
註冊:2007-05-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-26 09:36:58 IP:60.250.xxx.xxx 訂閱
不小心按到發表了
以上,萬一,我的是要給使用者輸入N個
而產生N個
那程式碼要怎麼改
謝謝大大的幫助
------
HAO
Stallion
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-26 09:58:07 IP:211.22.xxx.xxx 未訂閱
沒有看過DELPHI基本入門書籍裡的「動態陣列」章節嗎?書籍應該去翻一下吧!
var
EditArray:array of TEdit;
begin
SetLength(
EditArray,Nsize);
//your code...
end;
pcplayer99
尊榮會員


發表:142
回覆:739
積分:591
註冊:2003-01-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-26 22:17:14 IP:59.40.xxx.xxx 訂閱
最简单的:

ALabel := TLabel.Create(nil);
ALabel.Caption := 'hello';
ALabel.Name := 'Alabel1';

这样就创建了一个 Label 了。

这里的问题是,这个 Label 放在什么东西上面?比如,放在一个 Panel1 上面,该如何做?应该增加一条:

ALabel.Parent := Panel1;

这样就把它放到了Panel1 上面了。

在什么位置呢?

所以,还要写:ALabel.Top := 10; ALabel.Left := 5;

OK ,到这里,动态创建一个 Label 已经没问题了。动态创建 N 个 Label,该如何管理呢?用 array 是一个办法。比如:

<textarea cols="60" rows="10" class="delphi" name="code"> 比如: type TMyArray: array of TLabel; var MyLabelArray: TMyArray; i: Integer; begin SetLength(MyLabelArray, 101); for i := 0 to 100 do begin ALabel := TLabel.Create(nil); MyLabelArray[i] := ALabel; end; end; 不过呢,对于 Label 来说,可以不用 array 来管理。注意:ALabel := TLabel.Create(nil);这里的 nil 这个 nil 应该是 Label 的 Owner.如果我们写成: ALabel := TLabel.Create(Form1); 则 form1 就成了 ALabel 的 Owner. 以后要找到这个 ALabel 就很简单了,问 Form1 要。 for i := 0 to Form1.ComponentCount - 1 do begin if Form1.Components[i] is TLabel then begin ALabel := TLabel(Form1.Components[i]); //这样就找到 ALabel 了。要知道是哪个 Label,你可以判断名字,或者判断其它的什么属性了。 end; end; </textarea>


===================引 用 xhunger 文 章===================
不小心按到發表了
以上,萬一,我的是要給使用者輸入N個
而產生N個
那程式碼要怎麼改
謝謝大大的幫助
xhunger
一般會員


發表:3
回覆:4
積分:1
註冊:2007-05-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-27 14:21:45 IP:220.136.xxx.xxx 訂閱
感謝大大的幫忙
我在研究一下
非常感謝,這麼有耐心的幫我
謝謝
------
HAO
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-08-05 01:06:56 IP:203.79.xxx.xxx 訂閱
不好意思,雖然結案了,還是不禁想雞婆一下.
我想說的是,既然已經建立了TLabel Array,
應該直接用註腳(Labels[I])去索引物件,何必
再硬是要用物件名稱去搜尋使用?

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