再问关于listview的点击表头排序功能(50分)

  • 主题发起人 主题发起人 stuwei
  • 开始时间 开始时间
S

stuwei

Unregistered / Unconfirmed
GUEST, unregistred user!
按以下代码,点击表头可以按字符串排序,但如果该列是整数或日期,那排序的意义就不同了
,应该如何实现呢?另外,怎样点一次按升序,再点一次就按降序排列呢?
下面是C++builder代码,请各位出主意,谢谢1!r
void __fastcall TFormPortComm::ListViewFilesCompare(TObject *Sender,
TListItem *Item1, TListItem *Item2, int Data, int &Compare)
{
if (ColumnToSort == 0)//如果比较第一列
Compare = CompareText(Item1->Caption,Item2->Caption);
else
{
int ix = ColumnToSort-1; //如果比较其他列
Compare = CompareText(Item1->SubItems->Strings[ix], Item2->SubItems->Strings[ix]);
}
 
自己写个CompareText()函数
 
维护一个数组或者列表,对应于Columns,如果值为1则表示当前为升序,如果为0则降序
当前为升序,在点击,就要降序,同时把值设为0,反之,也是一样

对于日期型,可以把日期型转化为标准格式YYYY-MM-DD,就可以当作字符串比较了
对于整数型,可以用什么标识以下,该栏是整数型,然后转化为整数进行比较,或者前面填0进行比较
 
同意 twos
 
twos说的有道理
谢谢各位
 
后退
顶部