ooolinux
這個家伙問題特別多。。。

他的有個問題,導致了這個軟體的產生。。
鏈接:https://pan.baidu.com/s/1dZJqoBq7qwzUD4olOTJjUg
提取碼:9k6b
目前只支持原生的VCL型別,贊不支持第三方控制元件,原因很簡單,我懶。。。。。
使用方法:在文本框里輸入一個類名,比如TEdit,點擊“show”,右邊就會從上至下,顯示該類的派生樹。。

uj5u.com熱心網友回復:
不錯不錯,其實Help里頭也能看,沒你這個方便,你這個用的RTTI?
uj5u.com熱心網友回復:
是啊,RTTI,不過有個問題,其實是可以查看任意組件的,包括原生的和第三方的,但是有個問題,必須在Form中添加對應的頭檔案和對應的Link。。。我不知道怎么動態添加比如,第三方控制元件,FastReport,你必須添加任意一個 Fastreport 的控制元件到表單上,然后表單的頭檔案就會自動添加:
#include "frxClass.hpp"
表單的CPP檔案就會自動添加一句:
#pragma link "frxClass"
然后就可以查看了:

但是,程式運行的時候,怎么添加啊。。
交給你們了,我懶。。。
uj5u.com熱心網友回復:
Delphi類都有ClassParent、ClassName方法,所以列繼承樹是很簡單的,運行時使用一個未知的類,要先RegisterClass/RegisterClassesuj5u.com熱心網友回復:
試試老概的方法。
另外,你這個界面太寬了。
uj5u.com熱心網友回復:
不好弄,就算是未知的類,如果你在編譯的時候,沒有參考該類所要用到的頭檔案,運行的時候,也不能正確的識別這個類吧。。
uj5u.com熱心網友回復:
我又試了一下,不需要在CPP中添加#pragma link "frxClass",只需要在頭檔案中,參考那些控制元件的頭檔案就行了。那么就有一個很笨,但是很懶的辦法:
把所有控制元件相關的.h都寫到頭檔案中去,包括第三方的
這樣就可以查看所有控制元件的繼承樹了
uj5u.com熱心網友回復:
其實這涉及到一個問題,我們在編程的時候,要使用某個控制元件,就必須完成以下步驟,參考該控制元件的頭檔案,#pragma link "XXXX"。當我們在表單上放入某個控制元件的時候,這些作業是IDE自動完成的。現在要實作繼承樹對任意控制元件的查看,就存在一個問題,本身繼承樹的代碼,就只參考了VCL最基本的控制元件。如果要查看VCL的擴展控制元件,或者第三方控制元件,那么在撰寫繼承樹的時候,就要把這些控制元件的頭檔案參考進去。要不然怎么編譯呢?
還是以FastReport控制元件為例,我在寫代碼的時候,沒有參考這個控制元件的任何頭檔案,現在程式運行起來了,能在運行時載入這個控制元件嗎??好像不行吧。。。
uj5u.com熱心網友回復:
我說的運行時使用未知的類是像Delphi、CB的IDE那樣,是基于包的,未知的類必須先編譯到BPL,在初始化的時候呼叫RegisterClass/RegisterClasses注冊了自己,然后使用包的程式就可以FindClass從字串名獲得類參考。但是前提是對方必須先把自己編譯為二進制,在編譯的時候還是需要知道相應的單元,所以如果要做到一個程式,輸入任意類名,可以顯示對應資訊,那肯定是不行的。uj5u.com熱心網友回復:
和我想的一樣,這就是個悖論,要看繼承樹,還是直接去幫助檔案。。
還好這個東西只有十幾行代碼。。。不對,還好我懶。。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29254.html
標籤:茶館
上一篇:hello world!
