PDA

Ver la Versión Completa : Menu Pricnipal


RockFaster
07-10-2008, 19:12:56
Hola a todos, les hago una consulta. Es posible incertar dos menues principales y hacer que cada uno se muestre en funcion del usuario que se haya logeado. Es decir, para un usuario muestro un menu y para el otro usuario muestro el otro menu. Muchas Gracias

maeyanes
07-10-2008, 19:25:50
Hola...

Esto no lo he probado, pero me parece que no se puede así como indicas...

Lo que si se puede es esconder o deshabilitar ciertos elementos del menú. También es posible que crees dinámicamente (en tiempo de ejecución) los elementos del menú.

Para más información, puedes hacer una búsqueda en estos foros, ya que es algo que se ha tratado con anterioridad.


Saludos...

Caral
07-10-2008, 19:28:32
Hola
Creo que seria posible creándolos en tiempo de ejecucion.
Saludos

jhonny
07-10-2008, 19:29:18
De hecho y como apunte adicional... para este tipo de cosas normalmente se hace uso del TActionManager ;)

ContraVeneno
07-10-2008, 21:53:02
este procedimiento está bastante interesante...
Lo que hace es crear un menú por medio de un archivo XML, de esa forma puedes configurar un archivo por cada usuario, o teniendo una tabla de usuarios y accesos, puedes definir que partes del menú se ven y cuales no.

ya no lo pude encontrar en Torry's, pero ahí lo vi originalmente:
http://xmldelphi.info/5124_dinamicheskoe_sozdanie_menyu_po_xml-faylu.htm

roman
07-10-2008, 22:59:56
Es posible incertar dos menues principales y hacer que cada uno se muestre en funcion del usuario que se haya logeado. Es decir, para un usuario muestro un menu y para el otro usuario muestro el otro menu.

Sí, claro que se puede. Sólo tienes que asignar a la propiedad Menu del formulario el MainMenu que quieras usar.

// Saludos

Caral
07-10-2008, 23:05:22
Hola
Veo que lo haces a propósito, primero nos dejas que metamos las patas y luego nos demuestras que estamos verdes:D:D, verdad Roman.:);)
Saludos

roman
07-10-2008, 23:09:39
No, no. Yo me limité a contestar lo que preguntó el compañero. Pero si me preguntan -y supongo que debí mencionarlo antes- yo usaría alguna de las opciones que le propusieron.

// Saludos

Caral
07-10-2008, 23:15:24
Hola
Vamos hombre que la opción de cambiar el menu es simple (claro después de que lo enseñaste a hacer).
Por lo menos yo intente hacerlo y no se me paso por la mente en ningun momento usar el menu del form, es mas como nunca uso menus, nunca lo vi.:D:D
Roman, solo puedo decir: Una lección mas que me das y me alegro mucho.:)
Saludos

roman
07-10-2008, 23:21:54
Digo que usaría alguna de las otras opciones porque lo natural será construir el menú de acuerdo a los permisos del usuario (leidos de alguna tabla, por ejemplo) de forma dinámica. Cambiar el MainMenu serviría sólo si habrá dos usuarios siemprey por siempre en la aplicación, vamos, que espoco flexible.

Lo de cambiar el MainMenu no suele venirnos a la cabeza porque esa propiedad se establece en automático tan pronto colocamos uno en el formulario y por ello no la recordamos.

// Saludos

dec
07-10-2008, 23:41:36
Hola,

No recuerdo dónde (creo que fue en algún libro sobre Delphi) leí que se podía llevar a cabo algo así como un "merge" de menús. Creo que era entre distintos formularios, o en aplicaciones con interfaz MDI, que, según qué ventana se mostrase, llevaba consigo mostrar cierto menú o no mostrarlo: no ya deshabilitar ciertos elementos del menú, sino no mostrarlos.

El asunto parece interesante, puesto que nos permitiría tener varias "plantillas" de menús, que se mezclarían (esa es la palabra perfecta para este caso) con el menú principal dependiendo de determinadas circunstancias. Ahora mismo sería incapaz de mostrar ningún ejemplo, ni dar ningún enlace, pero, tal vez de mis palabras pueda buscarse más información... aunque lo dudo. :(

roman
07-10-2008, 23:47:15
Pues es tal como dices. En una aplicación MDI, cada ventana hija puede tener su propio menú que se mezcla con el menú principal cuando se activa. Hasta donde recuerdo, la mezcla se basa en el GroupIndex del item de menú.

Si, por ejemplo, el menú de la ventana principal establece un GroupIndex de 1 para el menú "Edición", y si una ventana hija hace lo mismo, al activarse ésta última, su menú "Edición" reemplazaría al de la ventana prncipal.

// Saludos

dec
07-10-2008, 23:52:42
Hola,

Pues así es Román. Lo que no sé es si podría aprovecharse para el caso que nos ocupa. Habría que ver... :rolleyes:

Neftali [Germán.Estévez]
08-10-2008, 07:59:50
El asunto parece interesante, puesto que nos permitiría tener varias "plantillas" de menús, que se mezclarían (esa es la palabra perfecta para este caso) con el menú principal dependiendo de determinadas circunstancias.

Nosotros lo tenemos así. Es posible y muy práctico, aunque no es trivial.
En nuestro caso los menus se definen en diferentes formularios de diferentes packages. A medida que se van cargando los packages (segun el usuario) se van "agregando" los diferentes menús al del form principal; De esta forma al finalizar la carga el menu principal está completo con las opciones que se han ido cargando de cada package. De forma añadida un usuario puede tener opciones deshabilitadas (eso es a posteriori).

Para conseguir el ordenamiento correcto de los menús nosotros utilizamos la propiedad TAG. De esta forma al final un el menu de "Maestros" (por decir uno) puede estar compuesto por partes que vienen de 2, 3 o 4 paquetes, dependiendo de el usuario. A cada una de las opciones se le asigna un Tag que después determina en orden en el menu final.