Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Menu Pricnipal (https://www.clubdelphi.com/foros/showthread.php?t=60612)

RockFaster 07-10-2008 19:12:56

Menu Pricnipal
 
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_dinamiche..._xml-faylu.htm

roman 07-10-2008 22:59:56

Cita:

Empezado por RockFaster (Mensaje 318698)
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

Cita:

Empezado por dec (Mensaje 318805)
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.


La franja horaria es GMT +2. Ahora son las 18:59:13.

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