Создать выделение цвета при наведении курсора с помощью Delphi

Вы когда-нибудь видели, чтобы столбец меню или таблицы или подсветка строки выделялись другим цветом при наведении на них курсора мыши? В этом наша цель: выделение строки, когда указатель мыши находится в пределах диапазона.

Компонент TDBGrid Delphi является одной из жемчужин VCL. Предназначенный для того, чтобы пользователь мог просматривать и редактировать данные в табличной сетке, DBGrid предоставляет различные способы настройки способа представления своих данных. Например, добавление цвета в сетку вашей базы данных улучшит внешний вид и разграничит важность определенных строк или столбцов в базе данных.

Однако не обманывайте себя слишком упрощенными учебниками по этой теме. Может показаться, что достаточно просто установить dgRowSelect собственности, но помните, что когда dgRowSelect входит в Параметры, dgEditing флаг игнорируется, это означает, что редактирование данных с использованием сетки отключено.

Ниже вы найдете объяснение того, как включить При наведении мыши тип событие для строки DBGrid

instagram viewer
, так что мышь записана и расположена, делая запись активной, чтобы выделить соответствующую строку в DBGrid.

Как работать с компонентами OnMouseOver и Delphi

Первый заказ бизнеса написание кода для OnMouseMove событие в компоненте TDBGrid, чтобы он мог найти строку и столбец DBGrid (ячейку), над которыми наведена мышь.

Если мышь находится над сеткой (обрабатывается в OnMouseMove обработчик событий), вы можете использовать MoveBy метод компонента DataSet для установки текущей записи на ту, которая отображается «под» курсором мыши.

тип THackDBGrid = учебный класс(TDBGrid);
...
процедура TForm1.DBGrid1MouseMove
(Отправитель: TObject; Shift: TShiftState; X, Y: целое число);
вар
gc: TGridCoord;
начать
gc: = DBGrid1.MouseCoord (x, y);
если (Дс. X> 0) И (Дс. Y> 0) thenbegin
DBGrid1.DataSource. DataSet. MoveBy
(Дс. Y - THackDBGrid (DBGrid1) .Row);
конец;
конец;

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

Чтобы правильно установить активную запись, вам нужно взломать DBGrid и получить в свои руки защищенный Строка свойство. Строка свойство TCustomDBGrid Компонент содержит ссылку на текущую активную строку.

Много Компоненты Delphi иметь полезные свойства и методы, помеченные как невидимые или защищенные для разработчика Delphi. Надеемся, что для доступа к таким защищенным элементам компонента можно использовать простую технику, называемую «защищенный взлом».

С помощью приведенного выше кода при наведении указателя мыши на сетку выбирается та запись, которая отображается в сетке «под» курсором мыши. Нет необходимости нажимать на сетку, чтобы изменить текущую запись.

Выделите активную строку, чтобы улучшить взаимодействие с пользователем:

процедура TForm1.DBGrid1DrawColumnCell
(Отправитель: TObject; const Rect: TRect; DataCol: Integer;
Колонка: TColumn; Состояние: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
или (gdFocused в государстве) или (gdSelected в штате) thenbegin
DBGrid1.Canvas. Щетка. Цвет: = clSkyBlue;
DBGrid1.Canvas. Шрифт. Стиль: = DBGrid1.Canvas. Шрифт. Стиль + [fsBold];
DBGrid1.Canvas. Шрифт. Цвет: = Ясный;
конец;
конец;

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

Вы можете использовать небольшую хитрость, чтобы отличить выбранную строку от всех других строк. Считайте, что Строка свойство (целое число) равно ActiveRecord (+1) свойство Канал передачи данных объект, который выбранная строка собирается нарисовать.

Возможно, вы захотите отключить это поведение ( MoveBy метод в OnMouseMove обработчик события) когда DataSet подключен к DBGrid в редактировать или Вставить Режим.