Изменение состояния элемента управления
Элемент управления на форме имеет свои состояния: элемент видим на форме, реагирует на все события формы, доступен для выбора пользователем и отображается при печати. Эти состояния описываются при помощи полей объектного типа ЭЛЕМЕНТ.
При изменении значений полей элементов управления эти изменения вступают в силу не сразу. Чтобы измененные значения полей элемента управления отобразились на физическом объекте формы (т.е. на отображаемом на экране элементе управления), нужно синхронизировать все состояния физического объекта формы с значениями полей объекта.
Эта синхронизация может происходить в двух направлениях: поля объекта → параметры отображаемого на экране элемента управления и параметры отображаемого на экране элемента управления → поля объектов.
Для синхронизации изменений в направлении поля объекта → параметры отображаемого на экране элемента управления используется метод ОБНОВИТЬ, который считывает значения полей у элемента и делает перерисовку физического объекта на форме. Для направления параметры отображаемого на экране элемента управления → поля объектов нет никакого специального метода для обмена между значениями полей и параметрами отображаемого на экране элемента управления, все происходит в автоматическом режиме.
Для элементов управления ДЕРЕВО и ТАБЛИЦА изменение их состояний полностью или частично возможно только при вызове методов, например, ДЕРЕВО.ДОБАВИТЬ_УЗЕЛ, ТАБЛИЦА.УСТ_КУРСОР и т.д.
Пример
Пример иллюстрирует синхронизацию изменений в направлении поля объекта → параметры отображаемого на экране элемента управления. При заполнении графы ввода активируется кнопка диалога "ОК", если графа ввода пуста, то кнопка "ОК" является неотступной. функцию, которая заполняет табличную форму по идентификаторам ячеек и устанавливает формат отображения даты в ячейке.
ТИП Диалог1(ДИАЛОГ) [ ПОДМЕНА ширина = 350; ПОДМЕНА высота = 300; ТЕКСТ: Текст1 = [ левый = 15, верхний = 15, высота = 25, ширина = 35, табиндекс = 3, текст = "Код:" ]; РЕДАКТОР: ред_код = [ левый = 90, верхний = 15, ширина = 120, высота = 25, табиндекс = 1, изменение = {код_изменение} ]; КНОПКА: КнопкаОК = [ левый = 89, верхний = 270, ширина = 80, высота = 25, табиндекс = 1001, доступный = НЕТ, текст = "ОК", нажатие = {НажатаОК} ]; КНОПКА: КнопкаОтмена = [ левый = 182, верхний = 270, ширина = 80, высота = 25, табиндекс = 1002, текст = "Отмена", нажатие = {НажатаОтмена} ]; ФУНКЦИЯ код_изменение(ПЕРЕМ РЕДАКТОР: ред) ЕСЛИ ред.текст <> "" ТО КнопкаОК.доступный = ДА ОБНОВИТЬ ИНАЧЕ КнопкаОК.доступный = НЕТ КОНЕЦ_ЕСЛИ КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ НажатаОК(ПЕРЕМ КНОПКА: кнопка) ЗАКРЫТЬ("ОК") КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ НажатаОтмена(ПЕРЕМ КНОПКА: кнопка) ЗАКРЫТЬ("") КОНЕЦ_ФУНКЦИИ ] ВЫЧИСЛИТЬ ПЕРЕМ Диалог1: д // д <- данные ЕСЛИ д.ПОКАЗАТЬ_МОДАЛЬНЫЙ <> "" ТО // д -> данные КОНЕЦ_ЕСЛИ КОНЕЦ
См. также:
- Обработка элементов управления на форме
- Сохранение размеров и расположения диалога
- Создание диалоговых окон
- Изменение размеров диалога
- Изменение видимости и доступности элементов управления
- Добавление элементов управления
- Порядок обхода табуляции и фокус ввода
- Группа элементов
- Поля ввода
- Использование таблиц в диалогах
- Диалог с закладками
- Найти в содержании