5个按纽对应ListView里面的5个列````点击按纽实现对应列的排序`````  这个该怎么实现``````  Delphi帮助里面只有实现一个列的排序问题````我按照上面的写的代码可以实现排序```但是都是实现一个的排序````点了一个按纽实现一列的排序之后```其他4个按纽点击就实现不了了`````

解决方案 »

  1.   

    对缓冲数据进行对应列排序  排序好之后ListView重新加载数据
      

  2.   


    NO ,只想实现单列排序````比如: 1按姓名排列就按姓的字母排列可以由A~Z也可以Z~A```3按年龄排列就按年龄由大到小排列也可以由小到大排列
      

  3.   

    procedure TForm1.lv1ColumnClick(Sender: TObject; Column: TListColumn
    begin
      ColumnToSort := Column.Index;
      (Sender as TCustomListView).AlphaSort;
    end;
    procedure TForm1.lv1Compare(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;感觉不需要重写吧````我用上面的Delphi帮助里面的代码能够实现排序```但必须点击ListView里面的ColumnHeaders```但我是要把ColumnHeaders隐藏了的`````想用其他能显示图片的 按纽来代替点击ColumnHeaders的排序功能`````
      

  4.   

    其实楼主没必要把ColumnHeaders隐藏掉,只须在每表中加载个小图片就可以达到目的了,顺序排序时用一种图标,倒序排序再换一种图标。
      

  5.   

    真正引起排序动作的是 ListView 的 AlphaSort 函数,和是否点击ListView的列头没有关系啊
    你完全可以在按钮的点击事件中写
      ListView1.AlphaSort;
    然后在ListView的OnCompare事件中,按照帮助给你提高的代码进行排序处理
      

  6.   


    你只需要把上面代码中 OnColumnClick 中的代码放入每个按钮的点击事件中,
    而在按钮的点击事件中,把 ColumnToSort 变量的值设置成固定值,比如,第一个按钮中 ColumnToSort 的值是0,第二个按钮中, ColumnToSort 的值是1,第三个按钮中 ColumnToSort 的值是2... 依此类推,
    就可以了
    OnCompare 的代码完全不用修改