Създайте цвят на мишката с помощта на Delphi

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

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

Въпреки това, не се заблуждавайте от прекалено опростени уроци по тази тема. Може да изглежда достатъчно лесно, просто да зададете dgRowSelect собственост, но не забравяйте, че кога dgRowSelect е включен в Настроики, the dgEditing флагът се игнорира, което означава, че редактирането на данните чрез мрежата е деактивирано.

Това, което ще намерите по-долу, е обяснение как да активирате поставяне на показалеца

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

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

Първият ред на бизнеса е код за писане за OnMouseMove събитие в компонента на TDBGrid, така че да може да намери реда и колоната (клетката) на DBGrid, над която мишката се задържи.

Ако мишката е над решетката (обработва се в OnMouseMove обработващ събитие), можете да използвате MoveBy метод на компонент DataSet за задаване на текущия запис на показания "под" курсора на мишката.

Тип THackDBGrid = клас(TDBGrid);
...
процедура TForm1.DBGrid1MouseMove
(Подател: TObject; Shift: TShiftState; X, Y: цяло число);
Var
gc: TGridCoord;
започвам
gc: = DBGrid1.MouseCoord (x, y);
ако (GC. X> 0) И (GC. Y> 0) thenbegin
DBGrid1.DataSource. Набор от данни. MoveBy
(GC. 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)
или (gdФокусирано в щата) или (gdИзбрано в държавата) thenbegin
DBGrid1.Canvas. Четка. Цвят: = clSkyBlue;
DBGrid1.Canvas. Font. Стил: = DBGrid1.Canvas. Font. Style + [fsBold];
DBGrid1.Canvas. Font. Цвят: = clRed;
край;
край;

Най- OnDrawColumnCell събитието се използва за справяне с необходимостта от персонализиран чертеж за данните в клетките на мрежата.

Можете да използвате малък трик, за да разграничите избрания ред от всички останали редове. Имайте предвид, че ред Имот (цяло число) е равно на ActiveRecord (+1) собственост на връзка за данни обект, че избраният ред е на път да бъде боядисан.

Вероятно ще искате да деактивирате това поведение (the MoveBy метод в OnMouseMove мениджър на събития) кога DataSet свързан към DBGrid е в редактиране или Insert режим.