首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问一个关于Listview重新排出序号的方法

2013-01-04 
请教一个关于Listview重新排出序号的方法请问在Listview1使用中,第一栏是caption这个用作[序号]的生成,cap

请教一个关于Listview重新排出序号的方法
请问在Listview1使用中,第一栏是caption这个用作[序号]的生成,
caption:=IntToStr(Listview1.Items.Count);

出现效果如下:
====================================
  序号  |    电话号码    |      日期
====================================
  01   |  13800138000 |  2010-09-04 15:22:24
  10   |  13800138000 |  2010-09-04 15:22:24  //奇怪,为什么会在这里而不是在09之后呢??如何才可以排列在09后面呢???
  02   |  13800138000 |  2010-09-04 15:22:24
  03   |  13800138000 |  2010-09-04 15:22:24
  04   |  13800138000 |  2010-09-04 15:22:24
  05   |  13800138000 |  2010-09-04 15:22:24
  06   |  13800138000 |  2010-09-04 15:22:24
  07   |  13800138000 |  2010-09-04 15:22:24
  08   |  13800138000 |  2010-09-04 15:22:24
  09   |  13800138000 |  2010-09-04 15:22:24
...


上面记录被加到Listview1之后,假如删除其中几条记录将如下情况:
====================================
  序号  |    电话号码    |      日期
====================================
  10   |  13800138000 |  2010-09-04 15:22:24
  02   |  13800138000 |  2010-09-04 15:22:24
  04   |  13800138000 |  2010-09-04 15:22:24
  06   |  13800138000 |  2010-09-04 15:22:24
  07   |  13800138000 |  2010-09-04 15:22:24
  08   |  13800138000 |  2010-09-04 15:22:24
  09   |  13800138000 |  2010-09-04 15:22:24
...

把1、3、5几条记录删除了,序号出现断号,不连贯了~~~
请问在删除后在[序号]里如何获得01、02、03、04、05、06...连贯编号呢?



[解决办法]
不清楚你如何新增项,按我下面代码不会出现那情形,删除后序号重排即可连贯:

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
    s:string;
begin
  for i:=0 to 8 do
    with ListView1.Items.Add do begin
      s:='00'+inttostr(i+1);
      s:=copy(s,length(s)-1,2);
      Caption:=s;
      Subitems.Add('13800138000_'+s);
      Subitems.Add(FormatDateTime('yyyy-mm-dd hh:nn:ss',now));
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);//新增一行
var s:string;
begin
  with ListView1.Items.Add do begin
    s:='00'+inttostr(ListView1.Items.Count);
    s:=copy(s,length(s)-1,2);
    Caption:=s;
    Subitems.Add('13800138000_'+s);
    Subitems.Add(FormatDateTime('yyyy-mm-dd hh:nn:ss',now));
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;


    s:string;
begin
  for i:=ListView1.Items.Count-1 downto 0 do //删除奇数行
    if i mod 2 = 0 then
      ListView1.Items.Item[i].Delete;
  for i:=0 to ListView1.Items.Count-1 do begin//重排序号
    s:='00'+inttostr(i+1);
    s:=copy(s,length(s)-1,2);
    ListView1.Items.Item[i].Caption:=s;
  end;
end;

热点排行