PDA

Ver la Versión Completa : ayuda para pasar un TMainMenu a Ttreeview


microbiano
31-03-2012, 10:40:39
buenos dias amigos.

esa es la pregunta como paso un TmainMenu a un TTreeview, esto con la finalidad de poder otorgar permisos a mis usuarios

el Tmainmenu esta en el form principal de nombre FrmMenu, y el TTreeview esta en otro formulario de nombre FrmPermisos.

encontre esta rutina pero no logro hacerla funcionar.

procedure TFpermisos.VerificaMenu(Menu: TMenuItem; Nod: TTreeNode);
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:= tv1.Items.Add(Nil, Menu.Items[i].Caption);
Nodo.ImageIndex := Menu.Items[i].ImageIndex;
End
Else begin
// Crear un hijo
Nodo:= tv1.Items.AddChild(Nod, 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;

y la llamo de la siguiente manera

VerificaMenu(FrmMenu.menuItem.Items,nil);

pero no logro hacerla funcionar alguna sugenrecia.?

de antemano muchas gracias amigos del foro

makina
31-03-2012, 17:06:08
Hola que tal, yo he usado esa rutina y funciona perfecto,
podrías dar mas detalle de que error te muestra o cual es el problema?

Saludos

microbiano
01-04-2012, 02:21:38
creo que el problema radica en el en TmainMenu no esta en el mismo Formulario que el Ttreeview, adjunto en archivo zip el error que me manda, de antemano muchas gracias amigo

microbiano
01-04-2012, 02:23:58
adjunto el error que me manda cuandto trato de llamar a la funcion con este codigo.

VerificaMenu(fmenu.Menu.Items,nil);

microbiano
03-04-2012, 05:07:31
hola amigos aun no he podido resolver la problematica de cargar el menu en el Treeview, alguna sugerencia.?

newtron
03-04-2012, 09:07:15
Hola.

No he ejecutado tu código pero echandole un vistazo veo que a la función le pasas como parámetro la variable Nod pero sin embargo luego todas las asignaciones las haces sobre una variable local llamada Nodo que no creas, por eso te da esa excepción.

Saludos

Neeruu
03-04-2012, 13:17:20
Hola microbiano!!!

Te adjunto un ejemplo andando de la procedimiento para que lo controles con lo que tienes hecho...

Espero que te sirva...

Saluda Atte Neeruu!!!:)