You can hook the OnCreateNodeClass of the TTreeView.
try this:
type
TMyNode = class(TTreeNode)
private
FMyProp: string;
public
MyProp: string read FMyProp write FMyProp;
end;procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyNode;
end;
try this:
type
TMyNode = class(TTreeNode)
private
FMyProp: string;
public
MyProp: string read FMyProp write FMyProp;
end;procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyNode;
end;
解决方案 »
- 回老家看看,感觉不错
- 哇哈哈哈,我的小宝果然很聪明 ^^||
- 寻求函数
- 在DBGrid的DataSet中使用Delete方法为什么不能同步删除数据库中的数据?
- 怎么样在win2000里设置ftp服务呢(包括端口)?我在客户端用dos命令执行的时候ftp 154.6.2.3,服务返回“connection closed by remote ho
- 如果使用com口通信的话函数的参数可以是“com1”,或“com2”.那么如果是
- 关于系统实现方案的问题,有经验的大虾帮忙啊!!!
- 各位高手帮帮忙吧,怎样把TXT内容转入到SQLSERVER中呀!!
- 怎样确定某个数据库是否已经附加到SQL SERVER中
- 请问如何用注册表来禁止在打开对话框中的右键功能项中的格式化、删除、剪切功能。
- 能不能让dbgri中的一行纪录显示一种颜色??
- 高手们进来给菜鸟介绍几本学Delphi的好书吧?
当treeview重建的时候,你的属性值就会丢失,
比如enabled操作,或者color等操作,
如果程序中涉及到treeview重建,则需要修改treenodes的procedure
procedure TTreeNodes.ReadData(Stream: TStream);
var
I, Count: Integer;
NodeInfo: TNodeInfo;
begin
Clear;
Stream.ReadBuffer(Count, SizeOf(Count));
for I := 0 to Count - 1 do
Add(nil, '').ReadData(Stream, @NodeInfo);
end;procedure TTreeNodes.WriteData(Stream: TStream);
var
I: Integer;
Node: TTreeNode;
NodeInfo: TNodeInfo;
begin
I := 0;
Node := GetFirstNode;
while Node <> nil do
begin
Inc(I);
Node := Node.GetNextSibling;
end;
Stream.WriteBuffer(I, SizeOf(I));
Node := GetFirstNode;
while Node <> nil do
begin
Node.WriteData(Stream, @NodeInfo);
Node := Node.GetNextSibling;
end;
end;
改源码毕竟是有危险的。既然已经改了,那就把这个comctrls.pas放到delphi的lib目录下就行了。
这样我就不用去使用data那个属性,每次用又有申请又要释放,所以我想如果可以
增加一个属性那就很好用了。 其实用那个DATA 是可以实现 的,但嫌那个太麻烦了,每次使用都得申请后又得释放。 如果能够给每个节点中增加了一些属性用于保存就很方便了。 先照楼上两位的试试,不过看得有点不明了。