ListView可以做到。
Var
m_bSort : Boolean=False;
function
CustomSortProc(Item1,Item2:TListItem;ParamSort:integer): integer; stdcall;
var
txt1,txt2:string;
begin
if ParamSort <>0 then
begin
txt1 := Item1.SubItems.Strings[ParamSort-1];
txt2 := Item2.SubItems.Strings[ParamSort-1];
if m_bSort then
begin
Result := CompareText(txt1,txt2);
end
else
begin
Result := -CompareText(txt1,txt2);
end;
end
else
begin
if m_bSort then
begin
Result := CompareText(Item1.Caption,Item2.Caption);
end
else
begin
Result := -CompareText(Item1.Caption,Item2.Caption);
end;
end;
end;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
var
i : Integer;
Str1List,Str2List : TStringItem;
begin
ListView1.CustomSort(@CustomSortProc,
Column.Index);
m_bSort := not m_bSort;
end;