Дърво на компоненти

Някой знае ли дали има експерт за D5, който показва дърво на използваните компоненти, както прави D7?

Ако не, тогава връзка към източниците/примери на експерти за Delphi. Осмелявам се да го напиша сам :-)

Юрий Зотов ( 06.01.2004 17:43 ) [1]

Всички Delphi имат вграден браузър (меню View, проектът трябва да бъде компилиран). Позволява ви да видите дървото на обектите както в конкретен проект, така и в целия VCL.

MikeZ ( 2004-01-06 17:56 ) [2]

Изобщо не е така! Не е нужно да гледам класовете с техните предци, а компонентите, които лежат на формата. Тоест, трябва да навигирате през компонентите, когато има твърде много от тях.

MikeZ ( 2004-01-06 18:12 ) [3]

Добре, тогава връзка с KFOR от експерти, ако има такава.

Тимохов ( 06.01.2004 18:15 ) [4]

В! А защо не обичаш да гледаш dfm - там се вижда цялата йерархия.

afwood ( 2004-01-06 18:36 ) [5]

Е, това написах наскоро. Само в C++Builder. Ако е необходимо, мога да хвърля източника на процедурата.

afwood ( 2004-01-06 18:37 ) [6]

"Ако е необходимо" - това съм аз в смисъл, ако не се уморите да разбирате моя Sish код :)

Вук ( 06.01.2004 19:02 ) [7]

до MikeZ: >Добре, тогава връзка към експертния CDC, ако има такъв.

afwood ( 2004-01-06 19:07 ) [8]

Ето как изглежда една съкратена версия на моята процедура. Тук дървото ще показва САМО контролното дърво. И да кажем, че всички елементи от менюто просто ще лежат в основата на това дърво. Но това може да се реши по точно същия начин, както при контролите.

void RecurBuildTreeForControl(TTreeNodes *Nods, TTreeNode*Кимване, TWinControl * WinCon) < за(int i=0;i ControlCount;i++) < TWinControl *Tem; if(Tem = dynamic_cast (WinCon->Controls[i])) < RecurBuildTreeForControl(Nods, Nods->AddChild(Nod,Tem->Name) ,Tem); > друго < Nods->AddChild(Nods->Item[0],WinCon->Controls[i]->Име); > >

void RecurBuildTree(TTreeNodes *Nods, TForm * For) < Кимване->Изчистване(); TTreeNode *Node=Nods->Add(NULL,For->Name); за(int i=0;i ComponentCount;i++) < TWinControl *Tem; if(Tem = dynamic_cast (For->Components[i])) < RecurBuildTreeForControl(Nods, Nods->AddChild(Node,Tem->Name) ,Tem); > друго < Кимвания->AddChild(Node,For->Components[i]->Name); > >

MikeZ ( 2004-01-06 22:50 ) [9]

2Тимохов: Иерархия, разбира се, видима, но листат с десеток хиляди строки - това не е слАбо. Т.е. - не подхожда из-за явното неудобства.

2афвуд: С превеликото удовольствие възьму този код. и отдам човеку, знающему Си ;-). Ил сам гледам. Думаю разберусь. Само вот вопрпос: ти експерт си написал? Или просто построение компоненти на дървото? Ако просто дърво (както е видно от кода), то аз и сам знам, как това се прави. Вест въпрос в това, как това да се замени във вид на експерта. Если у теб експерт именно, то намил, плз.

www.gexperts.org Ето един или два варианта? Но аз и така, и едак не понял. Моля, обьясни поподробнее.

MikeZ ( 2004-01-06 22:57 ) [10]

2Vuk: Понял, което това. спасибо. Бъду разбираться, но това е твърде много.

2Всички: Вопросы все равно остались.

афвуд ( 07.01.2004 16:21 ) [11]

Прости. Невнимателно прочел твоя въпрос.

Какво е експерт според твоето разбиране?

Имам програма - симулира чекмедже на прозорец на Delphi. Е, дървото е същото като в Delphi. Мислех, че и ти си по същия начин :)

MikeZ ( 2004-01-08 14:52 ) [12]

Експерт - не е според моите разбирания ;-), а в Делфи. Библиотека, която работи с и вътре в Delphi.

MikeZ ( 2004-01-08 16:43 ) [13]

Вече намерих как да направя този експерт. Но има въпроси. Например: Искам да получа името на активната форма. Правя това: Функция GetActiveForm: TForm; Начало Резултат := TForm((BorlandIDEServices As INTAEditWindow).GetForm); Край; Не е ясно защо възниква грешката. Това е въпросът - защо?