请问如何在listview中,对column做排序。

wsf 2003-10-21 11:04:02
我用的是bcb5
...全文
28 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy1001 2003-10-21
  • 打赏
  • 举报
回复
你是要对列排序还是对行排序?
你还没有描述清楚问题呢
sfemil 2003-10-21
  • 打赏
  • 举报
回复
在窗体类中定义变量 int m_iColumnToSort

在listview的 OnColumnClick事件

m_iColumnToSort = Column->Index;
//排序方式
if(Column->Tag == otAsc) Column->Tag = otDesc;
else Column->Tag = otAsc;
TListView* pCurListView = (TListView*)Sender;
pCurListView->Items->BeginUpdate();
pCurListView->AlphaSort();
pCurListView->Items->EndUpdate();

在listview的 OnCompare 事件
if (m_iColumnToSort == 0)
Compare = CompareText(Item1->Caption,Item2->Caption);
else
{
int ix = m_iColumnToSort - 1;
Compare = CompareText(Item1->SubItems->Strings[ix], Item2->SubItems->Strings[ix]);
}
TListColumn* pCurLstColumn = ((TListView*)Sender)->Columns->Items[m_iColumnToSort];
if((ORDERTYPE)pCurLstColumn->Tag == otDesc)
{
Compare = -Compare;
}

说明:其中 ORDERTYPE是我自己定义的排序类别枚举变量
包含三个数值
otNone = 0,otAsc,otDesc

大致就是这样 看你是否可以编译通过,我经常使用。

ccrun.com 2003-10-21
  • 打赏
  • 举报
回复
没搞懂。你是要对列排序还是对行排序?
wsf 2003-10-21
  • 打赏
  • 举报
回复
楼上的,不行。我的意思是点击某列时,会排序
netsys2 2003-10-21
  • 打赏
  • 举报
回复
ListView1->SortType = stBoth;
wsf 2003-10-21
  • 打赏
  • 举报
回复
谢谢大家
hatumei 2003-10-21
  • 打赏
  • 举报
回复
来晚了,投个赞成票,同意sfemil(书生)
pzoon 2003-10-21
  • 打赏
  • 举报
回复
你要做什么

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧