有无一个类似winzip中显示文件列表的控件(可以通过点击Title进行排序,1000行左右)。(200分)

  • 主题发起人 主题发起人 wenna
  • 开始时间 开始时间
W

wenna

Unregistered / Unconfirmed
GUEST, unregistred user!
编程也行,但需要简单。
 
type
PSortInfo = ^TSortInfo;
TSortInfo = record
SortType:string;
Index:integer;
Ascending:boolean;
end;

procedure TFMainForm.SortListView(FLV:TListview;SortType:string;ColumnIndex: Integer; Ascending: Boolean);
var
af:TSortInfo;
function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
function Sign(Val: Extended): Integer;
begin
if Val < 0 then
Result := -1
else if Val > 0 then
Result := 1
else
Result := 0;
end;
begin
if UpperCase(PsortInfo(ParamSort)^.SortType)=UpperCase('date') then
begin
result:=Sign(StrToDateTime(item1.SubItems[PsortInfo(ParamSort)^.Index-1]) -
StrToDateTime(Item2.SubItems[PsortInfo(ParamSort)^.Index-1]));
end
else if UpperCase(PsortInfo(ParamSort)^.SortType)=UpperCase('Num') then
begin
result := Sign(StrToInt64(item1.SubItems[PsortInfo(ParamSort)^.Index-1])-
StrToint64(Item2.SubItems[PsortInfo(ParamSort)^.Index-1]));
end
else
result := AnsiCompareText(item1.SubItems[PsortInfo(ParamSort)^.Index-1],
Item2.SubItems[PsortInfo(ParamSort)^.Index-1]);

if not PsortInfo(ParamSort)^.Ascending then Result := -Result;

end;
begin
af.SortType := SortType;
af.Index := ColumnIndex;
af.Ascending := Ascending;
FLV.CustomSort(@CustomSortProc,Longint(@af));
end;

调用,如对列,文件名进行正序排
SortListView(listview1,'string',1,true);
反序排
SortListView(listview1,'string',1,false);
排时间列
  SortListView(listview1,'date',2,false);

排数字列
  SortListView(listview1,'Num',2,false);


  
 
有没有现成的控件。
 
如有MAIL一份给我<a href=mailto:dadicomp@china.com>dadicomp@china.com</a>
 
Delphi 本身自带的TListView就能实现你需要的功能
 
有没有C builder的例子,200分准备送出.
 
多人接受答案了。
 
后退
顶部