2009-09-10 77 views
1

當嘗試一個沒有文檔的新組件時,我需要通過它的方法,屬性和事件來試圖找出它可以做什麼。通過IDE的Object Inspector執行此操作有點繁瑣。獲取對象的方法,屬性和事件列表?

是否有一個實用程序以更易讀的格式顯示此列表?

謝謝。

回答

-1

RTTI ...

+0

我認爲他正在設計時尋找信息。 – 2009-09-10 17:01:54

+0

@Mason Wheeler ......嗯......你的意思是簡單地猜測一個組件在做什麼? – smok1 2009-09-10 17:08:29

+0

看起來他正在尋找像Object Inspector這樣的東西,但是「更具可讀性」 – 2009-09-10 17:43:39

0

看一下將用於C++ Builder的支持所產生的.HPP。它類似於德爾福單元的接口部分。

+0

(當然,如果你有源代碼,這是沒有意義的,從你的問題出發,我認爲你不需要) – 2009-09-11 08:25:36

3

當我想知道什麼是可以做的,我閱讀源代碼。類聲明將包含所有方法和屬性的簡潔列表,除非有很多繼承。定義會告訴你想要的方法。

另一件事是聲明一個你感興趣的類型的變量,輸入它的名字和句點,然後按Ctrl +空格來讓Class Completion顯示你能做的所有事情。

+0

+1。我一直傾向於UTSL方法。 – 2009-09-10 19:04:22

1

您可以使用GExperts附帶的類瀏覽器。
我還建議使用IDE或ModelMaker構建模型圖。它有助於看到視覺關係。

+0

感謝您的提示,但是當打開類瀏覽器時,除了雙擊右窗格中的對象並將其發送到實例創建的行外,沒有什麼可以做的了。 我認爲類瀏覽器會顯示一個對象提供的方法,屬性和事件列表。 – Gulbahar 2009-10-22 07:56:58

1

在奧比萬克諾比不朽的語言 - 「使用來源」。

閱讀和理解組件(或任何東西)的源代碼以理解它的功能和功能是沒有替代的。

源代碼是Lingua Franca的編程。

0

我剛使用代碼完成。如果你無法弄清楚組件在屬性和方法的名稱上做了什麼,那麼它可能設計得很差,而且最好不要使用它。另外,既然你問了這個問題,我猜你沒有來源。如果你不這樣做,我再也不會使用這個組件。你只爲自己儲存麻煩。

2

正如其他人所說,使用來源。另外一個UML工具也會有所幫助。 但是,如果你不想使用它,你可以使用這個程序(你需要德爾福2010年這一點,並且一定要RTTI添加到您的「用途」條款):

procedure DumpProps(aObject: TObject; aList: TStringList); 
var 
    RttiContext: TRttiContext; 
    RttiType: TRttiType; 
    I: Integer; 
    n: integer; 
    props: TArray<TRttiProperty>; 

begin 
    aList.Clear; //it must be <> nil 
    RttiType := RttiContext.GetType(aObject.ClassType); 
    props:=RttiType.GetProperties; 
    with aList do 
    begin 
     Append(''); 
     Append('=========='); 
     Append('Begin Dump'); 
     Append('----------'); 
     for I := Low(props) to High(props) do 
     begin 
     try 
      Append(props[i].Name+': '); //odd construction to see if the Getter blows 
      n:=Count-1; 
      Strings[n]:=Strings[n]+props[i].GetValue(aObject).AsString; 
     except 
      on E: Exception do 
      Strings[n]:=Strings[n]+' >>> ERROR! <<< '+E.Message; 
     end; 
     end; 
    end; 
end; 

以上即可在運行時使用,或者如果您構建菜單向導,則可以在設計時收集信息。

HTH