如何使TLISTVIEW的视图的显示样式为Report时,点击各列的表头按钮可按其列值进行排序

解决方案 »

  1.   

    将数据表排序,再把它装到ListView里去。不过这样会很费资源
      

  2.   

    var
        ColumnToSort: Integer;                                          
        SortStyle: Boolean = true;procedure TWorkFlowListView.ColumnClick(Sender: TObject; Column: TListColumn);
    begin
      ColumnToSort := Column.Index;
      (Sender as TCustomListView).AlphaSort;
      SortStyle := not SortStyle;
    end;procedure TWorkFlowListView.Compare(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;
      if SortStyle then
        Compare:=-Compare;
    end;先定义两个全局变量,事件OnClick和OnCompare的代码参照上面就可以了。