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

Вниз

Количество Childs у выбранного TreeView.Node   Найти похожие ветки 

 
Ольга   (2005-07-08 15:56) [0]

Как определить количество Childs у выбранного TreeView.Node?
Только перебором или есть что-нибудь стандартное?


 
Юрий Зотов ©   (2005-07-08 15:58) [1]

Смотрим справку, видим Count.


 
Ольга   (2005-07-08 16:08) [2]

Count мне дает только количество "детей", а хотелось бы прибавить к ним "внуков", "правнуков"... Дерево у меня больно ветвистое и так не хочется по нему ползать, но видимо придется.


 
Ega23 ©   (2005-07-08 16:11) [3]

Рекурсивным обходом, по другому - кю.


 
Digitman ©   (2005-07-08 16:14) [4]


> Ольга   (08.07.05 16:08) [2]


> видимо придется


а иначе - никак : "родитель" не знает и не обязан знать про своих внуков/правнуков, число коих в любой момент может измениться, в "прямые обязанности родителя" входит лишь контроль за "прямыми потомками"

рекурсивный алгоритм для подсчета прямых и непрямых потомков узла в дан.ситуации вполне оправдан и сложности в реализации не представляет


 
Просто Джо ©   (2005-07-08 16:16) [5]


function GetSubNodeCount (ARootNode: TTreeNode): Integer;
 procedure CountNodes (ARootNode: TTreeNode; var Count: Integer);
 var
   I: Integer;
 begin
   Inc (Count);
   for I := 0 to ARootNode.Count-1 do
     CountNodes(ARootNode[I],Count);
 end;
begin
 Result := -1; // сам RootNode не считаем
 CountNodes(ARootNode,Result);
end;

И всех делоф :-)


 
Юрий Зотов ©   (2005-07-08 16:16) [6]

> Ольга   (08.07.05 16:08) [2]
> а хотелось бы прибавить к ним "внуков",

Тогда, наверное, об этом стоило сказать в вопросе?


 
Ольга   (2005-07-08 16:23) [7]

Юрий Зотов ©
Да, вопрос был неверно сформулирован. Sorry, пятница...

Просто Джо ©
Конечно, я бы и сама сделала, но до чего ж сладка халява.
Спасибо.


 
-=jet=-   (2005-07-08 21:45) [8]

type
 TTreeNodeAdv = class(TTreeNode)
 private
   function GetNestedCount: integer;
 published
   property NestedCount: integer read GetNestedCount;
 end;

{...}

function TTreeNodeAdv.GetNestedCount: Integer;
var
 Node: TTreeNodeAdv;
begin
 Result := 0;
 Node := GetFirstChild;
 while Node <> nil do
 begin
   Result := Result + Node.NestedCount + 1;
   Node := Node.GetNextChild(Node)
 end
end;


P.S. И не иначе.


 
Просто Джо ©   (2005-07-09 02:49) [9]

[8] -=jet=-   (08.07.05 21:45)
> P.S. И не иначе.

Дадад.


 
Юрий Зотов ©   (2005-07-09 03:23) [10]

> -=jet=-   (08.07.05 21:45) [8]

type
 TTwoPlusTwoCalculator = class
 private
   function GetTwoPlusTwo: integer;
 public
   property TwoPlusTwo: integer read GetTwoPlusTwo;
 end;

function TTwoPlusTwoCalculator.GetTwoPlusTwo: integer;
begin
 Result := 4
end;

P.S. И не иначе.
P.P.S. И ничуть не хуже.
P.P.P.S. А еще можно написать аж целую библиотеку классов для таблицы умножения.


 
VMcL ©   (2005-07-09 09:04) [11]

>>-=jet=-   (08.07.05 21:45) [8]

Ацтой. COM-интерфейсов нету.



Страницы: 1 вся ветка

Текущий архив: 2005.07.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
1-1120544751
zorik
2005-07-05 10:25
2005.07.25
Файл помощи *.chm


1-1120587319
АлексейС
2005-07-05 22:15
2005.07.25
Как оперировать данными интернет сайта ?


4-1117203919
alex_***
2005-05-27 18:25
2005.07.25
Как узнать хендл своего процесса


14-1120041635
infom
2005-06-29 14:40
2005.07.25
Помогите решить задачу !


1-1120639997
Uran
2005-07-06 12:53
2005.07.25
Control в TStringGrid