„Delphi DBGrid“ yra toks galingas komponentas, kurį tikriausiai naudojate kiekvieną dieną, jei kuriate duomenis žinančias programas. Žemiau apžvelgsime, kaip prie duomenų bazės programų pridėti dar keletą funkcijų, kurios jūsų vartotojams tikrai patinka.
Laikydamiesi sąvokų, aprašytų „Delphi“ duomenų bazių programavimo pradedantiesiems vadovas, toliau pateiktuose pavyzdžiuose naudojami ADO komponentai („AdoQuery“ / „AdoTable“ prijungtas prie „ADOConnection“, „DBGrid“ prijungtas prie „AdoQuery“ per „DataSource“) įrašai iš duomenų bazės lentelės, esančios „DBGrid“ komponente.
Visi komponentų pavadinimai buvo palikti, nes Delphi juos pavadino, kai nukrito ant formos (DBGrid1, ADOQuery1, AdoTable1 ir kt.).
Pelė juda per „DBGrid“ pavadinimo sritį
Pirmiausia pažiūrėkime, kaip pakeisti pelės žymeklį, kol jis juda per DBGrid pavadinimo sritį. Viskas, ką jums reikia padaryti, tai pridėti kodą prie „DBGrid“ komponento „OnMouseMove“ įvykio.
Žemiau pateiktas kodas tiesiog naudoja „DBGrid“ komponento „MouseCoord“ savybę „apskaičiuoti“ pelės žymiklį. Jei jis viršija „DGBrid“ pavadinimo sritį, pt.y lygus 0, tai yra pirmoji „DBGrid“ eilutė (pavadinimo sritis, rodanti stulpelių / laukų pavadinimus).
procedūra „TForm1.DBGrid1MouseMove“
(Siuntėjas: TObject; „Shift“: „TShiftState“; X, Y: sveikasis skaičius);
var
pt: TGridcoord;
prasideda
pt: = DBGrid1.MouseCoord (x, y);
jei pt.y = 0 tada
„DBGrid1.Cursor“: = „crHandPoint“
Kitas
„DBGrid1.Cursor“: = crDefault;
galas;
Rūšiuoti pagal stulpelį Spustelėkite ir pakeiskite stulpelio pavadinimo šriftą
Jei naudojate ADO metodą kuriant „Delphi“ duomenų bazę ir norite rūšiuoti įrašus duomenų rinkinyje, turite nustatyti „AdoDataset“ savybę Rūšiuoti (ADOQuery, AdoTable).
Rūšiavimas yra plačios eilutės reikšmė, nurodanti standartinės SQL užklausos dalį „UŽSAKYTI BY“. Žinoma, jums nereikia rašyti SQL užklausos, kad galėtumėte naudoti savybę Rūšiuoti. Tiesiog nustatykite rūšiavimo ypatybę vieno lauko pavadinimu arba kableliais atskirtų laukų sąraše, kiekviename nurodydami rūšiavimo tvarką.
Štai pavyzdys:
ADOTable1.Sort: = 'Year DESC, ArticleDate ASC'
„DBGrid“ komponento „OnTitleClick“ įvykis turi stulpelio parametrą, nurodantį stulpelį, kurį vartotojas spustelėjo. Kiekvienas stulpelis (TColumn tipo objektas) turi lauko ypatybę, nurodančią lauką (TField), kurį vaizduoja stulpelis, o lauke „FieldName“ esantis laukas pagrindiniame lauke nurodo lauko pavadinimą duomenų rinkinys.
Todėl norint rūšiuoti ADO duomenų rinkinį pagal lauką / stulpelį, galima naudoti paprastą eilutę:
naudojant „TCustomADODataSet“ („DBGrid1.DataSource“. „DataSet“)
Rūšiuoti: = Stulpelis. Laukas. Lauko pavadinimas; // + „ASC“ arba „DESC“
Žemiau pateiktas „OnTitleClick“ net tvarkyklės, rūšiuojančios įrašus pagal stulpelio paspaudimą, kodas. Kodas, kaip visada, pratęsia idėją.
Pirmiausia norime tam tikru būdu pažymėti stulpelį, kuris šiuo metu naudojamas rūšiavimo užsakymui. Tada, jei spustelėsime stulpelio pavadinimą ir duomenų rinkinys jau bus surūšiuotas pagal tą stulpelį, norime pakeisti rūšiavimo tvarką iš ASC (didėjančios) į DESC (mažėjančios) ir atvirkščiai. Galiausiai, rūšiuodami duomenų rinkinį pagal kitą stulpelį, norime pašalinti žymėjimą iš anksčiau pasirinkto stulpelio.
Paprastumo dėlei pažymėdami stulpelį, kuris „rūšiuoja“ įrašus, mes tiesiog pakeisime stulpelio pavadinimo šrifto stilių į paryškintą ir pašalinsime jį, kai duomenų rinkinys bus rūšiuojamas naudojant kitą stulpelį.
procedūra TForm1.DBGrid1TitleClick (Column: TColumn);
{$ J +}const „PreviousColumnIndex“: sveikasis skaičius = -1;
{$ J-}
pradžia „DBGrid1.DataSource“. „DataSet“ yra TCustomADODataSet po to „TCustomADODataSet“ („DBGrid1.DataSource“. Duomenų rinkinys) dobegintry
„DBGrid1.Columns“ [PreviousColumnIndex] .title. Šriftas. Stilius: =
„DBGrid1.Columns“ [PreviousColumnIndex] .title. Šriftas. Stilius - [fsBold];
išskirti;
Stulpelis.pavadinimas. Šriftas. Stilius: =
Stulpelis.pavadinimas. Šriftas. Stilius + [fsBold];
„PreviousColumnIndex“: = stulpelis. Indeksas;
jei (Poz.). Laukas. FieldName, Sort) = 1)
ir (Poz. ('DESC', Rūšiuoti) = 0) tada
Rūšiuoti: = Stulpelis. Laukas. Lauko pavadinimas + „DESC“
Kitas
Rūšiuoti: = Stulpelis. Laukas. FieldName + 'ASC';
galas;
galas;
Aukščiau pateiktas kodas naudojamas įvestos konstantos išsaugoti anksčiau pasirinkto stulpelio vertę rūšiavimo tvarka.