Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как получить список выведенных слоев (число прочтений - 2640 )
Sleeper
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 2
Зарегистрирован: 05. Декабря 2006
Как получить список выведенных слоев
05. Декабря 2006 :: 11:53
Печать  
Доброе всем время суток!

Как известно есть стандартная конструкция Форма.ИспользоватьСлой(<ИмяСлоя>,<Режим>), а мне нужно, имея в своем "распоряжении" контекст формы, получить список отображенных на данный момент слоев. Может кто знает как это сделать? ООООЧЕНЬ нужно!
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как получить список выведенных слоев
Ответ #1 - 05. Декабря 2006 :: 12:18
Печать  
Примерно так можно.
Код
Выбрать все
Процедура ПроверитьСлои()
ФормаРасш=СоздатьОбъект("РасширениеФормы");
СписокСлоев=СоздатьОбъект("СписокЗначений");

Для Сч=0 По ФормаРасш.КоличествоАтрибутов()-1 Цикл
	Атр=ФормаРасш.ПолучитьАтрибут(Сч);
	Слой=Атр.Слой;
	Если (Атр.Видимость=0) И (СписокСлоев.НайтиЗначение(Слой)=0) Тогда
		СписокСлоев.ДобавитьЗначение(Слой);
	КонецЕсли;
КонецЦикла;
КонецПроцедуры 


Но если на слое все элементы невидимы, то не сработает.
  
Наверх
ICQ  
IP записан
 
Sleeper
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 2
Зарегистрирован: 05. Декабря 2006
Re: Как получить список выведенных слоев
Ответ #2 - 05. Декабря 2006 :: 13:00
Печать  
Ну так етот кусочек кода мне вернет все слои которые есть на форме, ну естественно на которых есть видимые атрибуты. А мне нужно только те которые выведены в данный момент времени...

Ну например где-то в тексте есть
Код
Выбрать все
Если Атрибут1>0 Тогда
 Форма.ИспользоватьСлой("Основной, Слой1",2);
Иначе
 Форма.ИспользоватьСлой("Основной, Слой2",2);
КонецЕсли; 



А где то ниже по тексту мне нужно определить сейчас на форме задействованы слои "Основной, Слой1" или "Основной, Слой2"...
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как получить список выведенных слоев
Ответ #3 - 05. Декабря 2006 :: 13:25
Печать  
Цитата:
Ну так етот кусочек кода мне вернет все слои которые есть на форме, ну естественно на которых есть видимые атрибуты. А мне нужно только те которые выведены в данный момент времени...

Извиняюсь, ошибся.
Атр.Видимость=1 конечно.
Если (Атр.Видимость=1) И (СписокСлоев.НайтиЗначение(Слой)=0) Тогда

Нет, вернет не все слои, а именно те, которые выведены (если на них есть хоть один видимый реквизит).
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Как получить список выведенных слоев
Ответ #4 - 07. Декабря 2006 :: 18:54
Печать  
Исходить можно из следующего:

Если выполнить Форма.ИспользоватьСлой("Основной, Слой1",2);, то станут видимыми все атрибуты, расположенные на этих слоях. Даже если они помечены как невидимые. То есть переключение слоев всего навсего включает/отключает видимость реквизитов, расположенных на этих слоях. То есть это просто способ включать/отключать видимость реквизитов не по одному, а кучками.

Следовательно, скорее всего, не ведется никакого списка включенных/отключенных слоев. Так что предложенный тебе способ, пожалуй, будет правильным. Естественно, с поправкой не ветер.  Улыбка

С друго стороны, я думаю, в АЛьФу будет не так сложно добавить ведение такого списка в ФормЕкс. Если, конечно, у него возникнет время и желание.  Улыбка

Но сдается мне, что ты с того конца рыбу ешь. Задача с душком издалека чувствуется.  Подмигивание Скажи, зачем тебе надо получить эти слои?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать