DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: deliping
今日帖子: 2
在线用户: 5
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 blueyestar (蓝夜孤星) ★☆☆☆☆ -
盒子活跃会员
2004/2/6 10:44:31
标题:
help! 浏览:1218
加入我的收藏
楼主: 如何在listbox中,在单击列头时使其按升序排列,再次单击按降序排列
----------------------------------------------
真正的程序员用C,聪明的程序员用DELPHI
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/6 10:48:17
1楼: 偶以后用VB时 是用“冒泡排序”的 来实现的
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/2/6 12:03:44
2楼: listbox好像有SORT属性!

----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2004/2/6 12:59:52
3楼: ListBox的Sorted属性可实现简单排序;
如果你要实现按需排序,则可用ListView来实现,你只要使用ListView的CustomSort就可以了,具体实现请参看帮助。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/6 13:28:20
4楼: 3楼对级了
把LISTVIEW只做一个列 把列头隐藏起来,看上去就象LISTBOX

然后:
var ColumnToSort: Integer;

The OnColumnClick event handler sets the global variable to indicate the column to sort and calls AlphaSort:

procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);

begin
  ColumnToSort := Column.Index;
  (Sender as TCustomListView).AlphaSort;
end;


The OnCompare event handler causes the list view to sort on the selected column:

procedure TForm1.ListView1Compare(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;

end;
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 blueyestar (蓝夜孤星) ★☆☆☆☆ -
盒子活跃会员
2004/2/6 19:05:48
5楼: thanks!
----------------------------------------------
真正的程序员用C,聪明的程序员用DELPHI
作者:
男 blueyestar (蓝夜孤星) ★☆☆☆☆ -
盒子活跃会员
2004/2/6 19:14:55
6楼: Bios大大,你那种方法只能让它升序排列呀,怎样让其即可升序又可降序呢?
----------------------------------------------
真正的程序员用C,聪明的程序员用DELPHI
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/6 20:20:04
7楼: 呵呵:)

可以用个变量控制啊:

procedure TForm1.lvwebaddressColumnClick(Sender: TObject;
  Column: TListColumn);
begin
GPaiXu:=not GPaiXu;
ColumnToSort := Column.Index ;
PTCategory(tvfenlei.Selected.data)^.HSortColumn:=  ColumnToSort ;
lvwebaddress.AlphaSort ;
DDC.IsEdited :=true;
end;

procedure TForm1.lvwebaddressCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var
  ix,order: Integer;

begin
try    //防止列还未加入是比较导致数组过解
  
  if GPaiXu then order:=1 else order:=-1;
  PTCategory(tvfenlei.Selected.data)^.HSortMode:=GPaiXu;
 if FAdding = false then
 begin
  if ColumnToSort = 0 then
    Compare := CompareText(Item1.Caption,Item2.Caption)*order
  else begin
    ix := ColumnToSort - 1;
    Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix])*order;
  end;
 end;
except
end;

end;

----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 blueyestar (蓝夜孤星) ★☆☆☆☆ -
盒子活跃会员
2004/2/7 13:55:38
8楼: PTCategory(tvfenlei.Selected.data)^.HSortColumn:=  ColumnToSort
DDC.IsEdited :=true;
PTCategory(tvfenlei.Selected.data)^.HSortMode:=GPaiXu;

bios大大,这几行是干啥用的呀?

小弟我刚学没多久,看不懂呀!!!
----------------------------------------------
真正的程序员用C,聪明的程序员用DELPHI
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2004/2/7 14:27:25
9楼: 不好意思,这是偶自己本身产品的代码,你把他去掉就可以了!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行898.4375毫秒 RSS