Страница 1 из 1
Как в дереве раскрыть только два первых уровня?
Добавлено: 28 Декабрь 2011, 1:10
Korall
Добрый день!
С 5.5, шаблоны не АБС, а обычные процедурные.
При открытии окна с деревом я могу или сразу открыть все ветки, или все они будут закрытыми, есть роутины
REL::ExpandAll, REL::ContractAll
Но как сделать так, чтобы при открытии окна раскрылись только первый и второй уровень дерева, а слои ниже были свернуты?
Исходный код ковырял-ковырял, не получается!
Может, кто с этим сталкивался?
Re: Как в дереве раскрыть только два первых уровня?
Добавлено: 28 Декабрь 2011, 15:44
Shur
Примерно так. Остальное доработать напильником.
Код: Выделить всё
CASE EVENT()
OF EVENT:OpenWindow
do REL2::ExpandAll
loop i#=records(Queue:RelTree) to 1 by -1
if ABS(REL2::Level) > 1 ! << Желаемый уровень
REL2::Level = 0 - ABS(REL2::Level)
put(Queue:RelTree)
end
end
level# = 0
loop i# = records(Queue:RelTree) to 1 by -1
get(Queue:RelTree,i#)
if ABS(REL2::Level)>1
if level# > ABS(REL2::Level)
REL2::Level = 0 - ABS(REL2::Level)
put(Queue:RelTree)
end
end
level# = ABS(REL2::Level)
end
DISPLAY
Re: Как в дереве раскрыть только два первых уровня?
Добавлено: 28 Декабрь 2011, 21:33
Korall
Фантастика! Вообще без исправлений скопировал, и все заработало, как надо!
Спасибо и с Новым Годом!
Пусть в НовоМ Году будет больше внедрений и продаж, а все ошибки останутся в 2011 году!
Re: Как в дереве раскрыть только два первых уровня?
Добавлено: 28 Декабрь 2011, 21:48
Дед Пахом
Shur писал(а):Примерно так. Остальное доработать напильником.
Код: Выделить всё
CASE EVENT()
OF EVENT:OpenWindow
do REL2::ExpandAll
loop i#=records(Queue:RelTree) to 1 by -1
if ABS(REL2::Level) > 1 ! << Желаемый уровень
REL2::Level = 0 - ABS(REL2::Level)
put(Queue:RelTree)
end
end
level# = 0
loop i# = records(Queue:RelTree) to 1 by -1
get(Queue:RelTree,i#)
if ABS(REL2::Level)>1
if level# > ABS(REL2::Level)
REL2::Level = 0 - ABS(REL2::Level)
put(Queue:RelTree)
end
end
level# = ABS(REL2::Level)
end
DISPLAY
В первом проходе по циклу нет get(Queue:RelTree,i#)
Re: Как в дереве раскрыть только два первых уровня?
Добавлено: 29 Декабрь 2011, 22:20
Shur
В первом проходе по циклу нет get(Queue:RelTree,i#)
Спасибо. Потерял. Лучше, конечно, вставить.
На то и напильник нужен!
Всех с Новым годом!
Желаю всем скорейшего выхода самой стабильной версии Клариона, лишённой каких бы то ни было ошибок!
А заодно счастья и успехов в 2012 году!