Delphi DBGrid je tako močna komponenta, da jo verjetno uporabljate vsak dan, če razvijate aplikacije, ki temeljijo na podatkih. Spodaj si bomo ogledali, kako dodati nekaj dodatnih funkcij v svoje baze podatkov, ki jih bodo uporabniki zagotovo imeli radi.
Po konceptih, opisanih v Vodnik za začetnike pri programiranju podatkovnih baz Delphi, spodaj primeri uporabljajo komponente ADO (AdoQuery / AdoTable povezan z ADOConnection, DBGrid povezan z AdoQuery prek DataSource) za prikaz zaslona zapisi iz tabele baze podatkov v komponenti DBGrid.
Vsa imena komponent so ostala, ko jih je Delphi poimenoval, ko so jih spustili na obrazec (DBGrid1, ADOQuery1, AdoTable1 itd.).
Miška se pomika po naslovu DBGrid
Najprej si oglejmo, kako spremeniti kazalec miške, ko se premika po naslovu območja DBGrid. Vse, kar morate storiti, je dodati kodo v dogodek OnMouseMove za komponento DBGrid.
Spodnja koda preprosto uporablja lastnost MouseCoord komponente DBGrid za "izračun", kje je kazalec miške. Če je nad naslovnim območjem DGBrid, je pt.y enak 0, kar je prva vrstica v DBGridu (naslovno polje prikazuje naslove stolpcev / polj).
postopek TForm1.DBGrid1MouseMove
(Pošiljatelj: TObject; Shift: TShiftState; X, Y: Integer);
var
pt: TGridcoord;
začeti
pt: = DBGrid1.MouseCoord (x, y);
če pt.y = 0 torej
DBGrid1.Cursor: = crHandPoint
drugo
DBGrid1.Cursor: = crDefault;
konec;
Razvrstite po stolpcu Kliknite in spremenite pisavo naslova stolpca
Če uporabljate ADO pristop k razvoju podatkovnih baz Delphi in želite razvrstiti zapise v naboru podatkov, morate nastaviti lastnost Razvrščanje vašega AdoDataset (ADOQuery, AdoTable).
Lastnost Razvrsti je vrednost najširšega niza, ki označuje del "ORDER BY" standardne poizvedbe SQL. Seveda vam ni treba pisati poizvedbe SQL, da bi lahko uporabljali lastnost Razvrsti. Preprosto nastavite lastnost Razvrščanje na ime posameznega polja ali na seznam ločenih z vejicami vej, vsako po vrstnem redu razvrščanja.
Tu je primer:
ADOTable1.Sort: = 'Leto DESC, ArticleDate ASC'
Dogodek OnTitleClick komponente DBGrid vsebuje parameter Stolpec, ki označuje stolpec, na katerega je uporabnik kliknil. Vsak stolpec (objekt vrste TColumn) ima lastnost polja, ki označuje polje (TField), ki ga predstavlja stolpec in polje v lastnosti FieldName vsebuje ime polja v osnovni podlagi nabor podatkov.
Zato lahko za razvrščanje nabora podatkov ADO po polju / stolpcu uporabite preprosto vrstico:
s TCustomADODataSet (DBGrid1.DataSource. DataSet)
Razvrsti: = Stolpec. Polje. Ime polja; // + 'ASC' ali 'DESC'
Spodaj je koda za ravnatelj OnTitleClick, ki razvršča zapise po kliku stolpca. Koda kot vedno razširja idejo.
Najprej želimo na nek način označiti stolpec, ki se trenutno uporablja za vrstni red razvrščanja. Nato, če kliknemo na naslov stolpca in je nabor podatkov že razvrščen s tem stolpcem, želimo spremeniti vrstni red razvrščanja iz ASC (naraščajoče) v DESC (padajoč) in obratno. Na koncu, ko razvrstimo nabor podatkov po drugem stolpcu, želimo znamko odstraniti iz prej izbranega stolpca.
Zaradi enostavnosti, da označimo stolpec, ki "razvrsti" zapise, preprosto spremenimo slog pisave naslova stolpca v Bold in ga odstranimo, ko bo nabor podatkov razvrščen z drugim stolpcem.
postopek TForm1.DBGrid1TitleClick (stolpec: TColumn);
{$ J +}konst PrejšnjaColumnIndex: celo število = -1;
{$ J-}
beginif DBGrid1.DataSource. DataSet je TCustomADODataSet potem TCustomADODataSet (DBGrid1.DataSource. DataSet) dobegintry
DBGrid1.Column [PreviousColumnIndex] .title. Pisava. Slog: =
DBGrid1.Column [PreviousColumnIndex] .title. Pisava. Slog - [fsBold];
exceptend;
Stolpec.title. Pisava. Slog: =
Stolpec.title. Pisava. Slog + [fsBold];
PrejšnjaColumnIndex: = Stolpec. Kazalo;
če (Pos (stolpec). Polje. Ime polja, razvrsti) = 1)
in (Pos ('DESC', razvrsti) = 0) torej
Razvrsti: = Stolpec. Polje. FieldName + 'DESC'
drugo
Razvrsti: = Stolpec. Polje. FieldName + 'ASC';
konec;
konec;
Zgornja koda uporablja tipkane konstante za ohranitev vrednosti prej "izbranega" stolpca za vrstni red.