Vytvořte zvýraznění barvy zvýrazněním pomocí Delphi

Už jste někdy viděli zvýraznění nabídky nebo sloupce tabulky nebo řádku na jinou barvu, když se nad ní myš pohybuje? To je to, co je naším cílem: mít zvýrazněný řádek, když je ukazatel myši v dosahu.

Komponenta TDBGrid Delphi je jedním z klenotů VCL. Navržen tak, aby uživateli umožnil prohlížet a upravovat data v tabulkové mřížce, DBGrid poskytuje různé způsoby přizpůsobení způsobu, jakým reprezentuje svá vlastní data. Například, přidání barev do databázových sítí zlepší vzhled a odliší význam určitých řádků nebo sloupců v databázi.

Nenechte se však zmást příliš zjednodušujícími návody k tomuto tématu. Mohlo by se to zdát dost snadné na nastavení dgRowSelect vlastnictví, ale pamatujte, že když dgRowSelect je součástí Možnosti, dgEditing příznak je ignorován, což znamená, že úprava dat pomocí mřížky je zakázána.

Níže naleznete vysvětlení, jak povolit OnMouseOver Typ událost pro řádek DBGrid, aby byla myš zaznamenána a lokalizována, čímž bude záznam aktivní, aby se zvýraznil odpovídající řádek v DBGrid.

instagram viewer

Jak pracovat s komponentami OnMouseOver a Delphi

První zakázka je psaní kódu pro OnMouseMove událost v komponentě TDBGrid tak, aby mohla najít řádek a sloupec (buňku) DBGrid, na který se myš vznáší.

Pokud je myš nad mřížkou (zachází se v ní) OnMouseMove obsluha události), můžete použít MoveBy metoda komponenty DataSet k nastavení aktuálního záznamu na záznam zobrazený „pod“ kurzorem myši.

typ THackDBGrid = třída(TDBGrid);
...
postup TForm1.DBGrid1MouseMove
(Odesílatel: TObject; Shift: TShiftState; X, Y: celé číslo);
var
gc: TGridCoord;
začít
gc: = DBGrid1.MouseCoord (x, y);
-li (gc. X> 0) A (gc. Y> 0) thenbegin
DBGrid1.DataSource. DataSet. MoveBy
(gc. Y - THackDBGrid (DBGrid1) .Row);
konec;
konec;

Podobný kód lze použít k ukázání buňky, nad kterou se myš pohybuje, a ke změně kurzoru, když je nad titulním pruhem.

Chcete-li správně nastavit aktivní záznam, musíte hacknout DBGrid a dostat ruce na chráněné Řádek vlastnictví. Řádek majetek a TCustomDBGrid komponenta obsahuje odkaz na aktuálně aktivní řádek.

Mnoho Komponenty Delphi mají užitečné vlastnosti a metody, které jsou pro vývojáře Delphi označeny jako neviditelné nebo chráněné. Doufejme, že pro přístup k takto chráněným členům komponenty lze použít jednoduchou techniku ​​zvanou „chráněný hack“.

S výše uvedeným kódem, když pohybujete myší nad mřížkou, je vybraným záznamem ten, který se zobrazí v mřížce „pod“ kurzorem myši. Chcete-li změnit aktuální záznam, nemusíte klikat na mřížku.

Nechte zvýrazněný aktivní řádek, abyste vylepšili uživatelský dojem:

postup TForm1.DBGrid1DrawColumnCell
(Odesílatel: TObject; const Rect: TRect; DataCol: Celé číslo;
Sloupec: TColumn; Stav: TGridDrawState);
začátek (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
nebo (gdFocused in State) nebo (gdVýběr ve státě) thenbegin
DBGrid1.Canvas. Kartáč. Barva: = clSkyBlue;
DBGrid1.Canvas. Písmo. Styl: = DBGrid1.Canvas. Písmo. Styl + [fsBold];
DBGrid1.Canvas. Písmo. Barva: = clRed;
konec;
konec;

OnDrawColumnCell událost se používá k vyřízení potřeby přizpůsobeného výkresu pro data v buňkách mřížky.

Můžete použít malý trik k odlišení vybraného řádku od všech ostatních řádků. Zvažte, že Řádek vlastnictví (celé číslo) se rovná ActiveRecord (+1) vlastnictví společnosti Datové spojení objekt, který má být vybrán.

Pravděpodobně budete chtít toto chování zakázat ( MoveBy metoda v OnMouseMove obsluha události) kdy DataSet připojeno k DBGrid je v Upravit nebo Vložit režim.