安全释放 TreeView的DATA!
Delphi中使用ListView和TreeView的Item中的Data可能被忽略的内存泄漏问题,使用了Data作为指针的数据,在删除项目时,这些内存将不会释放,可以在OnDeletion事件中加入Dispose(Item.Data); 语句来实现释放。
Delphi中大家在使用 ListView和TreeView时,一般都会使用到Item的Data属性来保存大家自己的内部数据,这个Data的声明如下:
property Data: Pointer;
大家可以看到它就是一个指针,使用上一般类似如下代码(以ListView为)
添加时
PViewItemState = ^TViewItemState;
TViewItemState = record
ViewItemId: integer;
end;
var
nLoop: integer;
li: TListItem;
pp: PViewItemState;
begin
for nLoop := 0 to 10 do
begin
li := ListView1.Items.Add;
li.Caption := IntToStr(nLoop);
new(pp);
pp^.ViewItemId := nLoop;
li.Data := pp;
end;
end;
删除相应的项时多数采用
ListView1.DeleteSelected; 或
List