一个与listView有关的奇怪问题(100分)

B

bin_75

Unregistered / Unconfirmed
GUEST, unregistred user!
我的使用Listview控制发现一个奇怪的问题
当时我将控件的ownerdata 属性设置为True
并写好了OnData事件代码。
procedure TfrmTest.lvDTableData(Sender: TObject;
Item: TListItem);
var
intI :integer;
begin
intI:=item.Index;
if (IntI <= slTable.Count) then
begin
item.Caption:=slTable[intI];
end;
end;

一般情况下没什么问题
可在有时情况下比如我要清除slTable变量的内容 并更新listview控件
我先这么写代码
slTable.clear;
lvDTable.items.clear
程序就报 List index out of bounds (0)
而我把两个语名顺序变一下,改为
lvDTable.items.clear
slTable.clear;
就没有问题了,这是怎么回事?
 
没有什么问题,就是说明你把父子关系搞乱了
 
你虽然做了越界检查,可惜条件错了......
intI:=item.Index;
if (IntI < slTable.Count) then
{这里只<就好了item.index下标是从0开始的,所以你清空slTable以后条件仍然成立,所以就报越界了}
begin
item.Caption:=slTable[intI];
end;
 
接受答案了.
 
顶部