Einzelnen Beitrag anzeigen

War10ck

Registriert seit: 20. Dez 2010
5 Beiträge
 
Delphi 2010 Architect
 
#1

StringGrid Sortieren

  Alt 29. Sep 2011, 14:12
Hallo,
ich hoffe ihr könnt mir helfen. Ich habe ein StringGrid mit n Zeilen und 6 Reihen.
In Reihe drei Sind Daten des Formats (TT.MM.JJJJ) eingetragen. Mein Ziel ist es das gesammte StringGrid entsprechend aufsteigend oder absteigend nach den Daten zu sortieren.

Ich habe im Internet bereits eine Procedure gefunden und diese etwas abgeändert:

Delphi-Quellcode:
procedure TForm1.Button9Click(Sender: TObject);
var
 i:Integer;
 tmpDatum: TDate;
 tmpString: String;
 j,m,t: Word;
 List: TSTringList;
 begin
 List := TStringList.Create;
 List.clear;
 for I := 1 to (Stringgrid2.RowCount-1) do
 begin
  if StringGrid2.Cells[2,i] = 'then break;
  tmpDatum := StrToDate(StringGrid2.Cells[2,i]);
  tmpString := FormatDateTime('YYYYMMdd',tmpDatum);
  List.Add(tmpString);
 end;

 {Das Leeren des Grids dient nur der Übersichtlichkeit, ansonsten
können die Daten überschrieben werden.}

 for I := 1 to (Stringgrid2.RowCount) do
 StringGrid2.Cells[2,i] := '';

 {Sortiere die Liste}
 List.sorted := true;

 {Zurückschreiben der Werte in das Stringgrid}
 for I := 1 to (List.Count) do
 begin
  j := StrToInt(copy(List.Strings[i-1],1,4));
  m := StrToInt(copy(List.Strings[i-1],5,2));
  t := StrToInt(copy(List.Strings[i-1],7,2));
  tmpDatum := Encodedate(j,m,t);
  StringGrid2.Cells[2,i] := DateToStr(tmpDatum);
  Showmessage(ListNr.Text);
 end;

 end;
Damit wird Spalte 3 wunderbar nach Daten sortiert. Nur der Rest bleibt eben gleich. Wie mache ich nun weiter, dass nicht nur die 3. Spalte geändert wird, sondern auch die Daten der entsprechend anderen Reihen mit verschoben werden? Hoffe man kann mich verstehen und jemand hat einen Denkanstoß für mich.

MfG
War10ck
  Mit Zitat antworten Zitat