Ver Mensaje Individual
  #2  
Antiguo 02-10-2007
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Reputación: 20
Durbed Va por buen camino
Ya he conseguido cargar el árbol gracias a un ejemplo extraído de la pagina de neftali http://neftali.clubdelphi.com Ahora ya solo queda guardar los permisos de acceso a los menús en la base de datos y restaurarlos aplicando las propiedades enable o visible (aun no lo he decidido), a los elementos del menú.

Por si alguien no se ha dado cuenta es para restringir el acceso a partes del sistema a los diferentes tipos de usuarios.

Neftali el ejemplo funciona de lujo, pero he mejorado el procedimiento VerificarMenu añadiéndole la función Stripped extraída de trucomania, el código queda así:
Código Delphi [-]
  procedure VerificaMenu(Menu: TMenuItem; Nod: TTreeNode);
    function stripped(stripchar : char; str : string) : string;
      var
        tmpstr : string;
    begin
      tmpstr := str;
      while pos(stripchar, tmpstr) > 0 do
        delete(tmpstr, pos(stripchar, tmpstr), 1);
      stripped := tmpstr;
    end;

  Var
    i: Integer;
    Nodo: TTreeNode;
  Begin
    // Para cada elemento del menu
    for i:= 0 To (Menu.Count - 1) Do Begin
      // Es un elemento correcto
      If Not(Menu.Parent Is TMenuItem) then begin
          // Crear el elemento  asignarle el índice de la imagen
          Nodo:= TreeView1.Items.Add(Nil, Stripped('&', Menu.Items[i].Caption));
          Nodo.ImageIndex := Menu.Items[i].ImageIndex;
      End
      Else begin
        // Crear un hijo
        Nodo:= TreeView1.Items.AddChild(Nod, Stripped('&', Menu.Items[i].Caption));
        Nodo.ImageIndex := Menu.Items[i].ImageIndex;
      end;

      // Llamada recursiva para los submenus
      If Menu.Items[i].Count > 0 Then begin
        VerificaMenu(Menu.Items[i], Nodo);
      end;
    End;
  End;
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5

Última edición por Durbed fecha: 02-10-2007 a las 20:35:08.
Responder Con Cita