Sukurkite pelės žymeklio spalvų paryškinimą naudodami „Delphi“

Ar kada matėte meniu, lentelės stulpelį ar eilutės paryškinimą kita spalva, kai pelė užveskite pelės žymeklį ant jo? Štai koks yra mūsų tikslas: kad eilutė būtų paryškinta, kai pelės žymiklis yra diapazone.

„TDBGrid Delphi“ komponentas yra vienas iš „VCL“ brangakmenių. Sukurtas tam, kad vartotojas galėtų peržiūrėti ir redaguoti duomenis lentelių tinklelyje, „DBGrid“ siūlo įvairius būdus, kaip tinkinti savo duomenų pateikimo būdą. Pavyzdžiui, spalvų įtraukimas į savo duomenų bazių tinklelius pagerins kai kurių duomenų bazės eilučių ar stulpelių išvaizdą ir išskaidys jų svarbą.

Tačiau neapsigaukite dėl pernelyg supaprastintų vadovėlių šia tema. Tai gali pasirodyti pakankamai lengva, kad tiesiog nustatytumėte „dgRowSelect“ nuosavybė, bet atsimink, kai „dgRowSelect“ yra įtraukta į Galimybės, dgEditing vėliava ignoruojama, tai reiškia, kad duomenų redagavimas naudojant tinklelį yra išjungtas.

Žemiau rasite paaiškinimą, kaip įjungti „OnMouseOver“ tipas įvykis, skirtas „DBGrid“ eilutei, kad pelė būtų įrašyta ir nustatyta, kad įrašas būtų aktyvus, kad būtų pažymėta atitinkama eilutė „DBGrid“.

instagram viewer

Kaip dirbti su „OnMouseOver“ ir „Delphi“ komponentais

Pirmoji darbo tvarka yra rašymo kodas„OnMouseMove“ įvykis „TDBGrid“ komponente, kad jis galėtų rasti „DBGrid“ eilutę ir stulpelį (langelį), kurį užveskite pelė.

Jei pelė yra virš tinklelio (tvarkoma „OnMouseMove“ renginių tvarkyklė), galite naudoti „MoveBy“ „DataSet“ komponento būdas nustatyti dabartinį įrašą tokiu, kuris rodomas „žemiau“ pelės žymeklio.

tipo THackDBGrid = klasė(TDBGrid);
...
procedūra „TForm1.DBGrid1MouseMove“
(Siuntėjas: TObject; „Shift“: „TShiftState“; X, Y: sveikasis skaičius);
var
gc: „TGridCoord“;
prasideda
gc: = DBGrid1.MouseCoord (x, y);
jei (gc. X> 0) IR (gc. Y> 0) tada pradedama
„DBGrid1.DataSource“. „DataSet“. „MoveBy“
(gc. Y - THackDBGrid (DBGrid1) .Row);
galas;
galas;

Panašus kodas gali būti naudojamas norint parodyti, kurią langelį užvedė pelė, ir pakeisti žymeklį, kai jis virs pavadinimo juosta.

Norėdami teisingai nustatyti aktyvų įrašą, turite nulaužti „DBGrid“ ir saugoti rankas Eilutė nuosavybė. Eilutė nuosavybė a TCustomDBGrid komponentas laiko nuorodą į šiuo metu aktyvią eilutę.

Daug Delphi komponentai turi naudingų savybių ir metodų, pažymėtų nematomais ar apsaugotais „Delphi“ kūrėjui. Tikimės, kad norint pasiekti tokius apsaugotus komponento narius, galima naudoti paprastą metodą, vadinamą „apsaugotu įsilaužimu“.

Aukščiau esančiu kodu, kai perkeliate pelę virš tinklelio, pasirinktas įrašas yra tas, kuris rodomas tinklelyje „žemiau“ pelės žymeklio. Nereikia spustelėti tinklelio, kad pakeistumėte dabartinį įrašą.

Pažymėkite aktyvią eilutę, kad padidintumėte vartotojo patirtį:

procedūra „TForm1.DBGrid1DrawColumnCell“
(Siuntėjas: TObject; const Rect: TRect; „DataCol“: sveikasis skaičius;
Stulpelis: TC stulpelis; Valstija: TGridDrawState);
pradžia („THackDBGrid“ („DBGrid1“) .DataLink. „ActiveRecord“ + 1 =
„THackDBGrid“ („DBGrid1“ .Row)
arba („gdFocused in State“) arba (gdPasirinkta valstybėje) tada pradedama
„DBGrid1.Canvas“. Šepetys. Spalva: = clSkyBlue;
„DBGrid1.Canvas“. Šriftas. Stilius: = DBGrid1.Canvas. Šriftas. Stilius + [fsBold];
„DBGrid1.Canvas“. Šriftas. Spalva: = CLRED;
galas;
galas;

„OnDrawColumnCell“ įvykis naudojamas tvarkyti poreikį pritaikyti duomenų brėžinius tinklelio ląstelėse.

Galite atskirti pasirinktą eilutę nuo visų kitų eilučių. Apsvarstykite, kad Eilutė nuosavybė (sveikasis skaičius) yra lygus „ActiveRecord“ (+1) nuosavybės teisė „DataLink“ objektas, kurį pasirinkta eilutė bus dažoma.

Tikriausiai norėsite išjungti šį elgesį ( „MoveBy“ metodas „OnMouseMove“ renginio vedėjas) kada „DataSet“ prijungtas prie DBGrid yra Redaguoti arba Įdėti režimas.