Delphi. TRichView. TRichViewActions. Добавление таблицы. Изменение её свойств

В данном посте мы научимся вставлять таблицы, используя TRichViewActions, редактировать их, добавлять колонки, ряды и удалять их. Будет представлен подход, совмещающий дизайнтайм и рантайм.

Я уже писал про добавление таблиц в TRichViewEditor, там был пример вставки таблицы программно, с заданием различных атрибутов, как то ширина границы и так далее. Немного поработав с таблицами в TRichView, я сделал вывод, что лучше всего совмещать программный способ и дизайнтайм.

Добавление таблицы

Добавим кнопку Table

13

в наш пример и напишем следующий код…

В секции private добавим…

Будем вести учет таблиц, это нужно для того, чтобы при изменении свойств границ таблиц, и при последующей вставке таблиц – обновление свойств границ (“нормализация”) изменялось бы только для вновь добавленных.

В FormCreate

В FormDestroy

Код обработки кнопки Table. Если таблица не выделена – вызывается диалог создания таблицы, если выделена – вызывается диалог настройки таблицы.

Вспомогательная процедура “нормализации границ таблицы”

Как это работает?

Если никакая таблица не выделена при нажатии появляется диалог создания таблицы…

14

И таблица вставляется

16

Если таблица выделена , то появляется диалог настройки таблицы

15

 

Можно ли сделать проще?

Можно, подключив к кнопкам TableInsert и TableSettings, через свойство Actions команды

rvActionsResource.rvActionInsertTable1

rvActionsResource.rvActionTableProperties1

мы получаем короткое решение вопроса “Как добавить таблицу в TRichView и настроить её?”.

Но тогда, во первых, нужно 2 кнопки вместо одной, а во вторых таблица будет рисоваться вот так… С двойными рамками.

18

Обратите внимание на рамки. Таблицы в TRichView построены по модели HTML, то есть есть рамки у ячеек и у самой таблицы и они как-то взаимодействуют. Чтобы привести их в адекватный “вордовский”, привычный вид, я и написал этот код, который привел в начале поста.

This entry was posted in Delphi, TRichView. Bookmark the permalink.

Leave a Reply