![]() |
|
#1
|
|||
|
|||
![]() Добрый день))) Такой вопросик, можно ли к веткам TreeView прикрепить определенные файлы для скачивания?
Вот такой кодик Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); begin Memo1.Lines.Clear; if (node.Text = '1') then Memo1.Lines.LoadFromFile ('c:\1.txt'); Код:
procedure TForm1.Button1Click(Sender: TObject); var TargetFileName: String; begin if SaveDialog1.Execute then TargetFileName:= SaveDialog1.FileName; end; Как прикрепить к ветки файл допустим exe или rar, что бы выбрав определенную ветку и нажав кнопку копировался этот файл? |
#2
|
|||
|
|||
![]() как вариант, может быть примерно такой подход :
Код:
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; |