Многострочные заголовки в DbGrid
Коробов И.Е.
В настоящее время мне, по работе,
потребовался компонент DBGrid, который бы
удовлетворял следующим требованиям:
|
создание многострочных
заголовков; |
|
простота применения; |
|
небольшой
размер и отсутствие признаков "большого
интеллекта"; |
|
полная
бесплатность или условно-бесплатность
VCL-компонента; |
Как обычно, начав поиск в Internet с
Яндекса, я увы не нашел конкретного
ответа: все что-то хвалили, но чаще всего
взломанное или для Delphi 2, 3 и 4.
Следующий шаг в поиске -
посещение сайта "Королевство Дельфи".
Извините меня, пожалуйста, но большей
помойки, мне в последнее время давно не
встречалось - увы !!! - королевство
мертво - сотни вопросов и просьб - ответов
нуль.
Истиной в последней инстанции
явился российский, но по неясным причинам
- англоязычный, сайт www.torry.net,
который грузится долго, но верно. Именно
здесь в разделе DBAware, я нашел то, что искал.
Целый раздел посвящен именно компонентам-аналогам
DBGrid. Дело осталось за малым - выбрать из 38
предложенных вариантов лучший и
применить его в работе. Сразу отбросил
все компоненты, за 1997-1999 годы, затем те,
что созданы для версий 3 или 4.
Осталось 3 компонента, которые и
были успешно закачены. Не буду долго
рассказывать о всех, скажу только,
что все они действительно хороши - есть
даже она российская разработка моего
тёзки Ильи
Андреева под названием BitDBGrid, идея
которой мне понравилась, но подкачала
реализация.
Самым достойным оказался набор
компонентов от фирмы Quasidata,
который Вы можете скачать прямо по ссылке
zip-архив размером 1356 Кб, который содержит
следующие компоненты:
|
DbAltGrid - компонент-потомок
стандартного DBGrid, поддерживающий
многострочные заголовки; |
Следующие компоненты
позволяют разработчику упростить
пользователю процесс редактирования
значений поля базы данных прямо в
компоненте DbAltGrid, что во-первых,
перекладывает обработку ошибок на сам
компонент, а во-вторых, позволяет
недопустить ввода неправильных значений:
|
dagCalendar - календарь; |
|
dagClock - часы; |
|
dagNumPad - клавиатура для
набора цифровых значений с
использованием "мыши"; |
|
dagCalculator - калькулятор в
ячейке; |
|
dagBoolean - разновидность
стандартного CheckBox для работы прямо в
DbAltGrid; |
|
dagMemo - отображение BLOB-полей
с текстом |
|
dagRichMemo - отображение
BLOB-полей с RTF-форматированием |
|
dagGraphic - вывод в ячейку
изображения с возможностью
масштабирования и редактирования
внешним графическим редактором; |
|
dagHyperlink - интересный
компонент, реализующий для
соответствующего поля базы данных
возможность запуска почтовой
программы с передачей ей значений кому,
тема и текст письма; |
|
dagParent - компонент,
показывающий в DbAltGrid вместо
определенных значений графические
изображения; |
|
dagBackup - компонент
позволяет сохранить пользователю его
собственный порядок отображения полей
в DbAltGrid и в дальнейшем применять его. |
При хорошей скорости доступа в
Internet, вы можете посмотреть анимированные
*.gif изображения, иллюстрирующие
возможности всех компонентов, то нажав на
эти маленькие картинки:
|
|
|
|
|
87 Кб
|
18 Кб
|
19 Кб
|
43 Кб
|
5 Кб
|
Кстати, все картинки не что
иное, как копии с экрана демонстрационной
программы, которая входит в архив.
Установка пакета в Delphi и
подключение справочной системы
производится самой инсталляционной
программой, что не должно вызвать
затруднений. В результате палитра
инструментов должна дополниться новой
закладкой DbAltGrid, содержащей все указанные
выше компоненты.
Рекомендую для начала
посмотреть работу демонстрационной
программы, которая позволяет в real-time
изменять свойства компонента DBGrid.
Теперь перейдем непосредственно
к рассмотрению компонента DbAltGrid, в
частности, на нужном мне примере:
Пример 1 База "Платежные
поручения". |
|
Перед Вами полностью
работоспособный пример, в котором
заголовок таблицы состоит из трех строк,
при этом каждая строка раскрашена в свой
цвет. Строки в журнале платежных
поручений раскрашены в два цвета - это
происходит путем установки
соответствующего переключателя в Object
Inspector.
Интересно организовано
перемещение по строкам и столбцам - а-ля 1C-Бухгалтерия
версия 6. В нашем случае выделено поле "Получатель".
Если нажать клавишу вниз, то станет
активной следующая запись и тот же
столбец, а при нажатии клавиш влево или
вправо происходит перемещение по строке
на предыдущее или следующее поле.
Установкой в Инспекторе
Объектов можно добиться того, чтобы DbAltGrid
слегка затенял заголовок столбца, где в
настоящий момент находится курсор.
Рассмотрим новые свойства
компонента DbAltGrid:
Новые свойства
компонента DbAltGrid. |
|
Появились свойства AltColor и AltOptions,
которые я прокомментирую:
Свойства AltColor |
Описание |
BankLine и ColLine |
цвет горизонтальных и
вертикальных линий ячеек |
FixedLine |
цвет линий разделения
строк в заголовке |
FlatBorder и HeaderBlank |
увы, не работают, ибо
это есть единственное ограничение,
ибо набор компонентов является
условно-бесплатным. Эти параметры
отвечают за трехмерность заголовков
столбцов, которую Вы сможете получить
заплатив 145 у.е. |
Highlight |
отвечает за цвет
курсора, указывающего текущую ячейку (в
моем примере - синий) |
HighlightText |
цвет, которым
показывается содержимое текущей
ячейки |
RowBlank |
отключен по причине Trial-версии |
RowLine |
цвет, которым
ограничивается при многострочном
выводе строка |
Stripe0 и Stripe1 |
цвет двух соседних
строк таблицы |
Свойства AltOptions |
|
dagAppendCtrlIns |
добавление новой
записи в таблице только по нажатию
Ctrl+Ins при значении False |
dagBandLines |
показывать
горизонтальные линии в
многоколоночной строке |
dagBandResize |
возможность
динамического изменения высоты строк
компонента DbAltGrid |
dagCellHint |
если заголовок
компонента или значение в какой-либо
ячейки не умещается, то появляются
"..." в конце значения, которые
превращаются в полное значение при
наведении "мыши" |
dagColunmAltResize |
размер колонок по
вертикали можно динамически изменять
и менять их местами. Значение
параметра игнорируется если свойство
dagBandResize равно False |
dagCtrlMultiSelect |
если True, то
пользователь удерживая клавишу Ctrl
может выделять множество ячеек.
Значение игнорируется, если
стандартное свойство dgMultiSelect равно False |
dagDiscreteBandHeight |
нет данных |
dagEnterLikeTab |
клавиша Enter действует
так же, как и клавиша Tab |
dagExpandedBottomBar |
разделительная линия
между заголовком таблицы и данными
при использовании группировки
столбцов (смотри пример 2). |
dagExpandIcon |
каким образом
показывать наличие скрытых столбцов
компонента DbAltGrid - стрелкой или [+] |
dagLightButton |
скрываются
разграничительные линии в заголовке
таблицы |
dagMemoText |
вариант редактирования
Memo поля - прямо в ячейке, или в
многострочном редакторе - при нажатии
клавиши Ctrl+Enter |
dagScaleColumns |
динамическое изменение
размеров таблицы при изменении
размеров окна |
dagStrippedRows |
подсвечивать колонки
цветами Stripe0 и Stripe1 |
dagTitleFocusRect |
показывать в "шапке"
компонента DbAltGrid активный
заголовок |
dagTitlePush |
заголовки таблицы
могут нажиматься как кнопки |
В примере с платежным поручением
я показал только один способ создания
многострочных заголовков у компонента DbAltGrid.
Существует и второй, не менее
интересный способ, широко применяемый в
программе Microsoft Excel, когда столбцы
группируются и их можно скрывать и
показывать путем нажатия на знак [+] в
заголовке рабочего листа.
Рассмотрим следующий пример:
Пример 2 Использование
группировки столбцов. |
|
Что у нас имеется - 14 столбцов,
имеющих отношение к платежным поручениям.
Задача - вывести на ограниченном
размерами окна компоненте DbAltGrid все
столбцы.
Вот как это делается:
Вызываем свойства столбцов DbAltGrid
двойным нажатием на компонент.
Теперь допустим, нам необходимо
сгруппировать столбцы 8 и 9, которые
относятся к получателю денежных средств,
привязав их к полю 7, а поля 2, 10, 11
сгруппировать с полем 12.
Как мы это делаем. Обратим
внимание на свойства поля 8 в Инспекторе
Объектов:
Свойства поля Doc_PoluchSCHET
в Инспекторе
Объектов. |
|
Появились два новых свойства: ParentName
и Template.
Если выбрать свойство ParentName,
оно покажет список доступных полей
компонента DbAltGrid. Выберем для Doc_PoluchSCHET
поле Doc_PoluchINN, а затем то же самое - для поля
Doc_PoluchBANK. Теперь посмотрим на результат
нашей работы:
Результат
использования свойств полей
компонента DbAltGrid. |
|
Если нажать на изображение [-] у
поля "ИНН получ.", то будут скрыты
столбцы "Р/с получ." и "Банк получ.":
Результат нажатия "мышью"
на [-] |
|
Как видите, столбцы скрылись и
появился "ИНН получ.". Обратите
внимание, что заголовок появившегося
столбца не умещается в отведенном ему
размере, поэтому компонент DbAltGrid добавил
троеточие.
Чуть выше я коснулся еще одного
нового свойства - Template. Это свойство
разрешает применять компоненты
инструментальной панели DbAltGrid, которые
были описаны мною в начале статьи. Думаю,
что их использование не доставит особых
проблем.
Если У Вас возникли вопросы,
пишите, обязательно помогу.
Удачи.
|