Classe TMi_rtl_treenode

Unit

Declaração

type TMi_rtl_treenode = class(TObject)

Descrição

A class TMi_rtl_treenode foi criada para criar menu html ou arvores de strings usando sintaxe simples de adição de nós e folhas.

Hierarquia

Visão Geral

Campos

Public Sorted: Boolean;

Métodos

Public constructor Create(AData: TObject);
Public destructor Destroy; override;
Public function AddChild(AChildData: TObject): TMi_rtl_treenode;
Public function CompareNodes(const Node1, Node2: TObject): integer;
Public function AddChildOrdered(AChildData: TObject;CompareFunction: TCompareNodes): TMi_rtl_treenode;
Public procedure RemoveChild(AChild: TMi_rtl_treenode);
Public procedure ClearChildren;
Public function GetFirstChild: TMi_rtl_treenode;
Public function Create_Object(aFileName, aPart: string): TObject; virtual; overload;
Public function AddChildFileName(Root: TMi_rtl_treenode; FileName: string):TMi_rtl_treenode; overload;
Public function AddChildFileName(FileName: string):TMi_rtl_treenode; overload;
Public function Create_Object(aFileName, aPart: string; aAction: TAction): TObject; virtual; overload;
Public function AddChildAction(Root: TMi_rtl_treenode;const TreeNodeNames: string; Action: TAction): TMi_rtl_treenode; overload;
Public function AddChildAction(const FileName: string; Action: TAction): TMi_rtl_treenode; overload;
Public function GetNodeLevel(): integer;
Public function conststr(i: longint; str: string): string;
Public function FindChild(const AName: string): TMi_rtl_treenode;
Public function GetNextSibling: TMi_rtl_treenode;
Public procedure TreeToStringList(Mi_rtl_treenode: TMi_rtl_treenode; var S: TStringList); virtual;
Public procedure TreeToStringListHtml(Mi_rtl_treenode: TMi_rtl_treenode; var S: TStringList); virtual;
Public class procedure Test_AddChildFileName(okListHTML: boolean);

Propriedades

Public property Data: TObject read fData write fData;
Public property Children: TObjectList read FChildren;
Public property Parent: TMi_rtl_treenode read FParent write FParent;

Descrição

Campos

Public Sorted: Boolean;

O atributo Sorted se True insere em ordem alfabetica

Métodos

Public constructor Create(AData: TObject);

O constructor Create inicializa o nó com o dado AData e cria uma lista vazia de filhos.

Public destructor Destroy; override;

O destructor Destroy Libera a lista de filhos e chama o destrutor herdado.

Public function AddChild(AChildData: TObject): TMi_rtl_treenode;

O método AddChild adiciona um novo filho ao nó atual.

  • PASSOS

    • O método recebe o dado do filho AChildData;

    • Cria um novo nó TMi_rtl_treenode;

    • Atribui o nó atual como pai e o adiciona na lista de filhos;

    • Retorna o novo nó filho criado.

Public function CompareNodes(const Node1, Node2: TObject): integer;

O método name é usado para comparar os nós com base no campo 'Data' do objeto 'TPath' e insere ordenado ou não, depende do atributo Sorted.

Public function AddChildOrdered(AChildData: TObject;CompareFunction: TCompareNodes): TMi_rtl_treenode;

O método name é usado para comparar os nós com base no campo 'Data' do objeto 'TPath' e insere na ordem crescente.

Public procedure RemoveChild(AChild: TMi_rtl_treenode);

O método RemoveChild remove um filho específico da lista de filhos do nó atual.

Public procedure ClearChildren;

O método ClearChildren remove todos os filhos do nó atual.

Public function GetFirstChild: TMi_rtl_treenode;

O método GetFirstChild verifica se o nó atual tem algum filho na lista FChildren. Se houver, ele retorna o primeiro filho. Caso contrário, retorna nil.

Public function Create_Object(aFileName, aPart: string): TObject; virtual; overload;

O método Create_Object é responsável por criar um novo objeto do tipo TPath.

  • NOTAS

    • A finalidade principal é determinar se o objeto criado representará uma folha (sheet) ou um nó interno na árvore, com base no nome do arquivo e da parte do caminho fornecidos como parâmetros.

  • PARÂMETROS:

    • aFileName:

      • String que representa o nome completo do arquivo.

    • aPart:

      • String que representa a parte do caminho que está sendo analisada.

  • RETORNO:

    • Um objeto do tipo TPath.

      • Se a parte do caminho corresponder ao nome do arquivo (indicando uma folha), o objeto TPath será criado com a propriedade com IsSheet como True, caso contrário, IsSheet será False.

  • *EXEMPLO

    
    // Criando um nó representando um arquivo
    var
      Node: TMi_rtl_treenode;
      PathObject: TPath;
    begin
      PathObject := Create_Object('C:\meus_documentos\arquivo.txt', 'arquivo.txt') as TPath;
      Node := TMi_rtl_treenode.Create(PathObject);
      // Node agora representa uma folha (IsSheet = True)
    end;

Public function AddChildFileName(Root: TMi_rtl_treenode; FileName: string):TMi_rtl_treenode; overload;

O método AddChildFileName adiciona um novo nó filho a um nó raiz (Root) com base no nome de um arquivo especificado (FileName).

  • Esse método é útil quando se deseja construir uma estrutura hierárquica de nós de árvore que represente o caminho de um arquivo ou um conjunto de arquivos.

  • PARÂMETROS:

    • Root: TMi_rtl_treenode

      • O nó raiz ao qual o novo nó filho será adicionado. Este parâmetro representa o ponto de partida na árvore onde o novo nó será inserido.

    • FileName: string

      • O nome do arquivo que será utilizado para criar o novo nó. O FileName pode ser um caminho completo ou parcial, e os nós serão criados de acordo com as partes do caminho.

  • RETORNO:

    • TMi_rtl_treenode

      • Retorna o novo nó filho criado e adicionado à árvore. Este nó corresponde ao nome do arquivo especificado.

  • COMPORTAMENTO:

    • O método divide o FileName em partes, utilizando o separador de diretório (normalmente / ou \), e então cria ou encontra cada nó correspondente no caminho, adicionando-os à árvore sob o nó Root.

    • Se o caminho completo já existir na árvore, o método simplesmente retorna o nó correspondente ao FileName fornecido.

    • Se FileName contiver apenas um nome de arquivo (sem diretórios), o novo nó será adicionado diretamente como um filho de Root.

  • EXEMPLO

    
    var
      RootNode, NewNode: TMi_rtl_treenode;
      FilePath: string;
    begin
      // Cria um nó raiz
      RootNode := TMi_rtl_treenode.Create(nil);
      RootNode.Text := 'Root';
    
      // Caminho do arquivo para adicionar à árvore
      FilePath := 'C:\Users\JohnDoe\Documents\file.txt';
    
      // Adiciona nós com base no caminho do arquivo
      NewNode := AddChildFileName(RootNode, FilePath);
    
      // Se desejar verificar o resultado, você pode percorrer e listar a árvore
      // (Essa parte é opcional e serve apenas para demonstrar como você pode verificar o resultado)
      ShowMessage('O nó filho foi criado com o texto: ' + NewNode.Text);
    end;

Public function AddChildFileName(FileName: string):TMi_rtl_treenode; overload;

O método AddChildFileName executa o método AddChildFileName(Root,...) passando o root como self.

Public function Create_Object(aFileName, aPart: string; aAction: TAction): TObject; virtual; overload;

O método Create_Object é responsável por criar e retornar uma instância da classe TPathAction, uma extensão de TPath que inclui uma ação associada.

  • O método determina se a parte do caminho (aPart) corresponde ao nome do arquivo e, com base nisso, configura o objeto criado como um nó de folha (arquivo) ou um nó interno (diretório).

  • **PARÂMETROS:

    • aFileName (string): O caminho completo do arquivo ou diretório em questão. Este parâmetro é usado para verificar se aPart corresponde ao nome do arquivo ou se representa um diretório.

    • aPart (string):

      • A parte do caminho que será utilizada para nomear o objeto TPathAction criado. Pode ser o nome do arquivo ou o nome de um diretório.

    • aAction (TAction):

      • A ação que será associada ao objeto TPathAction criado. Esta ação pode ser executada quando o nó correspondente na árvore é ativado.

  • RETORNO

    • TObject:

      • Retorna uma instância de TPathAction, que é uma classe que estende TPath e inclui uma ação associada. Essa instância pode ser utilizada como Data em um nó da árvore (TMi_rtl_treenode).

      • O método retorna o objeto TPathAction recém-criado, que pode ser associado ao Data de um nó da árvore.

  • FUNCIONAMENTO:

    • O método compara o nome do arquivo extraído de aFileName com aPart.

      • Se forem iguais (ignorando maiúsculas e minúsculas), isso indica que aPart é o nome do arquivo, e o objeto criado será marcado como uma folha (IsSheet := true).

      • Caso contrário, aPart representa um diretório, e o objeto será marcado como nó interno (IsSheet := false).

  • *EXEMPLO DE USO

    var
      Obj: TObject;
    begin
      // Suponha que um TreeNode já tenha sido criado
    
      // Cria um objeto associado ao arquivo 'test1.pas' com uma ação Action1
      Obj := TreeNode.Create_Object('/home/documentos/test1.pas', 'test1.pas', Action1);
    
      // Obj agora é uma instância de TPathAction associada ao arquivo 'test1.pas'
      // e com a ação Action1 associada.
    end;

  • Benefícios:

    • Flexibilidade:

      • O método permite criar objetos de caminho (TPathAction) que são conscientes de sua posição na hierarquia da árvore, seja como um arquivo ou diretório.

      • Associação de Ação: Além de criar o objeto, o método associa uma ação específica, facilitando a interação do usuário com os nós da árvore.

  • Observações:

    • Este método é fundamental para a criação e manipulação dinâmica de árvores onde cada nó pode ter uma ação específica associada, como em menus contextuais ou na execução de comandos específicos relacionados ao nó.

Public function AddChildAction(Root: TMi_rtl_treenode;const TreeNodeNames: string; Action: TAction): TMi_rtl_treenode; overload;

O método AddChildAction adiciona uma série de nós filhos a partir de uma cadeia de nomes (TreeNodeNames) a um nó raiz (Root) e associa uma ação (Action) ao último nó da cadeia, se for uma folha.

-

  • PARÂMETROS:

    • Root:

      • O nó raiz ao qual os novos nós serão adicionados. Este parâmetro representa o ponto de partida na árvore onde os novos nós serão inseridos.

    • TreeNodeNames (string):

      • Uma cadeia de nomes dos nós a serem criados. Os nomes devem ser separados por barras (/) ou outro delimitador que você escolher. Cada nome na cadeia representará um novo nó na árvore.

      • Action (TAction):

        • A ação (TAction) que será associada ao último nó da cadeia de nós se ele for uma folha. Se o último nó não for uma folha, a ação não será associada..

  • RETORNO:

    • TMi_rtl_treenode:

      • Retorna o último nó adicionado na árvore. Esse nó pode ser utilizado para operações adicionais se necessário.

  • EXEMPLO

    Pacal
    
                var
                  RootNode, NewNode: TMi_rtl_treenode;
                  MyAction: TAction;
                begin
                  // Supondo que 'RootNode' e 'MyAction' já estão definidos
                  // Exemplo de uso: Adiciona nós para "Users/JohnDoe/Documents/file.txt" sob o nó "RootNode"
                  NewNode := RootNode.AddChildAction(RootNode, 'Users/JohnDoe/Documents/file.txt', MyAction);
    
                  // 'NewNode' será o nó "file.txt" e 'MyAction' será associado a ele se "file.txt" for uma folha
                end;

  • Notas:

    • O delimitador usado em TreeNodeNames deve ser consistente com o utilizado na implementação. Se a cadeia TreeNodeNames usar barras (/), elas serão usadas para determinar a estrutura hierárquica dos nós.

    • Se o último nó na cadeia não for uma folha (ou seja, ele tiver filhos), a ação fornecida não será associada a ele.

Public function AddChildAction(const FileName: string; Action: TAction): TMi_rtl_treenode; overload;

O método AddChildAction executa o método AddChildAction(Root,...) passando o root como self.

Public function GetNodeLevel(): integer;

o método GetNodeLevel calcula o nível do nó atual na árvore.

  • NOTAS

    • O nível é contado a partir da raiz (0) e incrementado para cada nó pai encontrado.

Public function conststr(i: longint; str: string): string;

O método conststr é uma função auxiliar, ela cria uma string repetida um determinado número de vezes.

  • NOTAS

    • Utilizado para indentação na exibição da árvore.

Public function FindChild(const AName: string): TMi_rtl_treenode;

O método FindChild procurar um nó filho na árvore. Esse método percorre os nós filhos do nó atual e retorna o nó que tem o nome especificado por AName.

  • NOTAS*

    • Percorre os filhos do nó atual: O método verifica todos os filhos do nó atual para encontrar um que tenha um nome correspondente a AName.

    • Retorna::

      • Se encontrar um filho cujo nome corresponda a AName, ele retorna esse nó.

      • Retorna nil se nenhum nó for encontrado: Se não encontrar nenhum nó filho com o nome especificado, o método retorna nil, indicando que o nó não existe entre os filhos.

  • *PARÂMETRO

    • AName

      • é uma string que representa o nome do nó que você está tentando encontrar.

Public function GetNextSibling: TMi_rtl_treenode;
 
Public procedure TreeToStringList(Mi_rtl_treenode: TMi_rtl_treenode; var S: TStringList); virtual;

O método TreeToStringList retorna uma lista de strings indentada.

  • NOTAS

    • Percorre a árvore recursivamente e adiciona o caminho e tipo (folha ou nó) de cada nó a uma lista TStringList.

Public procedure TreeToStringListHtml(Mi_rtl_treenode: TMi_rtl_treenode; var S: TStringList); virtual;

O método TreeToStringListHtml retorna código html como uma lista de strings indentada.

  • NOTAS

    • Similar ao TreeToStringList, porém gera a saída em formato HTML com tags <ul> e <li> para representar a hierarquia.

Public class procedure Test_AddChildFileName(okListHTML: boolean);

A método de classe Test_AddChildFileName cria uma árvore de exemplo adicionando alguns caminhos de arquivo e exibe a estrutura da árvore utilizando TreeToStringList ou TreeToStringListHtml dependendo do parâmetro okListHTML.

Propriedades

Public property Data: TObject read fData write fData;

A propriedade Data armazena um dado associado ao nó. Pode ser qualquer tipo de objeto derivado de TObject. Esta propriedade permite que você associe informações adicionais a um nó específico na estrutura da árvore, que pode ser útil para armazenar metadados, informações de configuração ou qualquer outra informação relevante.

  • EXEMPLO

    
    var
      Node: TMi_rtl_treenode;
      MyObject: TMyCustomObject;
    begin
      Node := TMi_rtl_treenode.Create;
      MyObject := TMyCustomObject.Create;
    
      // Associando um objeto ao nó
      Node.Data := MyObject;
    
      // Acessando o objeto associado ao nó
      if Node.Data is TMyCustomObject then
        // Realizar operações com MyObject
    end;

Public property Children: TObjectList read FChildren;

A prpriedade Children é uma lista contendo os nós filhos do nó atual.

Public property Parent: TMi_rtl_treenode read FParent write FParent;

A propriedade Parent adicionando a referência ao nó pai


Gerado por PasDoc 0.16.0.