为了对listview中的记录进行排序,我在oncolumnclick()事件中使用了AlphaSort方法,可是之后我如果再添加一个新的记录时,就报错:list index out of bounds(0)
相关代码如下:
procedure TUserPowerForm.lvUserColumnClick(Sender: TObject;
Column: TListColumn);
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
asc := not asc;
end;procedure TUserPowerForm.lvUserCompare(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;
if asc then
Compare := -Compare;
end;添加记录的代码简化为:
var li : TListItem;
li := lvUser.Items.Add;
li.Caption := 'name';多谢各位!
相关代码如下:
procedure TUserPowerForm.lvUserColumnClick(Sender: TObject;
Column: TListColumn);
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
asc := not asc;
end;procedure TUserPowerForm.lvUserCompare(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;
if asc then
Compare := -Compare;
end;添加记录的代码简化为:
var li : TListItem;
li := lvUser.Items.Add;
li.Caption := 'name';多谢各位!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货