![]() |
Delphi-Version: 5
StringGrid nach Uhrzeit sortieren
Moin,
ich brauche mal einen Denkanstoß: Ich habe ein Stringgrid mit zwei Feldern: Feld 1: Name Feld 2: Uhrzeit im Format HH:MM Jetzt möchte ich die nächsten 5 Datensätze anzeigen lassen die uhrzeitmässig als nächstes kommen. Aber - mir fehlt da irgendwie jeder Ansatz wie ich die Sortierung machen kann. Kann mich da mal jemand in die richtige Richtung schupsen ? Danke ! Hans |
AW: StringGrid nach Uhrzeit sortieren
Hallo,
suchst Du Ansätze, wie man sortiert? ![]() oder wie Du das mit der Uhrzeit machen sollst? HH:MM läßt sich sogar wie ein String sortieren (wenn die Stunden immer zwei Ziffern haben) |
AW: StringGrid nach Uhrzeit sortieren
Jein - ich brauche einen Ansatz wie ich die Datensätze so sortiere das die nächsten Termine oben sind Hans. Aber das mit dem Tip die Uhrzeit immer zweistellig darzustellen war schon nicht schlecht :-)
Hans |
AW: StringGrid nach Uhrzeit sortieren
Hallo,
also Order By Desc ... Tip: Wenn Du dir das TAdvStringGrid von TMS leisten kannst, kauf es. Das hat bereits ein CustomSort drin. Ansonsten nimm einen der Quelltexte aus dem Link. Dann eine
Delphi-Quellcode:
Hier ist praktisch das Sortieren umgedreht.
function Compare-Methode(A, B: String): Integer;
begin if A<B then begin Result:= 1; Exit; end; if A>B then begin Result:= -1; Exit; end; Result:= 0; end; Bitte nicht über den miesen Code herziehen :=) Ist ja nur ein Bsp.. |
AW: StringGrid nach Uhrzeit sortieren
Die MemoryDataSets einiger Anbieter bieten auch eine OrderBy-Funktion an (Property mit Spaltennamen).
Und dazu statt dem StringGrid ein DBGrid verwenden. (bin mir grad nicht sicher, ob TClientDataSet sowas auch hat) Ansonsten: StringGrid.Rows[i].Text ist die ganze Daten-Zeile (alle Cell auf einmal kopieren, oder eben stattdessen noch eine Schleife über die gewünschten Cells), dann brauchst nur noch eine Schleife zum Vergliechen (BubbleSort ist leicht zu bauen) und jeweils entsprechend die Zeilen austauschen, welche nicht die richtige Reihenfolge haben.
Delphi-Quellcode:
PS: Die Methode von hoika nennt sich
for i1 := 0 do StringGrid.RowCount-2 do
for i2 := i1 + 1 do StringGrid.RowCount-1 do if AnsiSameStr(StringGrid.Cell[x, i1], StringGrid.Cell[x, i2]) < 0 then begin // x = DatumsSpalte ... oder >0 wenn andersrum Temp := StringGrid.Rows[i1].Text; StringGrid.Rows[i1].Text := StringGrid.Rows[i2].Text; StringGrid.Rows[i2].Text := Temp; end; ![]() Es ist echt erstaunlich, dass nach über 25 Jahren die VCL immernoch kein halbwegs nutzbares Grid beinhaltet. |
AW: StringGrid nach Uhrzeit sortieren
Nur mal so:
![]() |
AW: StringGrid nach Uhrzeit sortieren
Hi,
Memorydatasets gibts in Delphi kostenlos. TClientdataset ! Also ein entsprechendes TClientdataset backen, füllen und sortieren per Indexfunktion. Oder: Die Daten in passende Objekte hauen, diese in eine TObjectlist füllen und über die Methode Sort nach eigenem Gusto sortieren. Immer Daten (Objektliste / Dataset) und optische Repräsentation trenne ! Immer Daten sortieren, filtern, aggregieren... |
AW: StringGrid nach Uhrzeit sortieren
Hallo,
Zitat:
WordWrap, inplace Editor, Alignment, merged cells -> nüx kann das TStringGrid |
AW: StringGrid nach Uhrzeit sortieren
Nach der reinen Lehre sollten Daten von der Anzeige getrennt sein, also sollte das vorhandene Grid reichen.
Wenn dann die Daten dann noch in einer Liste sind, dann kommt/kommen noch Sortierroutine(n) dazu und man hat alles was man braucht. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 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