Ako triediť záznamy v Delphi DBGrid podľa názvu stĺpca

click fraud protection

Delphi DBGrid je taký výkonný komponent, že ho pravdepodobne používate každý deň, ak vyvíjate aplikácie založené na údajoch. Ďalej sa pozrieme na to, ako pridať do databázových aplikácií ďalšie funkcie, ktoré používatelia určite milujú.

Podľa koncepcií opísaných v Sprievodca pre začiatočníkov k programovaniu databázy Delphi, príklady uvedené nižšie používajú komponenty ADO (AdoQuery / AdoTable pripojené k ADOConnection, DBGrid pripojené k AdoQuery cez DataSource) na zobrazenie záznamy z databázovej tabuľky v komponente DBGrid.

Všetky názvy komponentov zostali tak, ako ich Delphi pomenoval, keď boli vynechané vo formulári (DBGrid1, ADOQuery1, AdoTable1 atď.).

Myš sa pohybuje nad oblasťou názvu DBGrid

Najprv sa pozrime, ako zmeniť ukazovateľ myši, keď sa pohybuje nad oblasťou názvu DBGrid. Musíte iba pridať kód do udalosti OnMouseMove pre komponent DBGrid.

Nižšie uvedený kód jednoducho používa vlastnosť MouseCoord komponenty DBGrid na "výpočet", kde sa nachádza ukazovateľ myši. Ak je to nad oblasťou názvu DGBrid, pt.y sa rovná 0, čo je prvý riadok v DBGrid (oblasť názvu zobrazujúca názvy stĺpcov / polí).

instagram viewer

procedúra TForm1.DBGrid1MouseMove
(Odosielateľ: TObject; Shift: TShiftState; X, Y: celé číslo);
var
pt: TGridcoord;
začať
pt: = DBGrid1.MouseCoord (x, y);
ak pt.y = 0 potom
DBGrid1.Cursor: = crHandPoint
inak
DBGrid1.Cursor: = crDefault;
koniec;

Zoradiť podľa stĺpca Kliknite a zmeňte písmo názvu stĺpca

Ak používate prístup ADO na vývoj databázy Delphi a chcete zoradiť záznamy v datasete, musíte nastaviť vlastnosť Sort vo vašom AdoDataset (ADOQuery, AdoTable).

Vlastnosť Triedenie je najširšia hodnota označujúca časť štandardného dotazu „OBJEDNÁVKA BY“. Aby ste mohli používať vlastnosť Sort, samozrejme nemusíte písať dotaz SQL. Jednoducho nastavte vlastnosť zoradenia na názov jedného poľa alebo na zoznam polí oddelených čiarkami, pričom každé z nich nasleduje podľa poradia zoradenia.

Tu je príklad:

ADOTable1.Sort: = 'Year DESC, ArticleDate ASC'

Udalosť OnTitleClick komponentu DBGrid má parameter stĺpec označujúci stĺpec, na ktorý používateľ klikol. Každý stĺpec (objekt typu TColumn) má vlastnosť Field označujúcu pole (TField) reprezentované stĺpec a pole vo svojej vlastnosti FieldName obsahuje názov poľa v podklade dátovej sady.

Preto na zoradenie súboru údajov ADO podľa poľa / stĺpca možno použiť jednoduchý riadok:

s TCustomADODataSet (DBGrid1.DataSource. DataSet) do
Zoradiť: = Stĺpec. Lúka. Názov poľa; // + „ASC“ alebo „DESC“

Nižšie je uvedený kód pre obslužný program OnTitleClick, ktorý triedi záznamy podľa kliknutia v stĺpci. Kód, ako vždy, rozširuje myšlienku.

Najprv chceme nejakým spôsobom označiť stĺpec, ktorý sa v súčasnosti používa na zoradenie. Ďalej, ak klikneme na názov stĺpca a množina údajov je už v tomto stĺpci zoradená, chceme zmeniť poradie zoradenia z ASC (vzostupne) na DESC (zostupne) a naopak. Nakoniec, keď zoradíme dataset podľa iného stĺpca, chceme odstrániť značku z predtým vybraného stĺpca.

Kvôli jednoduchosti označíme stĺpec, ktorý „triedi“ záznamy, jednoducho zmeníme štýl písma názvu stĺpca na tučné písmo a odstránime ho, keď sa množina údajov triedi pomocou iného stĺpca.

procedúra TForm1.DBGrid1TitleClick (Stĺpec: TColumn);
{$ J +}const PreviousColumnIndex: integer = -1;
{$ J-}
beginif DBGrid1.DataSource. DataSet je TCustomADODataSet thenwith TCustomADODataSet (DBGrid1.DataSource. DataSet) dobegintry
DBGrid1.Columns [PreviousColumnIndex] .title. Písmo. Štýl: =
DBGrid1.Columns [PreviousColumnIndex] .title. Písmo. Štýl - [fsBold];
exceptend;
Column.title. Písmo. Štýl: =
Column.title. Písmo. Štýl + [fsBold];
PreviousColumnIndex: = Stĺpec. index;
ak (Poz. (Stĺpec. Lúka. Názov poľa, Zoradiť) = 1)
a (Poz ('DESC', Sort) = 0) potom
Zoradiť: = Stĺpec. Lúka. FieldName + 'DESC'
inak
Zoradiť: = Stĺpec. Lúka. FieldName + 'ASC';
koniec;
koniec;

Vyššie uvedený kód používa zadané konštanty aby sa zachovala hodnota predtým vybraného stĺpca pre zoradenie.

instagram story viewer