对ListView组进行排序?
发布时间:2020-12-15 09:33:46 所属栏目:大数据 来源:网络整理
导读:在ListView中,项目按组“BGroup”,“CGroup”和“DGroup”(这些是组头)分组.现在,当我向ListView添加一个新项目并为该项目分配一个标题为“AGroup”的新组时,组“AGroup”总是插在组的末尾;所以新的组顺序是:BGroup,CGroup,DGroup,AGroup.那么如何才能按正
在ListView中,项目按组“BGroup”,“CGroup”和“DGroup”(这些是组头)分组.现在,当我向ListView添加一个新项目并为该项目分配一个标题为“AGroup”的新组时,组“AGroup”总是插在组的末尾;所以新的组顺序是:BGroup,CGroup,DGroup,AGroup.那么如何才能按正确的字母顺序对组进行排序?顺序应为:AGroup,BGroup,DGroup.
解决方法
你可以使用
ListView_SortGroups 宏,例如这个宏希望你有自己的比较函数,由
LVGroupCompare 函数原型定义.在下面的代码中,组使用
CompareText 函数按
Header 属性排序,但现在您可以构建自己的比较.
忘记注意;无论你传递给 由于没有按组ID查找列表视图组的直接方法,因此我将对 type TListGroups = class(ComCtrls.TListGroups) public function FindItemByGroupID(GroupID: Integer): TListGroup; end; implementation function TListGroups.FindItemByGroupID(GroupID: Integer): TListGroup; var I: Integer; begin for I := 0 to Count - 1 do begin Result := Items[I]; if Result.GroupID = GroupID then Exit; end; Result := nil; end; 然后你可以用这种方式在 function LVGroupCompare(Group1_ID,Group2_ID: Integer; pvData: Pointer): Integer; stdcall; var Item1: TListGroup; Item2: TListGroup; Groups: TListGroups; begin Result := 0; Groups := TListGroups(pvData); Item1 := Groups.FindItemByGroupID(Group1_ID); Item2 := Groups.FindItemByGroupID(Group2_ID); if Assigned(Item1) and Assigned(Item2) then Result := CompareText(Item1.Header,Item2.Header); end; procedure TForm1.Button1Click(Sender: TObject); var Item: TListItem; Group: TListGroup; begin Group := ListView1.Groups.Add; Group.Header := 'AGroup'; Item := ListView1.Items.Add; Item.Caption := 'Item X'; Item.GroupID := Group.ID; ListView_SortGroups(ListView1.Handle,LVGroupCompare,ListView1.Groups); end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- TurboPower Async Professional 在Delphi2010及D
- osx – 如何从Delphi调用NSBeep
- Perl入门(一)Perl的基本类型及运算符
- Perl Learning - 2 (If(), While(), Chomp(), <S
- 一个新颖简便的golang orm . 容易比较容易上手。
- Go语言使用HTTP包创建WEB服务器的方法
- 105. Construct Binary Tree from Preorder and
- vb.net – 如何在Visual Basic中实现类构造函数?
- 如何在Delphi 2010中更改TWICImage的像素格式
- 强制Perl在以exec()结尾时调用END子例程?
热点阅读