![]() |
DBGrid sortieren bei Titel-Klick
Ich würde gern mein Grid bei eimem Klick auf die Spalte der Titelzeile entsprechend sortieren lassen. Leider gibt es ja beim Grid nur dass Ereignis OnClickTitle. Bei dem Ereignis ist es ja egal auf welche Spate ich Klick. Ich kann also nicht entscheiden, sortiere ich nach Spalte A oder nach Spalte B oder nach Spalte C. Kann mir wer weiterhelfen?
|
Re: DBGrid sortieren bei Titel-Klick
Delphi-Quellcode:
In Column steht doch die Spalte.
Type
TDBGridClickEvent = procedure (Column: TColumn) of object; |
Re: DBGrid sortieren bei Titel-Klick
Hast Du schon nach
![]() |
Re: DBGrid sortieren bei Titel-Klick
Danke für die schnelle Hilfe. Ich habe unter Grid sotieren gesucht und nichts passendes gefunden.
|
Re: DBGrid sortieren bei Titel-Klick
Und da ich hier drauf sogar eine passende antwort habe:
Delphi-Quellcode:
P.S.
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin if ADODataSet1.Active then begin ADODataSet1.Close; end; if column.title.caption = 'Nr.' then begin if not SortierID then begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY ID ASC'; SortierID := True; end else begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY ID DESC'; SortierID := False; end; end else if Column.Title.Caption = 'Datum' then begin if not SortierDatum then begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Datum, Zweck, Preis ASC'; SortierDatum := True; end else begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Datum DESC, Zweck DESC, Preis DESC'; SortierDatum := False; end; end else if Column.Title.Caption = 'Betrag' then begin if not SortierPreis then begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Preis ASC'; SortierPreis := True; end else begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Preis DESC'; SortierPreis := False; end; end else if Column.Title.Caption = 'Zweck' then begin if not SortierZweck then begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Zweck, Datum, Preis'; SortierZweck := True; end else begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Zweck DESC, Datum DESC, Preis DESC'; SortierZweck := False; end; end else if Column.Title.Caption = 'Kommentar' then begin if not SortierKommentar then begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Kommentar ASC'; SortierKommentar := True; end else begin ADODataSet1.CommandText := 'SELECT * from Finanzen ORDER BY Kommentar DESC'; SortierKommentar := False; end; end else begin ADODataSet1.CommandText := 'Select * from Finanzen'; ADODataSet1.open; exit; end; ADODataSet1.open; end; SortierKommentar, Sortier... das sind globale Variablen die zu beginn des Programms als False definiert wurden :zwinker: Finanzen, so heißt meine Tabelle. zwar nen bissel umständlich und aufwendig programmiert, aber dafür Anfängertauglich ^^ |
Re: DBGrid sortieren bei Titel-Klick
Zitat:
Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var SQL: string; begin SQL:='SELECT * FROM [mytable] ORDER BY ['+Column.Field.FieldName+']'; // ... end; |
Re: DBGrid sortieren bei Titel-Klick
Aber mit der Möglichkeit, auf- und absteigend zu sortieren. Das hat dein Code nicht ;)
Ich hab mir damals ne Funktion zum SQL-Query-String-Zusammenbasteln gebaut. |
Re: DBGrid sortieren bei Titel-Klick
Zitat:
Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var SQL: string; begin SQL:='SELECT * FROM [mytable] ORDER BY ['+Column.Field.FieldName+']'; if (oldcolumn=Column) then SQL:=SQL+' DESC'; oldcolumn:=column; // ... end; |
Re: DBGrid sortieren bei Titel-Klick
Bisschen kürzer:
Delphi-Quellcode:
Wobei ein "Umschalten" so wohl auch nicht ginge, da müsste man sich den alten Zustand merken.
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
const Orders: array[Boolean] of string = ('',' DESC'); var SQL: string; begin SQL:=Format('SELECT * FROM [mytable] ORDER BY [%s]%s',[Column.Field.FieldName,Orders[oldcolumn=Column]]); oldcolumn:=column; // ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz