Rekordok rendezése a Delphi DBGrid-ben oszlopcím szerint

Delphi DBGrid olyan erős elem, amelyet valószínűleg minden nap használ, ha adattudatos alkalmazásokat fejleszt. Az alábbiakban megvizsgáljuk, hogyan lehet még néhány olyan szolgáltatást hozzáadni az adatbázis-alkalmazásokhoz, amelyeket a felhasználók biztosan szeretnek.

A Kezdő útmutató a Delphi adatbázis-programozáshoz, az alábbi példák ADO-összetevőket használnak (AdoQuery / AdoTable csatlakoztatva az ADOConnection-hez, DBGrid csatlakoztatva az AdoQuery-hez DataSource-n keresztül) a feljegyzések adatbázis adatbázis táblából egy DBGrid összetevőben.

Az összes alkotóelem megmaradt, ahogyan Delphi elnevezte őket, amikor az űrlapra dobták őket (DBGrid1, ADOQuery1, AdoTable1 stb.).

Az egér a DBGrid címsor felett mozog

Először nézzük meg, hogyan lehet megváltoztatni az egérmutatót, miközben az áthalad a DBGrid címsorán. Csak annyit kell tennie, hogy hozzáadja a kódot a DBGrid összetevő OnMouseMove eseményéhez.

Az alábbi kód egyszerűen a DBGrid összetevő MouseCoord tulajdonságát használja az egérmutató kiszámításához. Ha a DGBrid címsor felett van, akkor a pt.y értéke 0, amely a DBGrid első sorában található (az oszlop / mező címeit megjelenítő címsor).

instagram viewer

eljárás TForm1.DBGrid1MouseMove
(Feladó: TObject; Shift: TShiftState; X, Y: egész szám);
var
pt: TGridcoord;
kezdődik
pt: = DBGrid1.MouseCoord (x, y);
ha pt.y = 0 azután
DBGrid1.Cursor: = crHandPoint
más
DBGrid1.Cursor: = crDefault;
vég;

Rendezés az oszlop szerint Kattintson és módosítsa az oszlop címe betűtípust

Ha az ADO megközelítést használja a Delphi adatbázis fejlesztéséhez, és szeretné rendezni a rekordokat az adatkészletben, be kell állítania az AdoDataset Rendezés tulajdonságát (ADOQuery, AdoTable).

A Rendezés tulajdonság az a szélessávú érték, amely jelzi a szokásos SQL lekérdezés "RENDELÉS VÉGZÉSE" részét. Természetesen nem kell megírnia az SQL lekérdezést a Sort tulajdonság használatához. Egyszerűen állítsa a Rendezés tulajdonságot egyetlen mező nevére vagy vesszővel elválasztott mezők listájára, mindegyik a rendezési sorrend szerint.

Íme egy példa:

ADOTable1.Sort: = 'Év DESC, ArticleDate ASC'

A DBGrid összetevő OnTitleClick eseményének oszlopparamétere van, amely jelzi azt az oszlopot, amelyre a felhasználó rákattintott. Minden oszlopnak (TColumn típusú objektum) van egy Mező tulajdonsága, amely jelzi a mezőt (TField), amelyet jelöl az Oszlop és a Mezõ a FieldName tulajdonságban a mögöttes mezõ nevét tartalmazza adatbázisba.

Ezért egy ADO adatkészlet mező / oszlop szerinti rendezéséhez egy egyszerű sort lehet használni:

a TCustomADODataSet segítségével (DBGrid1.DataSource. DataSet)
Rendezés: = Oszlop. Terület. Mező neve; // + 'ASC' vagy 'DESC'

Az alábbiakban látható az OnTitleClick páros kezelő kódja, amely oszlopra kattintással rendezi a rekordokat. A kód, mint mindig, kibővíti az ötletet.

Először valamilyen módon meg akarjuk jelölni az oszlopot, amelyet jelenleg a rendezési sorrendben használnak. Ezután, ha rákattintunk egy oszlopcímre, és az adatkészlet már az adott oszlop szerint van rendezve, meg akarjuk változtatni a rendezési sorrendet ASC (növekvő) és DESC (csökkenő), és fordítva. Végül, amikor az adatkészletet egy másik oszlop szerint rendezzük, el akarjuk távolítani a jelölést az előzőleg kiválasztott oszlopból.

Az egyszerűség kedvéért, ha meg szeretnénk jelölni az oszlopokat, amelyek "rendezik" a rekordokat, akkor egyszerűen megváltoztatjuk az oszlopcím betűstílusát Félkövérre, és eltávolítjuk, ha az adatkészlet egy másik oszlop alapján válogat.

eljárás TForm1.DBGrid1TitleClick (Oszlop: TC oszlop);
{$ J +}const PreviousColumnIndex: egész szám = -1;
{$ J-}
beginif DBGrid1.DataSource. DataSet jelentése TCustomADODataSet thenwith TCustomADODataSet (DBGrid1.DataSource. adatbázisba) dobegintry
DBGrid1.Columns [PreviousColumnIndex] PlayStation hivatalos magyarországi weboldala. Betűtípus. Stílus: =
DBGrid1.Columns [PreviousColumnIndex] PlayStation hivatalos magyarországi weboldala. Betűtípus. Stílus - [fsBold];
exceptend;
Column.title. Betűtípus. Stílus: =
Column.title. Betűtípus. Stílus + [fsBold];
PreviousColumnIndex: = Oszlop. Index;
ha (Poz. Terület. FieldName, Sort) = 1)
és (Poz ('DESC', Rendezés) = 0) azután
Rendezés: = Oszlop. Terület. FieldName + 'DESC'
más
Rendezés: = Oszlop. Terület. FieldName + 'ASC';
vég;
vég;

A fenti kód használja gépelt állandók az előzőleg "kiválasztott" oszlop értékének megőrzése a rendezési sorrendben.

instagram story viewer