delphi中treeview的项的绑值和读值的问题
在添加项的时候如何顺便给项绑定一个值,当在选中一个项的时候又如何将当前项的值读取出来呢?大侠们帮帮忙!
下面是我写的:
node.Data:=Pointer(path); //绑定路径
读取:
procedure TForm1.tv1Click(Sender: TObject);
begin
end;
[解决办法]
path:=pchar(node.data)^;
[解决办法]
试了下,貌似不行。。。
procedure TForm1.tv1Click(Sender: TObject);如果是在这个事件里面将如何。。。。
[解决办法]
node是什么,怎么会不行呢?说说出什么错。。
[解决办法]
你乐意提供你的邮箱给我的话,我可以提供一个“用treeview实现资源管理器那样的文件树”的工程给你参考。
[解决办法]
node.Data:=Pointer(path); //绑定路径
没问题,但是前提是path是不会被自动释放!
一个指针(data)无法存放完整的内容,而只能存放内容的地址
所以,我改造Ttreenode,增加了一个datastring,
node.Datastring:=path; //path立即释放都不怕了
不过修改vcl库不是太好的做法
[解决办法]
我靠,还可以修改vcl库,高手!不过俺还是个菜鸟,你说的方法我去试试,貌似很有技术含量!
我把原来的又改了下还是不行,帮忙看看:
node.Data:=@path; //绑定路径
procedure TForm1.tv1Change(Sender: TObject; Node: TTreeNode);
type
pp=^string;
var
path:string;
p:pp;
begin
if(Node.Level<>0) then
begin
New(p);
p:=pp(Node.Data);
path:=p^;
ShowMessage(path);
end;
end;
[解决办法]
源码我下载了好多,别人写的自己看都得半天看,我想自己写,不过还是谢谢你,你帮我看下我的代码错哪了。。。。
[解决办法]
我靠,还可以修改vcl库,高手!不过俺还是个菜鸟,你说的方法我去试试,貌似很有技术含量!
我把原来的又改了下还是不行,帮忙看看:
node.Data:=@path; //绑定路径
procedure TForm1.tv1Change(Sender: TObject; Node: TTreeNode);
type
pp=^string;
var
path:string;
p:pp;
begin
if(Node.Level<>0) then
begin
New(p);
p:=pp(Node.Data);
path:=p^;
ShowMessage(path);
end;
end;
[解决办法]
你new(p)干嘛。。
[解决办法]
为指针分配内存么。。。不new(p)也不行。。。。不知道怎么搞的
[解决办法]
p:=pp(Node.Data);
path:=p^;改成
path:=pchar(Node.Data)^呢。。
[解决办法]
不行,能读出来,就是读出来的是乱码,。。。关键是转型的问题,如何才能把它转成字符串类型的指针。。。
[解决办法]
存取时将node.Data:=Pointer(path);改为node.Data:=Pchar(path);
[解决办法]
我试过了,这样不行,还是乱码。。。
node.Data是一个不定类型(无类型)的指针,绑定值的时候不在乎指针的类型,关键是读取值的时候要把它转换成相对应的字符串指针。。。。我是直接把path的内存地址赋值给它的(node.Data:=@path),关键是后面读值的时候指针转换问题。。。