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

Объектный тип ТАБЛИЦА

Родительские типы: ЭЛЕМЕНТ → ТАБЛИЦА.

Физический объектный тип c закрытой моделью.

Тип ТАБЛИЦА позволяет создавать таблицы с произвольным количеством столбцов и строк, внешним или внутренним хранением данных и возможностью редактирования ячеек. Тип содержит метод для установки курсора на заданную позицию, два метода для получения номера столбца и номера строки текущей позиции курсора, а также метод для проверки вызова контекстного меню над конкретной ячейкой.

Поля

Размеры и общий вид таблицы определяются следующими полями:

ТипПолеОписаниеЗначение по умолчанию
ЦЕЛОЕ кол_столбцовКоличество нефиксированных столбцов. 4
ЦЕЛОЕ кол_строкКоличество нефиксированных строк. 5
ЦЕЛОЕ кол_фикс_столбцовКоличество фиксированных (заголовочных) столбцов. 0
ЦЕЛОЕ кол_фикс_строкКоличество фиксированных строк. 1

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

ТипПолеОписаниеЗначение по умолчанию
ЧИСЛО размер_столбцаШирина столбца по умолчанию. 3
ЧИСЛО размер_строкиВысота строки по умолчанию. 1
ЧИСЛО: @[] столбцыСодержит ширины столбцов в зависимости от их порядкового номера.
ЧИСЛО: @[] строкиСодержит высоты строк в зависимости от их порядкового номера.
АТРИБУТ_ЯЧЕЙКИ атрибутАтрибуты обычной ячейки по умолчанию. АТРИБУТ_ЯЧЕЙКИ[поворот=0, фон=ЦВЕТ[синий=255, зеленый=255, красный=255], шрифт="", гор_выравн=1, многостр=НЕТ, перенос_слов=ДА, многоточие=ДА, карандаш_гор=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], карандаш_верт=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], рельеф=0, выд_фон=ЦВЕТ[синий=128, зеленый=0, красный=0], выд_карандаш_гор=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], выд_карандаш_верт=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], выд_рельеф=0, выд_текст=ЦВЕТ[синий=255, зеленый=255, красный=255], текст=ЦВЕТ[синий=0, зеленый=0, красный=0], вер_выравн=2]
АТРИБУТ_ЯЧЕЙКИ фикс_атрибутАтрибуты фиксированных (заголовочных) строк и столбцов по умолчанию. АТРИБУТ_ЯЧЕЙКИ[поворот=0, фон=ЦВЕТ[синий=192, зеленый=192, красный=192], шрифт="", гор_выравн=2, многостр=НЕТ, перенос_слов=ДА, многоточие =ДА, карандаш_гор=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], карандаш_верт=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], рельеф=2, выд_фон=ЦВЕТ[синий=192, зеленый=192, красный=192], выд_карандаш_гор=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], выд_карандаш_верт=КАРАНДАШ[цвет=ЦВЕТ[синий=0, зеленый=0, красный=0], стиль=1, толщина=1], выд_рельеф=-2, выд_текст=ЦВЕТ[синий=0, зеленый=0, красный=0], текст=ЦВЕТ[синий=0, зеленый=0, красный=0], вер_выравн=2]
СТРОКА: @[ЦЕЛОЕ(0), ЦЕЛОЕ(0)] связка_атрибутовСтавит в соответствие координаты ячеек и строковые имена специальных атрибутов. Нижний предел индексов по умолчанию принимается равным 0. Элементы с индексами (0, y) задают атрибуты целиком для строки, а (x, 0) – целиком для столбца. Приоритет выбора атрибутов: ячейка, строка, столбец, таблица.
АТРИБУТ_ЯЧЕЙКИ: @[СТРОКА] атрибутыСодержит специальные атрибуты в зависимости от их строковых имен.

Следующие поля определяют поведение таблицы при редактировании значений в ячейках:

ТипПолеОписаниеЗначение по умолчанию
ЛОГИКА ред_на_симвАвтоматический вход в режим редактирования при нажатии любой буквенно-цифровой клавиши. ДА – нажатие любого буквенно-цифрового символа в текущей ячейке инициирует переход в режим редактирования этой ячейки, причем введенный символ сразу подставляется в ячейку, заменяя предыдущее значение. Также в этом режиме поддерживается переход к редактированию ячейки при вставке текста из буфера обмена. Для этого необходимо, чтобы таблице пришла команда "_PASTE_" и в буфере обмена содержались текстовые данные. Эта команда автоматически приходит таблице при при выборе пункта Правка/Вставить или нажатии соответствующих клавиш. Для программной вставки текста из буфера обмена в ячейку курсора достаточно послать таблице команду "_PASTE_". НЕТ – переход в режим редактирования осуществляется двойным кликом мыши или нажатием клавиши Enter, значение в ячейке не затирается. НЕТ
ЛОГИКА ред_стрелкиВозможность перехода на следующую ячейку в режиме редактирования с помощью клавиш управления курсором. ДА: если клавиша управления курсором не обрабатывается элементом управления (например, достигнут конец многострочного списка или предельное значение диапазона) – происходит автоматический выход из режима редактирования и переход на следующую ячейку. Из последней ячейки в строке осуществляется переход на первую ячейку следующей строке, из последней ячейки в столбце – на первую ячейку следующего столбца. Если далее переходить некуда (для правой нижней ячейки) – курсор остается на месте и автоматического выхода из режима редактирования не происходит. НЕТ – клавиши управления курсором обрабатываются только элементом управления, выход из режима редактирования осуществляется нажатием Enter или кликом мыши на другой ячейке. НЕТ
ЦЕЛОЕ след_ячейкаПоведение таблицы по окончании редактирования значения ячейки (если завершение редактирования осуществляется нажатием Enter). Задается одной из констант РСЯ_... Значение поля управляет только ячейками, находящимися в режиме редактирования. Например, если редактирование ячейки запрещено – нажатие на Enter в такой ячейке не приведет к перемещению курсора на другую ячейку. В этом случае рекомендуется управлять перемещением курсора с помощью метода УСТ_КУРСОР. РСЯ_НЕТ

Поля форматы и форматы_столбцов управляют преобразованием значений в строку при отображении в ячейках таблицы. Для преобразования чисел, дат и времени используются строковые представления форматов, составленные по правилам модуля FORMAT.

ТипПолеОписаниеЗначение по умолчанию
СТРОКА форматыЗадает форматы преобразования для всей таблицы, переопределяя форматы, заданные глобально в программе.
СТРОКА: @[] форматы_столбцовЗадает форматы преобразования для столбцов, переопределяя значение, заданное в поле форматы. Индексом является номер столбца.

Форматы вывода позволяют управлять представлением данных в упрощенном виде, более сложные правила преобразования могут быть заданы кодом обработчика события данные. Дополнительной возможностью, связанной с форматами, является выбор вида создаваемого по умолчанию поля ввода числа: целое или вещественное. Если в строке формата, применяемой к некой ячейке с числовыми данными, присутствует формат целого и отсутствует формат вещественного числа, то будет создано поле ввода целого.


Прочие поля:

ТипПолеОписаниеЗначение по умолчанию
ЛОГИКА изменение_столбцовВозможность изменения пользователем с помощью мыши размеров столбцов. ДА
ЛОГИКА изменение_строкВозможность изменения пользователем с помощью мыши размеров строк. ДА
*: @[, ] элементыМожет содержать значения любого типа в зависимости от номера столбца и строки. Для таблиц, которые используются преимущественно для вывода данных, индексное поле может содержать все необходимые данные.
ОБЪЕДИНЕНИЕ: @[, ] объединенияСодержит информацию об объединенных ячейках таблицы. Индексами служат числовые значения строк и столбцов.
ЛОГИКА авто_размерНеобходимость автоматического пересчета размера таблицы в соответствии с количеством и размерами столбцов и строк. НЕТ
ЛОГИКА стр_добПризнак отображения в нижней части таблицы строки добавления с картинкой "+". При выборе строки добавления мышью или с помощью клавиши Enter в обработчик команда передается команда "+". НЕТ
ЦЕЛОЕ режим_выдВид курсора. Задается одной из констант СМТ_... СМТ_ЯЧЕЙКА
ЛОГИКА разр_настройкаОпределяет доступность команды Правка/Настройка при нахождении фокуса ввода на таблице. Пункт "Настройка" также добавляется в контекстное меню таблицы. Команда "_SETUP_" приходит в обработчик события команда. НЕТ
ЛОГИКА обр_подсказки Разрешает показ обрезанного текста ячейки во всплывающей подсказке. Текст может быть обрезан, если для ячейки задан недостаточный размер. Также подсказки показываются для частично видимых ячеек из-за прокрутки таблицы. Если задан обработчик события подсказка и он вернул ДА, то отображается текст назначенный обработчиком. ДА

Ситуация, когда индексное поле элементы содержит все необходимые данные, называется внутренним хранением данных таблицы (в индексном поле объекта). В другом случае можно использовать событие запроса данных таблицы. Для этой цели служит обработчик данные. При получении данных таблицы с помощью событий (внешний по отношению к таблице источник данных), индексное поле элементы содержит, как правило только текст заголовков столбцов. Допускается также гибридная форма хранения данных, когда часть данных хранится в индексном поле элементы, а часть получается через генерацию события данные. Внутренний источник имеет приоритет перед внешним, т.е. если индексное поле элементы содержит некоторое значение для запрашиваемых координат, то событие данные сгенерировано не будет.

Методы

МетодОписание
КУР_СТОЛБЕЦ Возвращает номер столбца, на котором находится курсор.
КУР_СТРОКА Возвращает номер строки, на которой находится курсор.
УСТ_КУРСОР Устанавливает курсор таблицы на ячейку с заданной координатой.
ЯЧЕЙКА_МЕНЮ Позволяет получить координаты ячейки, над которой было вызвано контекстное меню.
РЕД_ЯЧЕЙКУ Позволяет программно активизировать редактирование ячейки.
РЕЖИМ_РЕД Позволяет задать режим изменения размера редактора ячейки при вводе данных.
ОБНОВИТЬ_СТРОКУ Позволяет обновить отдельную строку таблицы.
ОБНОВИТЬ_ЯЧЕЙКУ Позволяет обновить отдельную ячейку таблицы.
ЭКСПОРТ Передает данные таблицы во внешние приложения.
ЭКСПОРТ_В_EXCEL Передает данные таблицы в Microsoft Excel.

Обработчики событий

При редактировании ячеек таблицы тоже используются события. Первым событием редактирование у пользователя выясняется возможность и режим редактирования для выбранной ячейки. Генерации события предшествует выбор пользователем ячейки с помощью мыши или нажатие клавиши Enter. В случае отказа от редактирования средствами таблицы в обработчике может быть вызван модальный диалог, которые осуществляет редактирование данных. Событие редактирование запрашивает данные для редактирования, что позволяет разделять данные для отображения в ячейке и данные для редактирования в ячейке. Например, отображаться некая дата в ячейке может прописью – как строка, а редактироваться в стандартном редакторе даты – как дата. По окончании редактирования ячейки генерируется событие сохранение, в которое передается измененное пользователем значение для сохранения. Если обработчики событий редактирование и сохранение не назначены, то действует схема редактирования по умолчанию. Для ячеек, в которые вывод данных производится из индексного поля элементы, осуществляется редактирование в соответствии с типом значения ячейки. Для прочих ячеек редактирование не осуществляется. Рекомендуется использовать внешний источник данных и события редактирование и сохранение для таблиц, предназначенных для ввода данных. Фиксированные строки и столбцы редактированию не подвергаются, но нажатия мышью на фиксированные ячейки можно обрабатывать с помощью события нажатие. Подробнее см. Программирование редактируемых ячеек табличной формы и таблицы.

ОбработчикОписание
клавиша Вызывается при нажатии пользователем определенных клавиш на клавиатуре.
команда Вызывается при нажатии пользователем функциональных клавиш, выборе пункта контекстного меню или нажатии на строке добавления таблицы.
меню Вызывается при нажатии пользователем правой кнопки мыши или клавиши всплывающего меню на клавиатуре.
изменение Вызывается при перемещении курсора таблицы.
нажатие Вызывается при нажатии мышью на фиксированные ячейки таблицы.
данные Вызывается таблицей при отсутствии данных ячейки во внутреннем источнике данных.
редактирование Вызывается, когда пользователь выбирает ячейку или строку с помощью двойного клика правой кнопкой мыши или нажатия клавиши Enter.
сохранение Вызывается при окончании редактирования ячейки средствами таблицы.
кнопка_редактора Вызывается при нажатии на специальную кнопку редактора ячейки.
подсказка Вызывается таблицей при запросе текста всплывающей подсказки для ячейки.
прием_файлов Позволяет обработать перетаскивание файлов в окно таблицы.

См. также: