TreeView的OnDeletion中释放结点的Data程序运行出错
以下的代码,PData是省的数据,CData是市的数据,在OnDeletion中释放结点的Data,程序关闭时运行出错了。
改成在FormDestroy中遍历TreeView结点释放它的Data,几乎同样的代码,就没有问题。
为啥在TreeView1Deletion中会出错呢?
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1Deletion(TObject *Sender, TTreeNode *Node)
{/*
if(0==Node->Level&&Node->Data!=NULL)
{
PData *data=(PData *)(Node->Data);
delete data;
}
else if(1==Node->Level&&Node->Data!=NULL)
{
CData *data=(CData *)(Node->Data);
delete data;
} */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
for(int i=0;i<TreeView1->Items->Count;++i)
{
TTreeNode *Node=TreeView1->Items->Item[i];
if(0==Node->Level&&Node->Data!=NULL)
{
PData *data=(PData *)(Node->Data);
delete data;
}
else if(1==Node->Level&&Node->Data!=NULL)
{
CData *data=(CData *)(Node->Data);
delete data;
}
}
}
//---------------------------------------------------------------------------