Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Есть ли такая приблуда?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-1195564414
kyn66
2007-11-20 16:13
2008.07.20
Вставить множество в SQL запрос


15-1212722831
Andre_s
2008-06-06 07:27
2008.07.20
Исходный код Paint-a


15-1212677917
Slider007
2008-06-05 18:58
2008.07.20
С днем рождения ! 5 июня 2008 четверг


15-1212582144
123-ий
2008-06-04 16:22
2008.07.20
Skype


3-1202313830
harisma
2008-02-06 19:03
2008.07.20
Параметры для xp_sqlmaint