Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #2  
Старый 13.05.2009, 15:34
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

как вариант, может быть примерно такой подход :

Код:
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;


Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025