Izradite oznaku boje mišem pomoću Delphija

click fraud protection

Jeste li ikada vidjeli stupac izbornika ili tablice ili retka koji se ističu na neku drugu boju kada miš pređe preko nje? To je ono što je naš cilj ovdje: da se redak istakne kada je pokazivač miša unutar dosega.

Komponenta TDBGrid Delphi jedan je od dragulja VCL-a. Dizajniran kako bi korisniku omogućio pregled i uređivanje podataka u tabelarnoj mreži, DBGrid pruža različite načine prilagođavanja načina na koji predstavlja svoje podatke. Na primjer, dodavanju boje mrežama vaše baze podataka poboljšat će izgled i razlikovati važnost određenih redaka ili stupaca u bazi podataka.

Međutim, nemojte se zavaravati pretjerano pojednostavljenim tutorijalama o ovoj temi. Može se činiti dovoljno jednostavnim da samo postavite dgRowSelect vlasništvo, ali zapamtite to kad dgRowSelect je uključeno u Opcije, the dgEditing zastava se zanemaruje, što znači da je uređivanje podataka putem mreže onemogućeno.

U nastavku ćete pronaći objašnjenje kako to omogućiti OnMouseOver vrsta događaj za DBGrid redak, tako da se miš snima i nalazi, čineći zapis aktivnim tako da istakne odgovarajući redak u DBGridu.

instagram viewer

Kako raditi s OnMouseOver i Delphi komponentama

Prvi red poslovanja je kod za pisanje za OnMouseMove događaj u komponenti TDBGrid tako da može locirati DBGridov red i stupac (ćeliju) iznad kojeg miš prelazi iznad.

Ako je miš iznad mreže (rukuje se u polju OnMouseMove rukovatelj događajima), možete ih koristiti MoveBy metoda komponente DataSet za postavljanje trenutnog zapisa na onog koji je prikazan "ispod" pokazivača miša.

tip THackDBGrid = klasa(TDBGrid);
...
postupak TForm1.DBGrid1MouseMove
(Pošiljatelj: TObject; Shift: TShiftState; X, Y: Integer);
var
gc: TGridCoord;
početi
gc: = DBGrid1.MouseCoord (x, y);
ako (GC. X> 0) I (GC. Y> 0) thenbegin
DBGrid1.DataSource. Podataka. MoveBy
(GC. Y - THackDBGrid (DBGrid1). Row);
kraj;
kraj;

Sličan se kôd može upotrijebiti za prikaz nad kojom ćelijom miš prelazi i za promjenu kursora kad se nađe iznad naslovne trake.

Da biste ispravno postavili aktivni zapis, morate hakirati DBGrid i zaštititi se rukama Red nekretnine. Red vlasništvo a TCustomDBGrid komponenta sadrži referencu na trenutno aktivni redak.

Puno Delphi komponente imati korisna svojstva i metode koji su označeni nevidljivim ili zaštićenim razvojnim programerima tvrtke Delphi. Nadamo se da se za pristup takvim zaštićenim članovima komponente može koristiti jednostavna tehnika koja se zove "zaštićeni hack".

Kod gornjeg koda, kada miš pomičete po mreži, odabrani zapis je onaj koji se prikazuje u mreži "ispod" kursora miša. Ne morate kliknuti mrežu da biste promijenili trenutni zapis.

Istaknite aktivni redak da biste poboljšali korisnikov doživljaj:

postupak TForm1.DBGrid1DrawColumnCell
(Pošiljatelj: TObject; const Rect: TRect; DataCol: Integer;
Stupac: TColumn; Stanje: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
ili (gdFokusirano u državi) ili (gdIzbor u državi) thenbegin
DBGrid1.Canvas. Četkanje. Boja: = clSkyBlue;
DBGrid1.Canvas. Font. Stil: = DBGrid1.Canvas. Font. Stil + [fsBold];
DBGrid1.Canvas. Font. Boja: = clRed;
kraj;
kraj;

OnDrawColumnCell događaj se koristi za obradu potrebe za prilagođenim crtežom za podatke u ćelijama mreže.

Možete koristiti mali trik za razlikovanje odabranog retka od svih ostalih redova. Uzmimo u obzir da Red vlasništvo (broj) jednak je ActiveRecord (+1) vlasništvo nad Datoteka objekt koji će odabrani red biti obojen.

Vjerojatno ćete htjeti isključiti takvo ponašanje (the MoveBy metoda u OnMouseMove dogovarač događaja) kada DataSet spojen na DBGrid je u Uredi ili Umetnuti način.

instagram story viewer