Ta = record
    name:string[20]
    data:array[0..1000] of byte;
    size:integer;
end;Tb = record
    no: integer;          //这是记录在alist中对应的序号
    name: string[20];     
end; TMyObj = class
    alist : tlist;  //存Ta
    blist : tlist;  //存Tb,每个记录在alist中都有对应记录。
private
end;这样一个对象,现在要对blist的中的数据按Ta.size排序应该怎么做?用TList.Sort(Compare: TListSortCompare),可compare函数必须定义在对象外,取不到alist的值。除了把alist定义在对象外还有什么办法吗?谢谢。

解决方案 »

  1.   

    给你一个我写的ListView排序,我是这样写的不用知道是哪个成员,只要知道是哪列就可以了.
    procedure TFormUserManage.ListViewUserColumnClick(Sender: TObject;
      Column: TListColumn);
    begin
      nSortCol:=Column.Index;
      ListView1.AlphaSort;
    end;
    简单吧.哈哈.虽然简单但很实用啊.
      

  2.   

    主要是我不想破坏对象的结构,明显应该在对象内完成的功能拿到外面实在是不舒服。不过没办法,这个功能我放对象外实现了。顺便说一句,TList的排序功能实在是太好用了,又快又方便。