PHP Delphi CSS HTML JavaScript Perl API ASP MySQL XML С++ VBasic WEB разработка *NIX CouchDB Hack Python
Главная Статьи Delphi Многострочные заголовки в DbGrid
Главная
 Главная  Контакты
 
Программинг
Статьи Книги ЧаВО
 
xBOOKi
Fresh Books Операционки Сети
 
Поиск
-------
 
Counters
Яндекс цитирования
Rambler's Top100
-------
 
CryptDisk.4h
Программа которая позволяет создать виртуальный шифрованный логический диск.

cryptdisk.4hack.com

-------
 
 

Многострочные заголовки в DbGrid.

В настоящее время мне, по работе, потребовался компонент DBGrid, который бы удовлетворял следующим требованиям:

создание многострочных заголовков;

простота применения;

небольшой размер и отсутствие признаков "большого интеллекта";

полная бесплатность или условно-бесплатность VCL-компонента;

Как обычно, начав поиск в Internet с Яндекса, я увы не нашел конкретного ответа: все что-то хвалили, но чаще всего взломанное или для Delphi 2, 3 и 4. 

Следующий шаг в поиске - посещение сайта "Королевство Дельфи". Извините меня, пожалуйста, но большей помойки, мне в последнее время давно не встречалось -  увы !!! - королевство мертво - сотни вопросов и просьб - ответов нуль.

Истиной в последней инстанции явился российский, но по неясным причинам - англоязычный, сайт http://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 все столбцы.

Вот как это делается:

Свойства ColumnsEditor.

Вызываем свойства столбцов 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, которые были описаны мною в начале статьи. Думаю, что их использование не доставит особых проблем.

Если У Вас возникли вопросы, пишите, обязательно помогу.

Удачи.

Рекомендую ознакомиться со статьей "Самые популярные компоненты для Delphi разработчика"

gratis97@mail.ru



Свежее
Резервное копирование rsync-ом
DNS Amplification (DNS усиление)
Алгоритм Шинглов — поиск нечетких дубликатов текста
Metasploit Framework. Обзор
Использование CouchDB
-------



 
Copyright © 2003-2009   Frikazoid.
Rambler's Top100