Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Por fa, como crear menus dinámicos, con los items que un usuario tiene autorizados? (https://www.clubdelphi.com/foros/showthread.php?t=47004)

Ale Alvarez 15-08-2007 23:57:31

Por fa, como crear menus dinámicos, con los items que un usuario tiene autorizados?
 
Hola, mi pregunta es como se pueden crear menús dinámicos en Delphi que permitan mostrar solo los items para los cuales el usuario está autorizado?
Como se puede manipular que item va a tener un TMainMenu?
GRacias por la ayuda

jhonny 16-08-2007 00:07:28

Un ejemplo de agregarle un TMenuItem a un TMenu, es este:

Código Delphi [-]
var
  MenuItem :TMenuItem;
begin
  MenuItem := TMenuItem.Create(Menu);
  MenuItem.Action := Action1;
  Menu.Items.Add(MenuItem);
end;

Donde Action1 es una accion que pertenece a un TActionManager (Si no sabes usar el TActionManager te recomiendo hacer una busqueda en los foros de la palabra TActionList o TActionManager y encontraras bastante informacion). El ejemplo que te he mostrado tendrtas que adaptarlo a tu necesidad. Espero te sirva ;).

Chris 16-08-2007 00:41:32

Sí, es mejor que trabajes con los actions.

pero porque no mejor los ocultas en vez de estarlos creando.

Código Delphi [-]
Case Nivel_Usuario of
1 : Accion_agregar.visible := False;
2 : Accion_edicion.visible := False;
...

De esta forma, también se ocultarán los menús asociados a las acciones.

también es recomendable que cambies la propiedad Enabled para que los comandos no se puedan ejecutar de ninguna forma.

Neftali [Germán.Estévez] 16-08-2007 09:41:54

En la sección de ejemplos de esta página, hay uno totulado "Crear un menu de aplicación a partir de texto"; Está con el código fuente así que puedes ver cómo se crean los elementos de un menú a partir de una estructura de texto.
Lo que le faltaría en tu caso sería saber para un determinado usuarios, saber cuales de esos ítems deben crearse y cuales no; O crearlos todos y posteriormente ocultar algunos y otros no.

Amos 16-08-2007 21:17:24

Yo lo que hago es crear los menús, despues cargo los pribilejios de la BD y Muestro/oculto los que se necesiten

ArdiIIa 16-08-2007 21:50:15

Cita:

Empezado por Ale Alvarez (Mensaje 223394)
Hola, mi pregunta es como se pueden crear menús dinámicos en Delphi que permitan mostrar solo los items para los cuales el usuario está autorizado?
Como se puede manipular que item va a tener un TMainMenu?
GRacias por la ayuda


Hola Ale Alvarez

Tal vez este hilo te ayude un poquito.

roman 16-08-2007 22:08:14

Yo lo que he hecho (hace mucho, así que no recuerdo los detalles) fue usar tres tablas:

usuario = (id, usuario, password, otros campos)
procesos = (id, descripcion, otros campos)
privilegios = (usuario_id, proceso_id)

La tabla privilegios guarda una entrada por cada proceso al que tiene derecho un usuario. El id del proceso lo almaceno en la propiedad TAG del menuitem o action que de acceso al proceso correspondiente.

Cuando se abre la aplicación, recorro el menú o el action list con un ciclo y busco el par (usuario, tag) en la tabla privilegios y muestro y/o habilito el item sólo si dicho par está en la tabla.

// Saludos


La franja horaria es GMT +2. Ahora son las 21:07:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi