Замечательные возможности DBGridDelphi , Компоненты и Классы , TDBGridЗамечательные возможности DBGrid
Нередко при разработке приложений, использующих табличный вывод данных, требуется отобразить те или иные строки таблиц нестандартным образом, например, с целью привлечения внимания пользователя к этим строкам. В данной статье содержатся некоторые советы, касающиеся нестандартного отображения данных в компоненте TDBGrid. Как изменить цвет строки в TDBGrid Предположим, нам требуется изменить атрибуты текста и фона строки в компоненте TDBGrid, если значение какого-либо поля удовлетворяет заранее заданному условию. Для этой цели принято использовать обработчик события OnDrawColumnCell этого компонента. Отметим, что возможности, предоставляемые при его использовании, весьма разнообразны. Рассмотрим простейшее приложение с TDBGrid, содержащее один компонент TTable, один компонент TDataSource и один компонент TDBGrid: Установим значения их свойств в соответствии с приведенной ниже таблицей:
Обычно для перерисовки изображения в ячейках используется метод OnDrawColumnCell. Его параметр Rect – структура, описывающая занимаемый ячейкой прямоугольник; параметр Column - колонка DBGrid, в которой следует изменить способ рисования изображения. Для вывода текста используется метод TextOut свойства Canvas компонента TDBGrid. Предположим, нам нужно изменить цвет текста и фона строки в зависимости от значения какого-либо поля (например, VenueNo). Создадим обработчик события OnDrawColumnCell компонента DBGrid1. В случае Delphi соответствующий код имеет вид:
В результате на этапе выполнения при отображении строк, в которых значение поля VenueNo равно 1, фон ячеек будет окрашен в зеленый цвет, а текст выведен белым цветом. При выводе выделенных строк все данные в ячейках оказались выровненными по левому краю. Если мы хотим более корректно отобразить выравнивание текста в колонке, следует слегка модифицировать наш код, учитывая значение свойства Alignment текущей (то есть рисуемой в данный момент) колонки: Соответствующий код для Delphi имеет вид:
В этом случае выравнивание текста в колонках совпадает с выравниванием столбцов. Отметим, что величина смещения (в данном случае два пиксела), вообще говоря, зависит от гарнитуры и размера шрифта, используемого в данной колонке, и должна подбираться индивидуально. Если необходимо отобразить нестандартным образом не всю строку, а только некоторые ячейки, следует проанализировать имя поля, отображаемого в данной колонке, как в приведенном ниже обработчике событий. Соответствующий код для Delphi имеет вид:
В результате выделенными оказываются только ячейки, для которых выполняются выбранные нами условия: Как заменить данные в столбце компонента TDBGrid Нередко в колонке DBGrid нужно вывести не реальное значение, хранящееся в поле соответствующей таблицы, а другие данные, соответствующие имеющимся (например, символьную строку вместо ее числового кода). В этом случае также используется метод TextOut свойства Canvas компонента TDBGrid: Соответствующий код для Delphi имеет вид:
Еще один пример – использование значков из шрифтов Windings или Webdings в качестве подставляемой строки. Соответствующий код для Delphi имеет вид:
Как поместить графическое изображение в TDBGrid Использование свойства Canvas компонента TDBGrid в методе OnDrawColumnCell позволяет не только выводить в ячейке текст методом TextOut, но и размещать в ячейках графические изображения. В этом случае используется метод Draw свойства Canvas. Модифицируем наш пример, добавив в форму компонент TImageList и поместив в него несколько изображений. Модифицируем код нашего приложения: Соответствующий код для Delphi имеет вид:
Теперь в TDBGrid в колонке VenueNo находятся графические изображения. Статья Замечательные возможности DBGrid раздела Компоненты и Классы TDBGrid может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросы:: 2009-09-11 07:03:05 :: re:Замечательные возможности DBGridпользователь: Lora. Добрый день! Подскажите как удалить строку в dbGrid1 не в table1 не самой таблице, а в dbgrid1 примерно как строчку закрашиваем и потом ее удалить. SelectRows.Clear; не помогает, ничего не происходит. Заранее большое спасибо :: 2009-09-11 22:42:30 :: re:Замечательные возможности DBGridпользователь: kan. Фактически тебе нужно скрыть строку, для этого нужно установить высоту в 0, но у этого компонента нет свойства, которое отвечало бы за высоту, а среди предков TDBGrid есть объект TCustomGrid, у которого есть свойство RowHeights. Чтобы его использовать, достаточно написать следующую строку: :: 2015-10-20 16:06:39 :: re:Замечательные возможности DBGridпользователь: Ричард. Как использовать выведенную информацию из DBGrid, полученную в результате SQL запроса? :: 2016-08-18 14:44:49 :: re:Замечательные возможности DBGridпользователь: Наталья. У меня при навигации по dbgrid мышкой курсор опускается до нижней видимой строки и все, дальше надо только боковым скроллом. Как сделать, чтобы мышкой проходить по всей таблице? Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
|||||||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |