Добрый день!
С 5.5, шаблоны не АБС, а обычные процедурные.
При открытии окна с деревом я могу или сразу открыть все ветки, или все они будут закрытыми, есть роутины
REL::ExpandAll, REL::ContractAll
Но как сделать так, чтобы при открытии окна раскрылись только первый и второй уровень дерева, а слои ниже были свернуты?
Исходный код ковырял-ковырял, не получается!
Может, кто с этим сталкивался?
Как в дереве раскрыть только два первых уровня?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: Как в дереве раскрыть только два первых уровня?
Примерно так. Остальное доработать напильником.
Код: Выделить всё
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: Как в дереве раскрыть только два первых уровня?
Фантастика! Вообще без исправлений скопировал, и все заработало, как надо!
Спасибо и с Новым Годом!
Пусть в НовоМ Году будет больше внедрений и продаж, а все ошибки останутся в 2011 году!
Спасибо и с Новым Годом!
Пусть в НовоМ Году будет больше внедрений и продаж, а все ошибки останутся в 2011 году!
- Дед Пахом
- Старичок
- Сообщения: 3291
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Как в дереве раскрыть только два первых уровня?
В первом проходе по циклу нет get(Queue:RelTree,i#)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: Как в дереве раскрыть только два первых уровня?
Спасибо. Потерял. Лучше, конечно, вставить.В первом проходе по циклу нет get(Queue:RelTree,i#)
На то и напильник нужен!
Всех с Новым годом!
Желаю всем скорейшего выхода самой стабильной версии Клариона, лишённой каких бы то ни было ошибок!
А заодно счастья и успехов в 2012 году!