Type
PRec_Attr = ^TRec_Attr;
TRec_Attr =
packed
record
FileName :
string
;
.. и если что-то еще, что надо ...
end
;
function
???.Tree_InsertThis_Node(NodeParent : TTreeNode; sNodeName :
string
; sFileName :
string
) :
boolean
;
Var
PRec : PRec_Attr;
begin
...
if
NodeParent<>
NIL
then
begin
New(PRec);
PRec^.FileName := sFileName;
MyTree
.
Selected:=MyTree
.
Items
.
AddChildObject(NodeParent,sNodeName,PRec);
...
...
end
;
end
;
function
???.Tree_DeleteThis_Node(Node : TTreeNode) :
boolean
;
Var
sFileName :
string
;
begin
Result:=
false
;
if
Assigned(Node)
then
begin
sFileName:=Get_FileName(Node);
if
FileExists(sFileName)
then
begin
end
;
if
Node
.
Data<>
NIL
then
begin
PRec_Attr(Node
.
Data)^.FileName:=
''
;
Dispose(PRec_Attr(Node
.
Data));
Node
.
Data:=
NIL
;
end
;
MyTree
.
Items
.
Delete(Node);
Result:=
true
;
end
;
end
;
function
???.Get_FileName(Node: TTreeNode) :
string
;
begin
Result:=
''
;
if
Assigned(Node)
then
begin
if
Node
.
Data<>
NIL
then
begin
Result:=Trim(PRec_Attr(Node
.
Data)^.FileName);
end
;
end
;
end
;
Освободить ресурсы (если дерево уничтожается) :
for
i:=
0
to
(MyTree
.
Items
.
Count-
1
)
do
begin
if
MyTree
.
Items[i]<>
NIL
then
begin
if
MyTree
.
Items[i].Data<>
NIL
then
begin
PRec_Attr(MyTree
.
Items[i].Data)^.FileName:=
''
;
Dispose(PRec_Attr(MyTree
.
Items[i].Data));
MyTree
.
Items[i].Data:=
NIL
;
end
;
end
;
end
;