请问如果对listview 进行数字大小排序

解决方案 »

  1.   

    在OnCompare里写代码,然后调用AlphaSort方法。
      

  2.   

    设置ListView的SortType属性为stBoth。然后在OnCompare事件中输入比较大小的代码。 
    procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; 
        Data: Integer; var Compare: Integer); 
    var 
      m, n :integer; 
        begin 
         m := StrToInt(Item1.Caption); 
         n := StrToInt(Item2.Caption); 
         Compare := m - n; 
        end; 
      

  3.   

    楼上的代码没用到导致错误    Item 里面很很多条记录 做比较
      

  4.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      ListView1.Items.Clear;  ListView1.Items.Add.Caption := '40';
      ListView1.Items.Add.Caption := '30';
      ListView1.Items.Add.Caption := '50';
      ListView1.Items.Add.Caption := '60';  ListView1.SortType:=stText;
    end;
      

  5.   

    报什么错误
    3楼代码上没有问题,不过需要说明的是有两个假设
    1、按第一列,也就是Item.Caption列排序
    2、这一列为整数数字当然这里只是提供了思路或者是方法,具体运用应当可以根据实际需要举一反三
    具体而言搞清楚了TListView.SortType和OnCompare事件就差不多了
    这些都是可以通过查Delphi帮助文件或其它说明搞定
      

  6.   

    测试了一下,按以下步骤成功
    1、ListView1.SortType := stData;
    2、OnCompare事件处理函数中改为Item.Caption改为Item.SubItems[0],或按需要
    3、调用ListView1.AlphaSort;