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

將所有元件中, 有 Caption 這屬性的元件找出來,並設定其值

答題得分者是:ha0009
Kevin@Taiwan
一般會員


發表:4
回覆:2
積分:1
註冊:2004-09-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-16 13:42:19 IP:210.202.xxx.xxx 未訂閱
各位高手, 請幫幫忙... 我想要在一個 Form 中, 將所有元件中, 有 Caption 這屬性的元件找出來, 並且給予設定一特定值...不知道怎麼做呢? 以下是小弟寫的...不知道有無其他方法可以做到 with (self as TForm) do begin for i := ComponentCount - 1 downto 0 do begin if GetPropInfo(Components[i].ClassInfo, 'Caption') <> nil then { 設定該 Caption 屬性為 '123' } end; end;
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-16 14:06:57 IP:219.80.xxx.xxx 未訂閱
你好:
  caption 是 TControl 的屬性,因此你可以利用這個特性來完成。
以下範例你參考看看。    type
  TAccessControl = class (TControl)
  end;    procedure SetAllCaption (Form : TForm; Const Caption : String);
var
  idx : integer;
  PropInfo: PPropInfo;
begin
  for idx := 0 to Form.ControlCount - 1 do begin
    TAccessControl(Form.Controls [idx]).Caption := Caption;  // 註一
    PropInfo := GetPropInfo(Form.Controls [idx], 'Caption'); // 註二
    if PropInfo <> nil then begin
      SetPropValue (Form.Controls [idx], 'Caption', Caption);
    end;
  end;
end;    註一
  重點在宣告一個繼承自 TControl 以便藉由 TAccessControl 直接存取隱藏
在 protected 區段的宣告。但要注意的是所有繼承自 TControl 都有 Caption 
這個屬性,但繼承的元件必一定會用這個屬性(沒把他宣告在 Published),例如 
TMemo。    註二
  跟你的範例差不多,但至少可以少跑幾次迴圈( >= >    < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
        
Kevin@Taiwan
一般會員


發表:4
回覆:2
積分:1
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-16 18:00:26 IP:210.202.xxx.xxx 未訂閱
非常感謝 ha0009 的解答... 若如果我想找所有包含有 >
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-16 18:46:11 IP:219.80.xxx.xxx 未訂閱
你好:
  可以詳述你要做的想法嗎?有很多物件都有 Items 的屬性,
但類別可就不同了。你想要全包嗎< >    還有這個問題與題目不符,請成立一個新主題在喔< >    
系統時間:2024-05-17 10:19:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!