| 
   
    | ...ein Stringgrid sortieren? |   
    | Autor: 
      Christian Ebenegger |  | [ Tip ausdrucken ] |  |  |  
 
 
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);const
 // Define the Separator
 TheSeparator = '@';
 var
 CountItem, I, J, K, ThePosition: integer;
 MyList: TStringList;
 MyString, TempString: string;
 begin
 // Give the number of rows in the StringGrid
 CountItem := GenStrGrid.RowCount;
 //Create the List
 MyList        := TStringList.Create;
 MyList.Sorted := False;
 try
 begin
 for I := 1 to (CountItem - 1) do
 MyList.Add(GenStrGrid.Rows[I].Strings[ThatCol] + TheSeparator +
 GenStrGrid.Rows[I].Text);
 //Sort the List
 Mylist.Sort;
 
 for K := 1 to Mylist.Count do
 begin
 //Take the String of the line (K – 1)
 MyString := MyList.Strings[(K - 1)];
 //Find the position of the Separator in the String
 ThePosition := Pos(TheSeparator, MyString);
 TempString  := '';
 {Eliminate the Text of the column on which we have sorted the StringGrid}
 TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
 MyList.Strings[(K - 1)] := '';
 MyList.Strings[(K - 1)] := TempString;
 end;
 
 // Refill the StringGrid
 for J := 1 to (CountItem - 1) do
 GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
 end;
 finally
 //Free the List
 MyList.Free;
 end;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 // Sort the StringGrid1 on the second Column
 // StringGrid1 nach der 1. Spalte sortieren
 SortStringGrid(StringGrid1, 1);
 end;
 
 
 
   
   
    | 
         
          | Bewerten Sie diesen Tipp: |  |  |