Einzelnen Beitrag anzeigen

dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

StringGrid bei klick auf eine bestimme zelle sortieren

  Alt 9. Jan 2004, 15:17
hi!

wenn ich auf den spaltenkopf des stringgrids klicke soll diese spalte ähnlich einer listbox sortiert werden. den algorithmus zum sortieren habe ich schon:
Delphi-Quellcode:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
const
  TheSeparator = '@';
var
  CountItem, I, J, K, ThePosition: integer;
  MyList: TStringList;
  MyString, TempString: string;
begin
  CountItem := GenStrGrid.RowCount;
  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);
      Mylist.Sort;

      for K := 1 to Mylist.Count do
      begin
        MyString := MyList.Strings[(K - 1)];
        ThePosition := Pos(TheSeparator, MyString);
        TempString := '';
        TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
        MyList.Strings[(K - 1)] := '';
        MyList.Strings[(K - 1)] := TempString;
      end;

      for J := 1 to (CountItem - 1) do
        GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
    end;
  finally
    MyList.Free;
  end;
end;
und hier der aufruf. (befehl zum sortieren): SortStringGrid(StringGrid1, 0); hier wird jetzt spalte 0 sortiert. das klappt auch wunderbar. ich weiß nur nicht, wohin ich den befehl schreiben muss, damit bei nem klick auf den spaltenkopf diese spalte sortiert wird....


Gruß, dopeline
  Mit Zitat antworten Zitat