Обработчик ТАБЛИЦА.редактирование
Обработчик редактирование вызывается таблицей, когда пользователь выбирает ячейку или строку с помощью двойного клика правой кнопкой мыши или нажатия клавиши 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: // сохранение текста
строки[строка].текст = СТРОКА ( знач )
КОНЕЦ_ВЫБОРА
КОНЕЦ_ФУНКЦИИ
] // ТИП МояФорма