您的位置:首页 > 编程语言 > Delphi

Delphi ListView排序

2012-01-06 23:12 537 查看

下面这种做法比较容易理解。可以参考一下,我一直是这样做的,效果很好   

    

var   m_bSort:   boolean=false;   //控制正反排序的变量   

    

//ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法   

function   CustomSortProc(Item1,   Item2:  TListItem;   ParamSort:   integer):  integer;   stdcall;   

var   txt1,txt2   :   string;   

begin   

      if   ParamSort  <>   0   then   begin   

         try

             txt1   :=   Item1.SubItems.Strings[ParamSort-1];

             txt2   :=   Item2.SubItems.Strings[ParamSort-1];

             if   m_bSort   then   begin   

                   Result   :=   CompareText(txt1,txt2);   

             end   else   begin   

                   Result   :=   -CompareText(txt1,txt2);   

             end;

      except

      end;

      end   else   begin   

             if   m_bSort   then   begin   

                   Result   :=   CompareText(Item1.Caption,Item2.Caption);   

             end   else   begin   

                   Result   :=  -CompareText(Item1.Caption,Item2.Caption);   

             end;   

      end;   

end;   

    

//注意,请在属性窗口中进行设置先找到Columns属性进行增加列头名称,再在事件窗口中找到onColumnClick增加

//.ListView1ColumnClick事件

procedure   TForm1.ListView1ColumnClick(Sender:  TObject;   

      Column:   TListColumn);   

begin   

     ListView1.CustomSort(@CustomSortProc,   Column.Index);   

      m_bSort   :=  not   m_bSort;   

end;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息