ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO] Popular Treeview com ActionList

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
netoferreira
Novato
Novato


Registrado: Sexta-Feira, 19 de Dezembro de 2014
Mensagens: 77
Localização: Macapá - AP

MensagemEnviada: Sáb Jan 08, 2022 6:31 pm    Assunto: [RESOLVIDO] Popular Treeview com ActionList Responder com Citação

Estou criando um menu com um Treeview e pretendo popular com as actions de um ActionList, mas a forma que encontrei está populando com todas as actions e eu queria que fosse somente com as que estivessem habilitadas.

Código:

procedure Tfrm_principal.construir_arvore;
var
  i: Integer;
  no: TTreeNode;
  ac: TAction;
begin
  for i := 0 to Pred(action_list.ActionCount) do
  begin
    ac := TAction(action_list.Actions[i]);
    with tv_menu.Items do
      begin
        no := encontrar_no(ac.Category);
        if no = nil then
          no := Add(GetFirstNode, ac.Category);
        AddChild(no, ac.Caption);
      end;
  end;
end;

function Tfrm_principal.encontrar_no(const aNome: string): TTreeNode;
var
  i: Integer;
begin
  Result := nil;
  with tv_menu.Items do
    begin
      for i := 0 to Pred(Count) do
        if Item[i].Text = aNome then
        begin
          Result := Item[i];
          Break;
        end;
    end;
end;


Editado pela última vez por netoferreira em Qui Jan 13, 2022 3:53 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Jan 11, 2022 10:48 am    Assunto: Responder com Citação

Faça um teste com o código abaixo em que acrescentei um condição se a ação está habilitada:

Código:
procedure Tfrm_principal.construir_arvore;
var
  i: Integer;
  no: TTreeNode;
  ac: TAction;
begin
  for i := 0 to Pred(action_list.ActionCount) do
  begin
    ac := TAction(action_list.Actions[i]);

    if ac.Enabled then // acrescentei esta linha
      with tv_menu.Items do
      begin
        no := encontrar_no(ac.Category);
        if no = nil then
          no := Add(GetFirstNode, ac.Category);
        AddChild(no, ac.Caption);
      end;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
netoferreira
Novato
Novato


Registrado: Sexta-Feira, 19 de Dezembro de 2014
Mensagens: 77
Localização: Macapá - AP

MensagemEnviada: Qui Jan 13, 2022 9:22 am    Assunto: Responder com Citação

Muito obrigado, natanbh1

natanbh1 escreveu:
Faça um teste com o código abaixo em que acrescentei um condição se a ação está habilitada:

Código:
procedure Tfrm_principal.construir_arvore;
var
  i: Integer;
  no: TTreeNode;
  ac: TAction;
begin
  for i := 0 to Pred(action_list.ActionCount) do
  begin
    ac := TAction(action_list.Actions[i]);

    if ac.Enabled then // acrescentei esta linha
      with tv_menu.Items do
      begin
        no := encontrar_no(ac.Category);
        if no = nil then
          no := Add(GetFirstNode, ac.Category);
        AddChild(no, ac.Caption);
      end;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB