TreeView - capturando os items de um menu

Top  Previous  Next

// Colocando os items do menu dentro de uma TreeView

*** PARA FAZER CONTROLE DE ACESSO VEJA DICA: MENUS-CONTROLE DE PERMISSOES

 

procedure GetMenuItems(const Menu: TMainMenu; var Tree: TATreeView);

var

  I       : Integer;

  No1, No2: TTreeNode;

 

  procedure GetMenuSubItems(Menu: TMenuItem; var Node: TTreeNode);

  var

    I: Integer;

  begin

    // For no Itens se o Items > 0  Faz recursividade

    for I := 0 to Pred(Menu.Count) do

    begin

      if (Menu.Items[I].Caption <> '-') then

        Tree.Items.AddChildObject(Node, StrTran( Menu.Items[I].Caption, '&''' ), PChar(Menu.Items[I].Name ));

 

      if Menu.Items[I].Count > 0 then

      begin

        No2 := Tree.Items[ Tree.Items.Count-1 ];

        GetMenuSubItems(Menu.Items[I], No2);

      end;

    end;

  end;

 

begin

  Tree.Items.Clear;

  for I := 0 to Pred(Menu.Items.Count) do

  begin

    Tree.Items.AddObject(nil, StrTran( Menu.Items[I].Caption, '&''' ), PChar(Menu.Items[I].Name ));

    No1 := Tree.Items[ Tree.Items.Count-1 ];

    GetMenuSubItems(Menu.Items[I], No1);

  end;

  Tree.StateRecursion := False;

  Tree.StateRecursion := True;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  GetMenuItems(MainMenu1, ATree);

end;

 

 

// sabe o nome do item de menu respectivo ao node selecionado:

 

Caption := StrPas(ATree.Selected.Data);