全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:963
推到 Plurk!
推到 Facebook!

如何一次設定多個物件屬性

答題得分者是:pedro
chuanchuan
一般會員


發表:11
回覆:15
積分:5
註冊:2004-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-20 15:24:16 IP:163.29.xxx.xxx 未訂閱
各位大大高手你們好: 請問有沒有指令能一次設定多個物件的同一屬性呢? 像類似 form1.setall('tedit','enabled'); 以上是小弟亂寫的.... 因為常有好多同類物件屬性要變換,寫一大串真麻煩 書上及用關鍵字也找不到有這指令,有人知道嗎? 謝~謝~~
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-20 16:25:09 IP:210.61.xxx.xxx 未訂閱
在設計時期在表單上按住Shift鍵不放可選擇多個元件, 在Object Inspector可針對這些選擇的元件做設定 在執行時期透過Components[i]判斷元件種類,再轉型存取屬性即可
  for I := ComponentCount - 1 downto 0 do
  begin
    Temp := Components[I];
    if Temp is TButton then (Temp as TButton).Caption:='hello';
  end;
chuanchuan
一般會員


發表:11
回覆:15
積分:5
註冊:2004-05-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-20 16:44:51 IP:163.29.xxx.xxx 未訂閱
感謝pedro回答 但是 var 應該要設什麼~? 我笨笨的
Fishman
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-20 16:56:45 IP:210.65.xxx.xxx 未訂閱
Hi chuanchuan,    Pedro 大大的程式碼完整寫法如下
procedure TForm1.Button4Click(Sender: TObject);
var
    I : Integer;
    Temp : TObject;
begin
  for I := ComponentCount - 1 downto 0 do
    begin
      Temp := Components[I];
      if Temp is TButton then (Temp as TButton).Caption:='hello';
    end;
end;
另外再提供另一種寫法 Uses typInfo
procedure TForm1.Button56Click(Sender: TObject);
    Procedure SetAll(ClassName,Properties : String; Value : Variant);
        Var
            I : Integer;
            PropInfo: PPropInfo;
        BEGIN
            FOR I := 0 TO Self.ComponentCount - 1 DO
                BEGIN
                    IF LowerCase(Self.Components[I].ClassName) = Lowercase(Classname) THEN
                        BEGIN
                            PropInfo := GetPropInfo(Self.Components[I],Properties);
                            IF PropInfo <> NIL THEN
                                BEGIN
                                    TRY
                                        SetPropValue(Self.Components[I],Properties,Value);
                                    EXCEPT
                                    END;
                                END;
                        END;
                END;
        END;
begin
    SetAll('TEdit','enabled',False);
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
chuanchuan
一般會員


發表:11
回覆:15
積分:5
註冊:2004-05-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-20 17:34:10 IP:163.29.xxx.xxx 未訂閱
感謝 Pedro 跟fishman 二位大大 可以了~~
系統時間:2024-05-17 16:19:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!