Добрый день!
С 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 году!
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
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 году!
