1] ListView中对Subitem的内容,控制排序方法1---简单文本排序 var ColumnToSort: Integer;The OnColumnClick event handler sets the global variable to indicate the column to sort and calls AlphaSort:procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin ColumnToSort := Column.Index; (Sender as TCustomListView).AlphaSort; end; The OnCompare event handler causes the list view to sort on the selected column:procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); var ix: Integer; begin if ColumnToSort = 0 then Compare := CompareText(Item1.Caption,Item2.Caption) else begin ix := ColumnToSort - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end;end;方法2---全部自定义排序 function CustomSortProc( Item1, Item2 : TListItem; lParam : LongInt ) : Integer; stdcall; begin if lParam >= 0 then //lParam中保存的是SubItem的Index begin result := -CompareText(Item1.SubItems.Strings[lParam], Item1.SubItems.Strings[lParam] ); end else result := 0; end;在ListView的ColumnClick事件响应方法中输入 CustomSort(@CustomSortProc, Column.Index );方法3 --- OnCompare Event OnColumnClick (Sender as TCustomListView).CustomSort( Nil , ColumnSelected );OnCompare Sort Impl
如果是 stData是按照其余的某一列,具体的列,你需要在在OnCompare事件里面指定,
OnCompare 的help里面有一个Example,我就不贴了。
连Delphi版都来了。
晕!
还是两个星星。
有一个完整的示例。
www.netgocn.com
var ColumnToSort: Integer;The OnColumnClick event handler sets the global variable to indicate the column to sort and calls AlphaSort:procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
end;
The OnCompare event handler causes the list view to sort on the selected column:procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer;
var Compare: Integer);
var
ix: Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;end;方法2---全部自定义排序
function CustomSortProc( Item1, Item2 : TListItem; lParam : LongInt ) : Integer; stdcall;
begin
if lParam >= 0 then //lParam中保存的是SubItem的Index
begin
result := -CompareText(Item1.SubItems.Strings[lParam],
Item1.SubItems.Strings[lParam] );
end else
result := 0;
end;在ListView的ColumnClick事件响应方法中输入
CustomSort(@CustomSortProc, Column.Index );方法3 --- OnCompare Event
OnColumnClick
(Sender as TCustomListView).CustomSort( Nil , ColumnSelected );OnCompare
Sort Impl
我几乎天天都来CSDN的,不过很少灌水了,潜水……
很多人的问题都在我的资料上面可以找到答案,他们不会检索……寒。
就是与AlphaSort相反的排序方法