怎么删除给treeview节点定义的结构体,应该在什么时候删除?
如:
结构体:
typedef struct MyRec
{
AnsiString Url,Target,Status,Pic;
} TNodeRec;
typedef TNodeRec* PNodeRec;
//给结构体赋值
void* __fastcall TfmMain::GetNewNode(AnsiString url, AnsiString target, AnsiString status, AnsiString pic)
{
PNodeRec NewNode0;
NewNode0 = new TNodeRec;
NewNode0->Url = url;
NewNode0->Target = target;
NewNode0->Statustxt = status;
NewNode0->Pic = pic;
return NewNode0;
}
//添加节点时,调用了GetNewNode
TreeView1->Items->AddObject(NULL,"new",GetNewNode(url,target,status,pic));
最后,我应该在什么时候delete这些NewNode0?
问题点数:50、回复次数:5Top
1 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-04-05 22:31:11 得分 10
在你即将无法访问到结果的指针时删除!Top
2 楼knf(CTO-首席打字员)回复于 2002-04-05 22:51:53 得分 0
那是不是我每删除一个节点的时候都要删除结构一次,在treeview不用的时候又全部删除一次?
还有,这种时候怎么删除?delete NewNode0好象不对?Top
3 楼verybigbug(等待中)回复于 2002-04-06 09:52:08 得分 20
删除节点的时候删除结构,TreeView的OnDeletion事件。Top
4 楼kingcaiyao(aking)回复于 2002-04-06 09:55:31 得分 10
这样看一看:
定义一数组,在不需时对它进行集体删除,请看程序片段:
typedef Struct{
String FName;
String LName;
int NodeID;
}MyStruct;
MyStruct *NodeData[100]=new MyStruct[100];
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TTreeNode pNode[100];
TreeView1->Items->Clear();
for(int i=0;i<100;i++)
{
TreeView1->Items->Add(NULL,"MyNode"+IntToStr(i));
pNode[i]=TTreeView1->Items->Item[i];
}
for(int i=0;i<100;i++)
{
//set your struct's data
NodeData[i].FName=your value;
NodeData[i].LName=your value;
NodeData[i].NodeID=i;
TreeView1->Items->AddChildObject(pNode[i],your string,(void*)NodeData[i]);
....
}
...
//在不要时将这个自定义结构体的数组全部删除。
}
Top
5 楼ken_henderson( )回复于 2002-04-06 10:05:38 得分 10
在删除一个节点时删除,在退出程序时把剩余的删除Top




