Oletko koskaan nähnyt valikon, taulukon sarakkeen tai rivin korostavan eri väriseksi, kun hiiri siirtyy sen päälle? Siksi tavoitteemme on täällä: saada rivi korostuksi, kun hiiren osoitin on kantaman sisällä.
TDBGrid Delphi -komponentti on yksi VCL: n jalokiviä. DBGrid on suunniteltu antamaan käyttäjälle mahdollisuus tarkastella ja muokata tietoja taulukkomuotoisessa ruudussa. Se tarjoaa erilaisia tapoja mukauttaa tapaa, jolla se edustaa omia tietoja. Esimerkiksi, värin lisääminen tietokantaruudukkoihin parantaa ulkonäköä ja erottaa tiettyjen rivien tai sarakkeiden merkityksen tietokannassa.
Älä kuitenkaan mene lankaan liian yksinkertaisista opetusohjelmista aiheesta. Se voi vaikuttaa tarpeeksi helpoalta asettaa vain dgRowSelect omaisuutta, mutta muista se kun dgRowSelect sisältyy vaihtoehdot, dgEditing lippua ei huomioida, mikä tarkoittaa, että tietojen muokkaaminen ruudukolla on poistettu käytöstä.
Alla löydät selityksen siitä, kuinka onmouseover tyyppi tapahtuma DBGrid-riville, niin että hiiri tallennetaan ja sijoitetaan, jolloin tietue aktivoituu korostamaan vastaava rivi DBGridissä.
Kuinka työskennellä OnMouseOver- ja Delphi-komponenttien kanssa
Ensimmäinen käsittelyjärjestys on kirjoittamalla koodi varten onmousemove tapahtuma TDBGrid-komponentissa, jotta se voi paikantaa DBGridin rivin ja sarakkeen (solun), jonka hiiri leijuu.
Jos hiiri on ristikon yläpuolella (käsitellään onmousemove tapahtumakäsittelijä), voit käyttää MoveBy DataSet-komponentin menetelmä nykyisen tietueen asettamiseksi hiiren kohdistimen "alapuolella" näkyvään.
tyyppi THackDBGrid = luokka(TDBGrid);
...
menettely TForm1.DBGrid1MouseMove
(Lähettäjä: TObject; Vaihto: TShiftState; X, Y: kokonaisluku);
var
gc: TGridCoord;
alkaa
gc: = DBGrid1.MouseCoord (x, y);
jos (GC. X> 0) JA (GC. Y> 0) thenbegin
DBGrid1.DataSource. DataSet. MoveBy
(GC. Y - THackDBGrid (DBGrid1) .Row);
pää;
pää;
Samanlaista koodia voidaan käyttää osoittamaan, minkä solun hiiri siirtyy, ja muuttaa osoitinta, kun se on otsikkorivin yläpuolella.
Jotta aktiivinen tietue voidaan asettaa oikein, sinun on hakkeroitava DBGrid ja asetettava kädet suojattuun Rivi omaisuutta. Rivi omaisuus a TCustomDBGrid komponentti pitää viittauksen tällä hetkellä aktiiviseen riviin.
monet Delphi-komponentit on hyödyllisiä ominaisuuksia ja menetelmiä, jotka on merkitty näkymättömiksi tai suojattuiksi Delphi-kehittäjälle. Toivottavasti pääsyyn komponentin tällaisiin suojattuihin jäseniin voidaan käyttää yksinkertaista tekniikkaa, jota kutsutaan "suojatuksi hakataksi".
Yllä olevan koodin kanssa, kun siirrät hiiren ruudukon päälle, valittu tietue näkyy ruudukossa "hiiren alapuolella". Nykyistä tietuetta ei tarvitse muuttaa napsauttamalla ruutua.
Korosta aktiivinen rivi käyttäjän kokemuksen parantamiseksi:
menettely TForm1.DBGrid1DrawColumnCell
(Lähettäjä: TObject; const Rect: TRect; DataCol: kokonaisluku;
Pylväs: TC-pylväs; Osavaltio: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
tai (gdFocused valtiossa) tai (gdValittu valtiossa) thenbegin
DBGrid1.Canvas. Harjata. Väri: = clSkyBlue;
DBGrid1.Canvas. Fontti. Tyyli: = DBGrid1.Canvas. Fontti. Tyyli + [fsBold];
DBGrid1.Canvas. Fontti. Väri: = CLRED;
pää;
pää;
OnDrawColumnCell tapahtumaa käytetään käsittelemään räätälöityjen piirustusten tarve ruudukon soluissa oleville tiedoille.
Voit erottaa valitun rivin pienestä tempusta kaikista muista riveistä. Katsotaan, että Rivi omaisuus (kokonaisluku) on yhtä suuri kuin ActiveRecord (+1) omaisuus Datayhteys objekti, jota valittu rivi maalataan.
Haluat todennäköisesti poistaa tämän käytön ( MoveBy menetelmä sisään onmousemove tapahtumakäsittelijä) kun DataSet kytketty DBGridiin on Muokata tai Insert tilassa.