Ustvari barvno označitev miške z uporabo Delphija

Ste že kdaj videli stolpec v meniju ali tabeli ali vrstici, da označite drugo barvo, ko miška pokaže nad njo? To je naš cilj tukaj: označiti vrstico, ko je kazalec miške v dosegu.

Komponenta TDBGrid Delphi je eden od draguljev modela VCL. Zasnovan tako, da uporabniku omogoča ogled in urejanje podatkov v tabelarni mreži, DBGrid ponuja različne načine prilagajanja načina, kako predstavlja svoje podatke. Na primer dodajanje barve v vaše mreže baz podatkov bo izboljšal videz in razlikoval pomen nekaterih vrstic ali stolpcev v bazi podatkov.

Vendar pa se na to temo ne zavajajte s preveč poenostavljenimi vajami. Morda se zdi dovolj enostavno, da nastavite dgRowSelect lastnost, ampak ne pozabite, da kdaj dgRowSelect je vključeno v Opcije, the dgEditing zastava je prezrta, kar pomeni, da je urejanje podatkov s pomočjo mreže onemogočeno.

Spodaj boste našli razlago, kako omogočiti OnMouseOver tip dogodek za vrstico DBGrid, tako da je miška posneta in locirana, tako da je zapis aktiven tako, da označi ustrezno vrstico v DBGrid.

instagram viewer

Kako delati s komponentami OnMouseOver in Delphi

Prvo naročilo poslovanja je pisno kodo za OnMouseMove dogodek v komponenti TDBGrid, tako da lahko poišče vrstico in stolpec (celico) DBGrid, ki jo miška premakne nad miško.

Če je miška čez mrežo (ročaj v OnMouseMove lahko uporabljate MoveBy metoda komponente DataSet za nastavitev trenutnega zapisa na tistega, ki je prikazan "pod" miškinim kazalcem.

tip THackDBGrid = razred(TDBGrid);
...
postopek TForm1.DBGrid1MouseMove
(Pošiljatelj: TObject; Shift: TShiftState; X, Y: Integer);
var
gc: TGridCoord;
začeti
gc: = DBGrid1.MouseCoord (x, y);
če (gc X> 0) IN (gc Y> 0) potem začet
DBGrid1.DataSource. DataSet. MoveBy
(gc Y - THackDBGrid (DBGrid1) .Row);
konec;
konec;

Podobno kodo lahko uporabite, če želite prikazati, nad katero celico miška premakne miško in spremenite kazalec, ko je nad naslovno vrstico.

Če želite pravilno nastaviti aktivni zapis, morate vdreti DBGrid in se zaščititi Vrstica premoženje. The Vrstica lastnina a TCustomDBGrid komponenta vsebuje sklic na trenutno aktivno vrstico.

Mnogi Delphi komponente imajo uporabne lastnosti in metode, ki jih razvijalcu Delphi označijo nevidno ali zaščiteno. Upajmo, da lahko za dostop do takšnih zaščitenih članov komponente uporabimo preprosto tehniko, imenovano "zaščiten kramp".

Z zgornjo kodo, ko miško premikate po mreži, je izbrani zapis tisti, ki je prikazan v mreži "pod" miškinim kazalcem. Za spremembo trenutnega zapisa ni treba klikniti omrežja.

Označite aktivno vrstico, da izboljšate uporabniško izkušnjo:

postopek TForm1.DBGrid1DrawColumnCell
(Pošiljatelj: TObject; const Rect: TRect; DataCol: Integer;
Stolpec: TColumn; Stanje: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
ali (gdFokusiran v državi) ali (gd Izbrano v državi) potem začet
DBGrid1.Canvas. Čopič. Barva: = clSkyBlue;
DBGrid1.Canvas. Pisava. Slog: = DBGrid1.Canvas. Pisava. Slog + [fsBold];
DBGrid1.Canvas. Pisava. Barva: = clRed;
konec;
konec;

The OnDrawColumnCell dogodek se uporablja za obravnavo potrebe po prilagojeni risbi za podatke v celicah omrežja.

Za razlikovanje izbrane vrstice od vseh ostalih vrstic lahko uporabite majhen trik. Upoštevajte, da Vrstica lastnina (celo število) je enako ActiveRecord (+1) lastnina DataLink predmet, da bo izbrana vrstica naslikana.

Verjetno boste želeli onemogočiti to vedenje ( MoveBy metoda v OnMouseMove obdelovalec dogodkov) kdaj DataSet povezan z DBGrid je v Uredi ali Vstavi način.