Форум: "Прочее";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
ВнизЕсть ли такая приблуда? Найти похожие ветки
← →
Ega23 © (2008-06-06 11:15) [0]Смысл в следующем: есть юнит, в нём система классов (около 50 штук). Хочется построить дерево классов, в обычном строковом виде, типа
TObject
| |
| TCustomClass
| | |
| | TCustomList
| | |
| | TPropertyList
| | |
| | TMethodList
| |
....
Нужно для документирования. поскольку классы развиваются, хотелось бы это не вручную делать, а так, чтобы само строилось.
Есть ли что-нибудь подобное? Или может кто сам писал и не жалко поделиться?
← →
Игорь Шевченко © (2008-06-06 11:17) [1]В GExperts или в ESSModel нету ?
← →
Ega23 © (2008-06-06 11:18) [2]
> В GExperts или в ESSModel нету ?
Не знаю. Не хотелось бы на рабочий комп эксперты ставить. Дома ещё могу попробовать...
Да, забыл - delphi 7.
← →
Игорь Шевченко © (2008-06-06 11:47) [3]
> хотелось бы это не вручную делать, а так, чтобы само строилось.
> Не хотелось бы на рабочий комп эксперты ставить
не ставь. среди страндартных средств Delphi 7 есть хорошее средство руки.exe
← →
Ega23 © (2008-06-06 11:49) [4]
> не ставь. среди страндартных средств Delphi 7 есть хорошее
> средство руки.exe
Ну это понятно. Но не хотелось бы тратить время на разовую работу...
Кстати. Посмотрел у коллеги GExpert. Действительно Строит дерево. Вот только не экспортирует ... :(
← →
oxffff © (2008-06-06 11:50) [5]
> TObject
> | |
> | TCustomClass
> | | |
> | | TCustomList
> | | |
> | | TPropertyList
> | | |
> | | TMethodList
> | |
> ....
Это что интроспекция? Судя по названиям.
← →
Ega23 © (2008-06-06 11:52) [6]
> Это что интроспекция? Судя по названиям.
Не, названия из башки на ходу придумал.
← →
oxffff © (2008-06-06 11:53) [7]
> Ega23 © (06.06.08 11:52) [6]
Я бы тебе помог, но пока до EBNF не добрался еще. :)
← →
icWasya © (2008-06-06 12:33) [8]Дарю
unit UnitTree;
interface
uses
ComCtrls;
procedure SetTree(ATree: TTreeView);
procedure AddClass(AClass:TClass);
implementation
var
Tree: TTreeView;
procedure SetTree(ATree: TTreeView);
begin
Tree:=ATree;
end;
function FindNode(AClass:TClass):TTreeNode;
var
I:Integer;
begin
for I:=0 to Tree.Items.Count-1 do begin
Result:=Tree.Items[I];
if AClass = Result.Data then Exit;
end;
Result:=nil;
end;
function FindOrCreateNode(AClass:TClass):TTreeNode;
var
N:TTreeNode;
begin
Result:=FindNode(AClass);
if Result = Nil then begin
if AClass = TObject then begin
Result:=Tree.Items.AddObject(Nil,"TObject",TObject);
end else begin
N:=FindOrCreateNode(AClass.ClassParent);
Result:=Tree.Items.AddChildObject(N,AClass.ClassName,AClass);
end;
end;
end;
procedure AddClass(AClass:TClass);
begin
FindOrCreateNode(AClass);
end;
end.
иprocedure TForm1.Button1Click(Sender: TObject);
begin
SetTree(TreeView1);
AddClass(TForm1);
AddClass(TButton);
AddClass(TPicture);
AddClass(TPropertyList);
AddClass(TMethodList);
.. и все нужные классы
TreeView1.FullExpand;
end;
← →
TUser © (2008-06-06 12:46) [9]Поставь на виртуальную машину.
← →
Ega23 © (2008-06-06 12:46) [10]
> icWasya © (06.06.08 12:33) [8]
Спасибо, но это не совсем то, что надо...
Хотя, в принципе, понятно, как докрутить...
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c