关于ListView指针Data介绍

本文介绍了如何在Delphi中使用TListView组件,并通过Data属性来分配和释放内存的方法。包括了自定义记录类型来存储复杂的数据结构,以及如何正确地进行内存管理避免内存泄漏。

赋值
type
    PAllHidenDate = ^AllHidenDate;
    AllHidenDate = record
        PriceID: Integer;
        OrderNumber: string;
        State: Integer;
        PriceData: WideString;
    end;

var
    HidenData: PAllHidenDate;

begin
    with lvDataViewAll.Items.Add do
    begin

        HidenData := New(PAllHidenDate);
        HidenData.PriceID := StrToIntDef(Node.Attributes['PriceID'], 0);
        HidenData.State := StrToIntDef(Node.Attributes['State'], 1);
        HidenData.OrderNumber := Node.Attributes['PriceNumber'];
        HidenData.PriceData := Node.XML;
        Data := HidenData;
    end;
end;

释放Data:
procedure TOrderQuotation.lvDataViewAllDeletion(Sender: TObject; Item:
    TListItem);
var
    HidenData : PAllHidenDate;
begin
    if Item.Data = nil then Exit;
    HidenData := Item.Data ;
    Dispose(HidenData);
end;


释放内存时需要和赋值时的指针类型相同,不然会出错内存泄漏

 

 

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);
    li.Data:=pp;
  end;
end;

需释放内存

var
I : integer;
begin
  for I := 0 to TreeView.Items.Count - 1 do
  begin
    Dispose(TreeView.Items[I].Data);
    TreeView.Items[I].Data := nil;
  end;
end; 

转载于:https://www.cnblogs.com/mingdep/archive/2012/01/05/2313189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值