danke yankee,
hab das ganze mal noch um evtl. angehängten Objekte erweitert und das Speicherleck entfernt (temporäre Stringlisten werden erzeugt aber nicht freigegeben).
sollte zumindest eins sein, habs jetzt nicht mit fastmm probiert, aber es kommt keine
Exception beim free...
Delphi-Quellcode:
procedure SortStringGrid(thegrid: TStringGrid; const col: integer);
var rows: TList;
i,j: integer;
tmp: TStrings;
begin
rows :=TList.Create;
rows.Capacity :=thegrid.RowCount-thegrid.fixedrows;
for i:=theGrid.fixedrows to thegrid.RowCount -1 do
begin
tmp :=TStringList.Create;
for j:=0 to thegrid.ColCount-1 do
tmp.AddObject(thegrid.cells[j,i],thegrid.Objects[j,i]);
//tmp.AddStrings(thegrid.Rows[i]);
thegrid.Rows[i].Clear;
rows.Add(tmp);
end;
rows.Sort(CompareStringGridRows);
for i:=thegrid.fixedrows to thegrid.RowCount -1 do
begin
//thegrid.Rows[i].Assign(rows[i-thegrid.fixedrows]);
for j:=0 to thegrid.ColCount-1 do
begin
thegrid.Cells[j,i]:=TStringlist(rows[i-thegrid.fixedrows]).Strings[j];
thegrid.Objects[j,i]:=TStringlist(rows[i-thegrid.fixedrows]).Objects[j];
end;
TStringlist(rows[i-thegrid.fixedrows]).free;
end;
rows.Free;
end;
wenn ich jetzt keinen Schusselfehler gemacht habe, sollte es so hinhauen (kann das mit den Objekten jetzt nicht so auf die Schnelle testen). Teste das spätestens, wenn ichs in den
DFM-Editor einbaue
baue mir erstmal noch eine Routine, um einen Pfeil auf die entsprechende Spalte zu malen...
//edit: das komplette Testproggy inkl. Ownerdraw und Pfeil (geht vielleicht noch schöner
) im Anhang für interessierte
Gruß Frank