Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];
ВнизКоличество 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c