本人的思路如下:在virtual下,用TList来保存数据,同时用TList来保存按column的情况(这个通过重载窗口过程实现)
排序采用(TList.Sort方法):procedure Sort(Compare: TListSortCompare);
由于函数原型:TListSortCompare = function (Item1, Item2: Pointer): Integer;只有两个参数,所以用来排序的TList没法在此函数中起作用。哪位高手可以提供点建议,或已经实现的话,能不能给点思路或代码?

解决方案 »

  1.   

    原来delphi安装目录里有个virtuallist列表文件的demo,使用的是tlist,它怎么排序的我忘了,也是用函数的。你找找看,我的2010里没有demo。
      

  2.   


    首先对你的回复表示感谢。我看了它的例子的,它只是告诉你怎么用virtual,并没有讲到排序的问题。
      

  3.   

    我忘了说了,我是做成一个bpl包,里面继承了TListview。应用的时候,直接在窗体上放一个这个控件,就可以了,按column排序都是在包里完成。如果在应用中来实现这个功能是可以做到的,但代码就是比较长了,也不方便。如果窗体上有多个这样TListview的话,这个排序代码就是重复了。
      

  4.   

    http://www.skycn.com/soft/56298.html 这个是我写的东西,修改的shelllist控件,排序就是用全局变量。
      

  5.   


    你的东西我看了,做的不错。但是没有理解我的意思,你的只能实现单列排序,没法多列排序啊。单列排序我早就实现了,而且多列排序在非virtual下我也实现了, 就是先按住某列排序,然后按住Ctrl键,鼠标再在其他列上点击,就在前面排序基础上再进行这列的排序,依次类推,可以实现所有列的排序,而且列的属性可以设置,是字符串还是整型或者浮点型等。
    我现在主要是做一个BPL,直接拿过来用就可以了,就像TListview一样。
      

  6.   

    终于搞定了,重写了TList,OK!