//对ListView进行排序, piCol表示列索引, pbAutoOrder表示是否自动排序
procedure SortListColumn(piCol: Integer; pbAutoOrder: Boolean);
function CustomSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer; stdcall;
begin
case ParamSort of
0:
begin
if AtoZOrder then
Result := lstrcmp(PChar(TListItem(Item1).Caption), PChar(TListItem(Item2).Caption))
else
Result := -lstrcmp(PChar(TListItem(Item1).Caption), PChar(TListItem(Item2).Caption));
end
else
begin
if AtoZOrder then
Result := lstrcmp(PChar(TListItem(Item1).SubItems[ParamSort-1]), PChar(TListItem(Item2).SubItems[ParamSort-1]))
else
Result := -lstrcmp(PChar(TListItem(Item1).SubItems[ParamSort-1]), PChar(TListItem(Item2).SubItems[ParamSort-1]));
end;
end;
end;
begin
if piCol in [0..lvDetail.Columns.Count - 1] then
begin
if (FCurrentCol = piCol) and (pbAutoOrder) then
AtoZOrder := not AtoZOrder
else
FCurrentCol := piCol;
lvDetail.CustomSort(@CustomSortProc, FCurrentCol);
ResetDetailLVHeadPicture;
end;
end;