如何用DELPHI自带的listview,实现header上的小箭头(100分)

  • 主题发起人 主题发起人 mafan
  • 开始时间 开始时间
M

mafan

Unregistered / Unconfirmed
GUEST, unregistred user!
[red][h1][h1]象Windows2000和XP的资源管理器上的listview,点HEADER排序的时候有小箭头指示

或者Foxmail的listview是怎么实现的?[/h1][/h1][/red]
 
用treeview
 
留个信箱,给你一个示例代码.
 
use image,
function SubSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
function SubSortProc_Neg(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
function SubSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
if ParamSort=-1 then
Result := lstrcmp(PChar(TListItem(Item1).Caption),
PChar(TListItem(Item2).Caption))
else
Result := lstrcmp(PChar(TListItem(Item1).SubItems[ParamSort]),
PChar(TListItem(Item2).SubItems[ParamSort]));
end;

function SubSortProc_Neg(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;
begin
if ParamSort=-1 then
Result := -lstrcmp(PChar(TListItem(Item1).Caption),
PChar(TListItem(Item2).Caption))
else
Result := -lstrcmp(PChar(TListItem(Item1).SubItems[ParamSort]),
PChar(TListItem(Item2).SubItems[ParamSort]));
end;
procedure TFm_ErrAction.LV_ErrActColumnClick(Sender: TObject;
Column: TListColumn);
var
i:integer;
begin
if Column.index>0 then
if (Column.ImageIndex=ICON_Up) or (Column.ImageIndex=-1) then
begin
TListView(Sender).CustomSort(@SubSortProc_Neg, Column.index-1);
Column.ImageIndex:=ICON_Down;
end
else if Column.ImageIndex=ICON_Down then
begin
TListView(Sender).CustomSort(@SubSortProc, Column.index-1);
Column.ImageIndex:=ICON_Up;
end;
for i:=1 to TListView(Sender).Columns.Count-1 do
if i<>Column.index then TListView(Sender).Columns.Imageindex:=-1;
end;
 
Column.ImageIndex
原来如此,哈哈,多谢!!!

 
[red]用这个方法好象小箭头显示在标题的左边,比较难看啊,有没有更好的解决办法?[/red][8D]
 
后退
顶部