还没有解决啊!!!!!如何将treeview的内容保存到一个自定义的文件格式里,能读写且可修改节点。超急! ( 积分: 100 )

  • 主题发起人 主题发起人 media21
  • 开始时间 开始时间
同意 jlutt-sadan 的做法!
偶现在认为这才是 delphi 中 listview 和 treeview 的“正宗用法”
充分利用 oo 的特性封装业务,而不是把数据挂接到 Item.Data 上
 
不放在TreeView放在哪里呢,没想出来,除非从TCustomTreeView,增加属性,没太弄明白你是怎么做的,因为目前来看只有一个Text属性显然是不够的,
 
TO:media21 XML使用方法不是给你了吗?

chenybin上面给的方法不错,不过我不推荐,想储存data里的数据我觉得除了图片以外(视频你也不会放到data里吧 呵呵)其他的还是用文本储存比较好

TO:chenybin 楼主储存数据应该是定义了一个记录类型,然后用item.data属性指向该类型的一个实体,item.data的类型是Pointer

既然楼主把数据储存到data里,那应该是自己定义了一个类型,你可以把这个类型结构当做该节点的属性存到XML里啊,我上面的例子里已经给了:
_xmlnode.SetAttributeNS(attrname,'',value); //储存该节点属性

至于怎么存。。汗,再给楼主个例子吧:
假设楼主定义的数据类型如下:
Ttreedata=record
t_name:string;
t_type:integer;
t_key:boolean;
end;

存入该节点数据时:
_xmlnode.SetAttributeNS('t_name','',ptreedata(treeview1.Selected.Data)^.t_name);
_xmlnode.SetAttributeNS('t_name','',ptreedata(treeview1.Selected.Data)^.t_type);
_xmlnode.SetAttributeNS('t_name','',ptreedata(treeview1.Selected.Data)^.t_key);

因为SetAttributeNS的最后一个参数是olevariant类型的,所以直接存入就OK
 
_xmlnode.SetAttributeNS('t_name','',ptreedata(treeview1.Selected.Data)^.t_name);

这个不是指针????
 
treeview1.Selected.Data是指针啊~
ptreedata(treeview1.Selected.Data)^.t_name是实际的数据内容啊。。

你写程序试试就知道了
 
兄弟啊,我上面那一大堆代码你没看???????????

Selectd只是选中的,我是遍历全部节点,晕倒
 
我。。。我。。。。吐血ing。。。。。。。

老兄,是你没看我的代码才对。。。
procedure Tform1.getnodechild(node:Ttreenode;xmlnode:Ixmlnode);
var
_xmlnode:Ixmlnode;
_node:Ttreenode;
begin
_node:=node;
while _node<>nil do
begin
if xmlnode=nil then
XMLDocument1.AddChild(_node.Text)
else
_xmlnode:=xmlnode.AddChild(_node.Text);

// _xmlnode.SetAttributeNS(attrname,'',value); //储存该节点属性
//在这里,改成_xmlnode.SetAttributeNS('t_name','',ptreedata(_node.Data)^.t_name); OK?
//treeview1.Selected我就是举个例子,只要是Ttreenode类型的就行,无论是treeview1.Selected或者是_node
//哎,我自杀去算了。。。写这么多楼主面都不露一下

getnodechild(_node.getFirstChild,_xmlnode);
_node:=_node.getNextSibling;
end;
end;
 
chenybin上面给的方法不错,不过我不推荐,想储存data里的数据我觉得除了图片以外(视频你也不会放到data里吧 呵呵)其他的还是用文本储存比较好


兄台,你的信息还是存在Data里面的啊,
 
不不 你弄错我的意思了我不是说把信息不保存到data里,而是说你把data里的信息保存为二进制文件我不太赞同,呵呵

还有。。。信息不是保存到data,data只不过是一个指针啊。。
 
是delphi7从入门到精通呀???第几页啊?
 
可以按这样存储
0001
00010001
00010002
0002
0003
00030001
00030002
000300020001
00030003

www.coderpub.com
 
搂住是菜鸟一个,要[red]例程[/red]啊!!!
 
难道就没有高手嘛?????!!!!!
 
。。。。。。晕 好老的帖子,上面我们都说成这样了,那么多方法,楼主还要找高手?

我很想知道楼主心中的高手能用什么方法做到哪种程度
 
不要急嘛!发分了!
 

Similar threads

D
回复
0
查看
802
DelphiTeacher的专栏
D
D
回复
0
查看
747
DelphiTeacher的专栏
D
D
回复
0
查看
696
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部