Руководство разработчика

Видимость и доступность группы элементов

Элементы управления, добавленные группой на форму, сохраняют свои значения видимости и доступности. Доступностью и видимостью всей группы на форме можно управлять. Управление доступностью и видимостью осуществляется при помощи методов ДОСТУП_ГРУППЫ и ПОКАЗАТЬ_ГРУППУ.

Стоит отметить, что эти методы не управляют видимостью и доступность членов группы. Доступность и видимость члена группы обеспечивается одновременным сочетанием доступности/видимости отдельного члена группы и всей группы в целом, причем доступ к признаку доступности/видимости группы из языка невозможен, поэтому применяются методы ДОСТУП_ГРУППЫ и ПОКАЗАТЬ_ГРУППУ, чтобы управлять состоянием всей группы.

При добавлении группы элементов на форму группа всегда видима и доступна.

Для управления видимостью и доступностью члена группы используется стандартный способ через поля видимый и доступный. После изменения значений в этих полях для отображения всех изменений параметров членов группы элементов на форме вызывается метод ОБНОВИТЬ_ГРУППУ, который аналогичен методу ОБНОВИТЬ.

Пример

Пример иллюстрирует управление доступностью группы элементов и ее членов. В диалог добавляется группа элементов, которая определена в другом типе. При добавлении группы устанавливаем запрет на доступ к группе. При заполнении графы ввода открывается доступ к группе элементов, но так как первоначально первая графа ввода в группе элементов была с запретом на доступ, то нужно напрямую изменить поле доступный у этого члена элемента группы.

Показатьподробное объявление типов для диалогового окна
ТИП Диалог_вставка(ДИАЛОГ)
[
  ПОДМЕНА ширина = 210;
  ПОДМЕНА высота = 175;
  КНОПКА: Кнопка1 = [ левый = 80,
                      верхний = 130,
                      ширина = 50,
                      высота = 25,
                      табиндекс = 3,
                      текст = "Кнопка1" ];
  РЕДАКТОР: Редактор2 = [ левый = 25,
                          верхний = 85,
                          ширина = 150,
                          высота = 20,
                          табиндекс = 2,
                          доступный = ДА ];
  РЕДАКТОР: Редактор1 = [ левый = 25,
                          верхний = 20,
                          ширина = 150,
                          высота = 55,
                          табиндекс = 1,
                          доступный = НЕТ ];
]

ПЕРЕМ Диалог_вставка: д_вст;

ТИП Диалог(ДИАЛОГ)
[
  ПОДМЕНА ширина = 350;
  ПОДМЕНА высота = 300;
  ПОДМЕНА открытие = {Вставка_группы};
  КНОПКА: КнопкаОК = [ левый = 89,
                       верхний = 270,
                       ширина = 80,
                       высота = 25,
                       табиндекс = 1001,
                       текст = "ОК",
                       нажатие = {НажатаОК} ];
  КНОПКА: КнопкаОтмена = [ левый = 182,
                           верхний = 270,
                           ширина = 80,
                           высота = 25,
                           табиндекс = 1002,
                           текст = "Отмена",
                           нажатие = {НажатаОтмена} ];
  РЕДАКТОР: Редактор1 = [ левый = 25,
                          верхний = 20,
                          ширина = 255,
                          высота = 20,
                          табиндекс = 1003,
                        изменение = {код_изменение} ];

  ФУНКЦИЯ код_изменение(ПЕРЕМ РЕДАКТОР: ред);
  
  ФУНКЦИЯ НажатаОК(ПЕРЕМ КНОПКА: кнопка)
     ЗАКРЫТЬ("ОК")
  КОНЕЦ_ФУНКЦИИ
  
  ФУНКЦИЯ НажатаОтмена(ПЕРЕМ КНОПКА: кнопка)
    ЗАКРЫТЬ("")
  КОНЕЦ_ФУНКЦИИ

  ФУНКЦИЯ Вставка_группы;
]

ФУНКЦИЯ Диалог.код_изменение(ПЕРЕМ РЕДАКТОР: ред)
  ЕСЛИ ред.текст <> "" ТО
    //разрешение доступа ко всей группе
    ДОСТУП_ГРУППЫ(д_вст, ДА)
	//разрешение доступа к члену группы
    д_вст.Редактор1.доступный = ДА
	//синхронизация изменений в поле члена группы с параметрами физ.объекта
    ОБНОВИТЬ_ГРУППУ(д_вст)
  КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ
  
ФУНКЦИЯ Диалог.Вставка_группы
  //добавляем группу на форму, доступ к группе разрешен
  ДОБАВИТЬ_ГРУППУ(10, 10, д_вст)
  //запрещаем доступ к группе
  ДОСТУП_ГРУППЫ(д_вст, НЕТ)
КОНЕЦ_ФУНКЦИИ

ВЫЧИСЛИТЬ
  ПЕРЕМ Диалог: д
  // д <- данные
  ЕСЛИ д.ПОКАЗАТЬ_МОДАЛЬНЫЙ <> "" ТО
    // д -> данные
  КОНЕЦ_ЕСЛИ
КОНЕЦ

См. также: