Обработчик ТАБЛИЦА.редактирование
Обработчик редактирование вызывается таблицей, когда пользователь выбирает ячейку или строку с помощью двойного клика правой кнопкой мыши или нажатия клавиши Enter. Учитываются только нефиксированные ячейки. При отсутствии обработчика редактирование применяется редактирование в соответствии с типом значения индексного поля элементы. Если значение для выбранной ячейки в индексном поле элементы отсутствует, то ничего не происходит. Если обработчик задан, поведение определяется возвращаемым значением.
ФУНКЦИЯ ЦЕЛОЕ: <имя функции>(ПЕРЕМ ТАБЛИЦА: элемент; ЦЕЛОЕ: столбец; ЦЕЛОЕ: строка; ПЕРЕМ *: знач; ПЕРЕМ СТРОКА: парам)
Параметры
- элемент
- Ссылка на элемент, для которого вызывается обработчик.
- столбец
- Номер столбца ячейки.
- строка
- Номер строки ячейки.
- знач
- Данные для редактирования.
- парам
- Строка дополнительных параметров редактирования.
Возвращаемое значение
Значение одной из констант РЕД_....
Параметры редактирования ячеек
Параметры редактирования ячеек служат для дополнительной настройки поля ввода, создаваемого в ячейке таблицы. Содержимое строки параметров зависит от типа создаваемого поля ввода, т.е. возвращенной константы РЕД_… . Для большинства полей ввода параметры задаются стандартной строкой параметров. В стандартной строке параметров пары <параметр> = <значение> разделяются ";". В значениях параметров не должно содержаться символа ";". Значение главного параметра может указываться в начале строки без имени параметра.
Перед строкой параметров поля ввода может указываться фиксированный или настраиваемый формат в строковом представлении. Формат указывается в начале строки через разделитель "||" от остальных параметров. Пример строки параметров с настраиваемым форматом для вещественных чисел (РЕД_ЧИСЛО): "F(@Цена)||спин=0.1;кнопки=SE*".
Для применения к полю ввода формата, указанного в поле таблицы формат или форматы, нужно указать в начале строки "||" без предшествующего фиксированного или настраиваемого формата. Например: "||спин=0.1;кнопки=SE*".
Форматы используются только для чисел, логики, дат и времени. Тип указанного формата должен соответствовать типу элемента, т.е. при возврате РЕД_ДАТА нужно указывать формат D(...) и т.д.
В качестве параметров редактирования могут выступать следующие строки:
-
РЕД_ЧИСЛО – стандартная строка параметров:
параметр тип по умолчанию комментарий точность целое 2* Количество знаков после точки, главный параметр. фикс логика 1* Фиксированная точка. округл логика 0 Округление. мин число 0 Минимальное значение. макс число 0 Максимальное значение. кнопки строка "" Описание кнопок. спин число -1 Значение шага спина, например 0.2. -
РЕД_ЦЕЛОЕ – стандартная строка параметров:
параметр тип по умолчанию комментарий мин целое 0 Минимальное значение. макс целое 0 Максимальное значение. кнопки строка "" Описание кнопок. -
РЕД_СТРОКА – стандартная строка параметров:
параметр тип по умолчанию комментарий предел целое -1 Предельная длина вводимого текста, если <= 0, то без ограничений. Главный параметр. нов_строка логика 0 При нажатии клавиши Enter в многострочном редакторе вводится новая строка, а не завершается редактирование ячейки. перенос логика 0 В многострочном редакторе происходит перенос текста при достижении правой границы. полоса_г логика 0 Отображается горизонтальная полоса прокрутки. полоса_в логика 0 Отображается вертикальная полоса прокрутки. пароль логика 0 Вместо символов отображаются * (только в однострочном редакторе). файл логика 0 Включает режим ввода пути к файлу или папке (только в однострочном редакторе). При перетаскивании из "Проводника" в редактор подставляется полный путь к файлу или папке. Также при ручном вводе текста в выпадающем списке предлагаются существующие файлы и папки. только_чтение логика 0 Редактор не позволяет непосредственный ввод текста, но кнопки могут быть нажаты. кнопки строка "" Описание кнопок. -
РЕД_ЛОГИКА – стандартная строка параметров:
параметр тип по умолчанию комментарий да строка ""* Текст, обозначающий истинное значение, пустая строка соответствует стандартному тексту "ДА". нет строка ""* Текст, обозначающий ложное значение, пустая строка соответствует стандартному тексту "НЕТ". -
РЕД_ДАТА – стандартная строка параметров:
параметр тип по умолчанию комментарий мин дата 01.01.2001 Минимальное значение. макс дата 01.01.2001 Максимальное значение. кнопки строка “” Описание кнопок. -
РЕД_ВРЕМЯ – стандартная строка параметров:
параметр тип по умолчанию комментарий мин время 00:00:00:00 Минимальное значение макс время 00:00:00:00 Максимальное значение сек логика 1* Возможность ввода секунд. сотые логика 1* Возможность ввода сотых секунды. кнопки строка "" Описание кнопок. -
РЕД_ДАТА_ВРЕМЯ – стандартная строка параметров:
параметр тип по умолчанию комментарий мин дата 01.01.2001 Минимальное значение. макс дата 01.01.2001 Максимальное значение. сек логика 1* Возможность ввода секунд. сотые логика 1* Возможность ввода сотых секунды. часовой_пояс целое 0* Временная поправка часового пояса в форме количества секунд разницы между локальным поясным временем и UTC. Для западного полушария поправка отрицательная. Например, для Москвы (часовой пояс +03:00) нужно указать 10800 (3 * 3600). кнопки строка “” Описание кнопок. -
Для РЕД_КОД: корень и параметры поля редактирования кода объекта аналитики (аналогично полям корень и параметры элемента управления ВВОД_КОДА). Корень и параметры представляются в следующем формате: <корень>;<параметры>
- Для РЕД_СПИСОК и РЕД_ВЫБОР: задаются строки выпадающего списка через запятую: <строка1>, <строка2>, ... , <строкаN>. Для задания другого разделителя списка можно указать первым символом $, а за ним требуемый символ-разделитель. Например, для использования звездочки в качестве разделителя элементов списка надо указать следующую строку: "$*Альфа*Бета*Гамма", что эквивалентно "Альфа,Бета,Гамма". Для задания пустого элемента ("") используется специальное имя "_EMPTY_".
* – если формат указан в строке параметров (через "||"), то значение этого параметра игнорируется.
Пример:
Пусть в таблице надо отобразить записи, которые состоят из даты, соответствующей ей строки текста и логического значения. Для начала создадим тип строки таблицы. Затем объявим в типе формы индексное поле, элементами которого будут строки таблицы. Свяжем таблицу с этим индексным полем с помощью обработчика данные. Реализуем редактирование данных всех трех столбцов различными способами. Для даты используем вывод на экран в строковом виде с помощью функции ДАТАП. Для логических значений выведем строки "Вкл" или "Выкл" и будем использовать редактирование с помощью модального диалогового окна (функция ВОПРОС). Редактирование строки осуществим в том виде, как она выводится на экран.
// Тип для описания строк таблицы ТИП СтрокаТаблицы [ ДАТА: дата = 01.01.2001; ЛОГИКА: вкл = ДА; СТРОКА: текст = "-"; ] // ТИП СтрокаТаблицы ТИП МояФорма (БЛАНК) [ // индексное поле – внешний для таблицы источник данных СтрокаТаблицы: строки [ ЧИСЛО ]; // другие поля формы // … // элемент таблицы ТАБЛИЦА: Таблица1 = [ данные = ПолучениеДанных, редактирование = РедДанных, сохранение = СохрДанных // … ]; // метод формы – обработчик запроса данных ФУНКЦИЯ ПолучениеДанных(ПЕРЕМ ТАБЛИЦА: таблица; ЧИСЛО: столбец, строка; ПЕРЕМ *: знач) ВЫБОР (столбец) #1: // в первый столбец выводим дату знач = ДАТАП( строки[строка].дата ) #2: // во второй столбец выводим признак выключения ЕСЛИ строки[строка].вкл ТО знач = "Вкл" ИНАЧЕ знач = "Выкл" КОНЕЦ_ЕСЛИ #3: // в третий столбец выводим текст знач = строки[строка].текст КОНЕЦ_ВЫБОРА КОНЕЦ_ФУНКЦИИ // метод формы – запрос на начало редактирования ФУНКЦИЯ ЧИСЛО: РедДанных (ПЕРЕМ ТАБЛИЦА: таблица; ЧИСЛО: столбец, строка; ПЕРЕМ *: знач; ПЕРЕМ СТРОКА: парам ) ВЫБОР (столбец) #1: // первый столбец – редактирование даты знач = строки[строка].дата ВЫХОД ( РЕД_ДАТА ) #2: // второй столбец – запрет редактирования в таблице, // вызов диалога строки[строка].вкл = ВОПРОС("Включить?") ВЫХОД ( РЕД_ЗАПРЕТ ) #3: // редактирование строки знач = строки[строка].текст ВЫХОД ( РЕД_СТРОКА ) КОНЕЦ_ВЫБОРА // в остальных случаях – стандартное поведение РедДанных = РЕД_СТАНДАРТ КОНЕЦ_ФУНКЦИИ // метод формы – запрос на сохранение данных после редактирования ФУНКЦИЯ СохрДанных (ПЕРЕМ ТАБЛИЦА: таблица; ЧИСЛО: столбец, строка; *: знач) ВЫБОР (столбец) #1: // сохранение даты строки[строка].дата = ДАТА ( знач ) #3: // сохранение текста строки[строка].текст = СТРОКА ( знач ) КОНЕЦ_ВЫБОРА КОНЕЦ_ФУНКЦИИ ] // ТИП МояФорма