Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Spezielle Sortierung in der TListbox
Bungo - Di 22.03.05 15:03
Titel: Spezielle Sortierung in der TListbox
Guden erstmal!
Ich müsste in einer Listbox die Daten so ordnen das sie ab dem heutigen Datum geordnet werden.
Also erst den 22.3.05, dann den 23.3.05, jedoch sollte die Jahreszahl keine Rolle spielen!
listbox1.Sorted:=true; funzt ja leider net...
Thx for help schonmal!
MfG Bungo
Moderiert von
Tino: Titel geändert.
delfiphan - Di 22.03.05 15:10
:idea: Wenn du statt einer Listbox eine Listview nehmen würdest, könntest du den Event OnCompare nutzen.
Bungo - Di 22.03.05 15:16
delfiphan hat folgendes geschrieben: |
| :idea: Wenn du statt einer Listbox eine Listview nehmen würdest, könntest du den Event OnCompare nutzen. |
Mhhh, hab jetzt grad seit paar Monaten delphi... hab noch nie mit einer Listview gearbeitet!
Und die Listbox ist schon an sehr vielen stellen eingebunden...
Geht das mit dem datum prinzipiell gra nicht, oder ist es nur kompliziert?
Sprint - Di 22.03.05 15:38
Bungo hat folgendes geschrieben: |
| Geht das mit dem datum prinzipiell gra nicht, oder ist es nur kompliziert? |
Doch natürlich geht das. Du schreibst dir eine eigene Funktion, die den neuen String in die ListBox schreiben soll. In dieser Funktion bestimmst du mit Insert wo der String hin soll. Texte kannst du z.B. mit CompareStr oder CompareText vergleichen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.AddToListBox(ListBox: TListBox; const S: String); var I: Integer; begin
with ListBox.Items do begin for I := 0 to Count - 1 do begin if CompareText(S, Strings[I]) < 0 then begin Insert(I, S); Exit; end; end; Add(S); end;
end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); begin
AddToListBox(ListBox1, 'Test'); AddToListBox(ListBox1, 'ABC'); AddToListBox(ListBox1, 'basd'); AddToListBox(ListBox1, 'aa');
end; |
delfiphan - Di 22.03.05 15:51
Wenn die ListBox schon Einträge drin hat, und du diese sortieren willst, würde ich allerdings Quicksort nehmen.
Die Quicksort Routine kannst du aus der Source von TStringList entnehmen. Oder du kannst den Inhalt der ListBox zuerst in eine TStringList kopieren, dort sortieren, und danach wieder zurückkopieren. Das ginge dann etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function MySort(List: TStringList; Index1, Index2: Integer): Integer; begin end;
Var List : TStringList; begin List := TStringList.Create; with List do try Assign(ListBox.Items); CustomSort(MySort); ListBox.Items.Assign(List); finally Free; end; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!