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

請問有辦法用變數大量改變元件屬性嗎?或有其它替代的方法?

答題得分者是:careychen
gallin
一般會員


發表:2
回覆:0
積分:0
註冊:2008-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-16 16:18:57 IP:220.128.xxx.xxx 訂閱
各位高手們好@@~我是delphi新手,還請多多指教

請問如標題
例如我有很多butten
butten01~butten99
改變caption屬性的話是 butten01.caption:='01'
butten02.caption:='02'
...
butten99.caption:='99'

等於右邊的字串還可以用inttostr(變數) 取代
但左邊的butten name似乎不行...
請問各位大大有沒有什麼辦法@@~>?
感恩

//
原來有這種東東@@~看來我要再加油~感謝各位大大囉@@~
編輯記錄
gallin 重新編輯於 2008-12-17 11:40:38, 註解 @@感謝各位大哥‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-16 16:31:23 IP:60.248.xxx.xxx 訂閱
如果您的目的【只是改同類型元件的屬性的話】
可以這樣下,如果不是的話,可以參考看一下,依據自已的需求來修改

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var I: Integer;
begin
for I:= 0 to Self.ComponentCount-1 do
if Self.Components[I] is TButton then
TButton(Self.Components[I]).Caption := Copy(Self.Components[I].Name, 7, 2);
end;
[/code]

但…一個畫面那麼多的元件.... 會不會多了點......?

===================引 用 gallin 文 章===================
各位高手們好@@~我是delphi新手,還請多多指教

請問如標題
例如我有很多butten
butten01~butten99
改變caption屬性的話是 butten01.caption:='01'
butten02.caption:='02'
...
butten99.caption:='99'

等於右邊的字串還可以用inttostr(變數) 取代
但左邊的butten name似乎不行...
請問各位大大有沒有什麼辦法@@~>?
感恩
------
價值的展現,來自於你用哪一個角度來看待它!!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-16 16:32:34 IP:211.72.xxx.xxx 訂閱
宣告一個 TButton 陣列存 Button01~Button99, 便可用迴圈處理.
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-16 16:42:22 IP:122.116.xxx.xxx 未訂閱
for i:=0 to ComponentCount-1 do begin
if Components[I] is TBUTTON then BEGIN
TBUTTON(Components[I]).Caption := STRINGREPLACE(TBUTTON(Components[I]).Caption,'button','',[RFIGNORECASE]);
END;
End;
===================引 用 gallin 文 章===================
各位高手們好@@~我是delphi新手,還請多多指教

請問如標題
例如我有很多butten
butten01~butten99
改變caption屬性的話是 butten01.caption:='01'
butten02.caption:='02'
...
butten99.caption:='99'

等於右邊的字串還可以用inttostr(變數) 取代
但左邊的butten name似乎不行...
請問各位大大有沒有什麼辦法@@~>?
感恩
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-16 17:18:49 IP:220.141.xxx.xxx 訂閱
如果你是要暫時(執行時期變更元件名稱),請用下面的方法。
[code delphi]
// Run Time更改元件名稱的方法
procedure TForm1.BitBtn1Click(Sender: TObject);
var i : integer;
sn : string; // 序號(01,02,03...)
begin
for i :=0 to self.ComponentCount -1 do begin
if Self.Components[I] is TButton then begin
// %格式字串的長度.整數位數不足?位則以0來補足(d代表整數形態)
sn := Format('%2.2d', [i 1]);
TButton(Self.Components[I]).name := 'MyButton' sn;
// 故意把Caption再改回來,故畫面好像沒變一樣
TButton(Self.Components[I]).caption := 'Button' sn;
// 驗證: 將目前Button的Name指定給Hint
TButton(Self.Components[I]).hint := TButton(Self.Components[I]).name;
// 顯示Button Hint,這時Button的Name已都變成MyButton0X了
TButton(Self.Components[I]).ShowHint := true;
end;
end;
end;

[/code]
如果你要永久變更元件的名稱,請用以下方法:
http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=92317
先批次改為Txt後用UltraEdit作批次取代後,再批次轉為binary。
------
努力會更接近成功
編輯記錄
pceyes 重新編輯於 2008-12-16 17:35:52, 註解 無‧
pceyes 重新編輯於 2008-12-16 17:49:43, 註解 無‧
pceyes 重新編輯於 2008-12-16 17:50:24, 註解 無‧
pceyes 重新編輯於 2008-12-16 18:07:48, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-16 19:53:06 IP:211.72.xxx.xxx 訂閱
Delphi、BCB 4 及之前, dfm 檔為 binary 格式.
Delphi、BCB 5 及之後, dfm 檔為 binary 格式或 Text 格式皆可.
小弟較喜歡用 Text 格式, 方便用 UltraEdit 改.
roviury
一般會員


發表:3
回覆:49
積分:15
註冊:2008-08-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-01-11 20:39:41 IP:203.186.xxx.xxx 訂閱
實際上你不可能一個個建立
只會用動態方法建立
var buts:array[1...99] of Tbutton; //1-99個物件變數
begin
for i:=1 to 99 do begin
buts[i]:=Tbutton.create(nil); //變數由類變成物件
with buts[i] do begin
parent:=Form1; //把物件放到form1
caption:=Format('%2.2d', [i]) {inttostr(i)} ; //caption,已補0
name:='button' caption; //name(這個不設定也可以)
end;
end;
end;
編輯記錄
roviury 重新編輯於 2009-01-11 20:41:16, 註解 無‧
roviury 重新編輯於 2009-01-11 20:42:14, 註解 無‧
roviury 重新編輯於 2009-01-11 20:50:33, 註解 加註解‧
roviury 重新編輯於 2009-01-11 20:56:59, 註解 無‧
系統時間:2024-05-04 23:40:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!