Kā kārtot ierakstus Delphi DBGrid pēc kolonnas nosaukuma

Delphi DBGrid ir tik spēcīgs komponents, ka jūs to, iespējams, izmantojat katru dienu, ja izstrādājat datu zinošas lietojumprogrammas. Zemāk mēs apskatīsim, kā datu bāzes lietojumprogrammām pievienot vēl dažas funkcijas, kuras jūsu lietotāji noteikti mīl.

Ievērojot jēdzienus, kas aprakstīti Iesācēju ceļvedis Delphi datu bāzu programmēšanai, šādos piemēros tiek izmantoti ADO komponenti (AdoQuery / AdoTable savienots ar ADOConnection, DBGrid savienots ar AdoQuery, izmantojot DataSource), lai parādītu ierakstus no datu bāzes tabulas DBGrid komponentā.

Visi komponentu nosaukumi tika atstāti, jo Delphi tos nosauca, kad nometās veidlapā (DBGrid1, ADOQuery1, AdoTable1 utt.).

Pele pārvietojas pa DBGrid virsrakstu apgabalu

Vispirms redzēsim, kā mainīt peles rādītāju, kamēr tas pārvietojas pa DBGrid nosaukuma apgabalu. Viss, kas jums jādara, ir pievienot kodu DBGrid komponenta OnMouseMove notikumam.

Zemāk esošais kods vienkārši izmanto DBGrid komponenta MouseCoord rekvizītus, lai "aprēķinātu" peles rādītāju. Ja tas atrodas virs DGBrid nosaukuma apgabala, pt.y ir vienāds ar 0, kas ir pirmā rinda DBGrid (nosaukuma apgabals, kurā attēloti kolonnu / lauku nosaukumi).

instagram viewer

procedūra TForm1.DBGrid1MouseMove
(Sūtītājs: TObject; Shift: TShiftState; X, Y: vesels skaitlis);
var
pt: TGridcoord;
sākt
pt: = DBGrid1.MouseCoord (x, y);
ja pt.y = 0 tad
DBGrid1.Cursor: = crHandPoint
cits
DBGrid1.Cursor: = crDefault;
beigas;

Kārtot pēc kolonnas Noklikšķiniet un mainiet kolonnas nosaukuma fontu

Ja jūs izmantojat ADO pieeju Delphi datu bāzes izstrādei un vēlaties kārtot ierakstus datu kopā, jums jāiestata sava AdoDataset īpašums Kārtot (ADOQuery, AdoTable).

Īpašums Kārtot ir plaša virkne, kas norāda standarta SQL vaicājuma daļu “PASŪTĪT PĒC”. Protams, jums nav jāraksta SQL vaicājums, lai varētu izmantot īpašumu Kārtot. Vienkārši iestatiet reklamēšanas kārtošanu uz viena lauka nosaukumu vai ar komatu atdalītu lauku sarakstu, katrs ievērojot kārtošanas secību.

Šis ir piemērs:

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

Komponenta DBGrid OnTitleClick notikumam ir Kolonnas parametrs, kas norāda Kolonnu, uz kuras lietotājs ir noklikšķinājis. Katrā kolonnā (TColumn tipa objekts) ir rekvizīts Lauks, kas norāda lauku (TField), kuru attēlo kolonna un lauks tā laukā Nosaukums satur tā lauka nosaukumu, kas atrodas pamatā datu kopa.

Tāpēc, lai kārtotu ADO datu kopu pēc lauka / kolonnas, var izmantot vienkāršu līniju:

ar TCustomADODataSet (DBGrid1.DataSource. DataSet) darīt
Kārtot: = kolonna. Lauks. LauksNosaukums; // + 'ASC' vai 'DESC'

Zemāk ir kods OnTitleClick pat apstrādātājam, kurš sakārto ierakstus pēc kolonnas klikšķa. Kods, kā vienmēr, paplašina ideju.

Pirmkārt, mēs kaut kādā veidā vēlamies atzīmēt kolonnu, kuru pašlaik izmanto kārtošanas secībai. Pēc tam, ja mēs noklikšķinām uz kolonnas nosaukuma un datu kopa jau ir sakārtota šajā kolonnā, mēs vēlamies mainīt kārtošanas secību no ASC (augoši) uz DESC (dilstoši) un otrādi. Visbeidzot, sakārtojot datu kopu pēc citas kolonnas, mēs vēlamies noņemt atzīmi no iepriekš atlasītās kolonnas.

Vienkāršības labad, lai atzīmētu kolonnu, kas "sakārto" ierakstus, mēs vienkārši mainīsim kolonnas nosaukuma fonta stilu uz Bold un noņemsim to, kad datu kopa tiks sakārtota, izmantojot citu kolonnu.

procedūra TForm1.DBGrid1TitleClick (kolonna: TColumn);
{$ J +}const PreviousColumnIndex: vesels skaitlis = -1;
{$ J-}
iesākums DBGrid1.DataSource. DataSet ir TCustomADODataSet pēc tam TCustomADODataSet (DBGrid1.DataSource. DataSet) dobegintry
DBGrid1.Columns [PreviousColumnIndex] .title. Fonts. Stils: =
DBGrid1.Columns [PreviousColumnIndex] .title. Fonts. Stils - [fsBold];
izņēmums;
Kolonna.title. Fonts. Stils: =
Kolonna.title. Fonts. Stils + [fsBold];
PreviousColumnIndex: = Kolonna. Indekss;
ja (Poz. Lauks. FieldName, Sort) = 1)
un (Poz. ('DESC', Kārtot) = 0) tad
Kārtot: = kolonna. Lauks. Lauka nosaukums + “DESC”
cits
Kārtot: = kolonna. Lauks. LauksNosaukums + 'ASC';
beigas;
beigas;

Iepriekš minētais kods izmanto drukātas konstantes lai saglabātu iepriekš atlasītās kolonnas vērtību kārtošanas secībai.

instagram story viewer