Чудові можливості dbgrid

Зазвичай для перемальовування зображення в осередках використовується метод OnDrawColumnCell.

Його параметр Rect - структура, що описує займаний осередком прямокутник; параметр Column - колонка DBGrid, в якій слід змінити спосіб малювання зображення. Для перегляду тексту використовується метод TextOut властивості Canvas компонента TDBGrid.

Припустимо, нам потрібно змінити колір тексту і фону рядка в залежності від значення якого-небудь поля (наприклад, VenueNo). Створимо оброблювач події OnDrawColumnCell компонента DBGrid1.

У разі Delphi відповідний код має вигляд:

В результаті на етапі виконання при відображенні рядків, в яких значення поля VenueNo дорівнює 1, фон осередків буде пофарбований в зелений колір, а текст виведений білим кольором.

При виведенні виділених рядків всі дані в осередках виявилися вирівняними по лівому краю. Якщо ми хочемо більш коректно відобразити вирівнювання тексту в колонці, слід злегка модифікувати наш код, враховуючи значення властивості Alignment поточної (тобто рисуемой в даний момент) колонки:

Відповідний код для Delphi має вигляд:

В цьому випадку вирівнювання тексту в колонках збігається з вирівнюванням стовпців.

Відзначимо, що величина зміщення (в даному випадку два пікселя), взагалі кажучи, залежить від гарнітури і розміру шрифту, який використовується в цій колонці, і повинна підбиратися індивідуально.

Якщо необхідно відобразити нестандартним чином не всю рядок, а тільки деякі осередки, слід проаналізувати ім'я поля, яке відображається в даній колонці, як у наведеному нижче обработчике подій.

Відповідний код для Delphi має вигляд:

В результаті виділеними виявляються тільки осередки, для яких виконуються обрані нами умови:

Як замінити дані в стовпці компонента TDBGrid

Нерідко в колонці DBGrid потрібно вивести не реальна значення, що зберігається в поле відповідної таблиці, а інші дані, відповідні наявним (наприклад, символьний рядок замість її числового коду). У цьому випадку також використовується метод TextOut властивості Canvas компонента TDBGrid:

Відповідний код для Delphi має вигляд:

Ще один приклад - використання значків з шрифтів Windings або Webdings як підставляється рядки.

Схожі статті