Das habe ich (und zumindest Sir Rufo auch) so nicht verstanden. Vielmehr geht es darum, nach Spalte 2 zu sortieren, aber die Zugehörigkeit zu den anderen beiden Werten nicht zu verlieren. Und selbst wenn nach mehreren Spalten in einer bestimmten Reihenfolge sortiert werden soll, erweitert man den Callback entsprechend und fertig.
Delphi-Quellcode:
function CompareFunc(Item1, Item2: PRec): integer;
begin
Result := AnsiCompareStr(Item1^.Col2, Item2^.Col2);
if Result = 0 then
Result := AnsiCompareStr(Item1^.Col1, Item2^.Col1);
if Result = 0 then
Result := AnsiCompareStr(Item1^.Col3, Item2^.Col3);
end;