FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Menu configurable
Tengo un componente Actionlist, en el cual tengo varias opciones de menu configuradas que en su procedimiento excecute realizan varias acciones como desplegar pantallas, reportes etc, como puedo hacer para que un boton en el evento action reemplazarlo por el valor de una variable que sera una de las opcioes de mi action list. La idea es hacer un menu configurable entonces yo tengo todos los nombre de los action list en una base de datos entonces quiero seleccionar uno y ejecutarlo desde un boton, asi podre ejecutar todas las opciones del menu que desee, pero tengo el problema de que los nombres de los action list almacenados en la tabla son caracteres y el evento action del boton solo maneja datos TbasicAction como puedo hacer esto.
Gracias anticipadas. |
#2
|
||||
|
||||
Puedes buscar el TAction por su nombre y ejecutarlo
Puedes buscar el TAction por su nombre y ejecutarlo:
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... Última edición por defcon1_es fecha: 17-12-2009 a las 10:18:51. |
#3
|
||||
|
||||
Cita:
Si tienes los nombres de las Action y quieres ejecutar una a partir de su nombre (propiedad Name), basta con un código similar a este:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
Neftali al parecer no me explique bien, primero te voy a explicar lo que quiero hacer de forma general y luego el caso en especifico. Quiero hacer un menu que no sea estatico, en donde yo coloque en una tabla los nombre de los items de una action list de forma tal que si quiero agregar una opcion al menu solo tenga que hacer una entrada en la tabla con el item del action list correspondiente. Hasta ahi todo va bien, el problema surge cuando seleccion una linea de la tabla y quiero que se ejecute, por ejemplo un item del action list se llama MnCuentas yo quiero poder hacer que presionando un boton este item se ejecute, y es facil si solo fuera uno porque bien facil puedo hacer al evento Action del boton que presionare que sea igual al nombre del action list, pero recuera que estos items estan en una tabla y no puedo pasar al evento action del boton un campo de una tabla. Ese basicamente es mi problema, te agradeceria sobre manera si me prestas tu conocimiento en esto. Gracias anticipadas
|
#5
|
||||
|
||||
Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
|||
|
|||
comp := FindComponent('MnCuentas');
Es que precisamente esto que has hecho es el problema, no puedo pasar el nombre del action list dentro del codigo osea no puedo hacer esto comp := FindComponent('MnCuentas'); porque solo me funcionaria para ese item del action list, cuando lo que quiero es que funcione para cualquiera que yo seleccione dentro de la tabla, en otras palabras ese Mncuentas deberia ser un campo del query por ejemplo form1.querynombrecampo.value pero esto no se como hacerlo, si esto fuera posible yo solo tendria que posicionarme en un registro de la tabla en donde estan los action list y selecciono la opcion de menu que deseo y presiono un boton y esa opcion se ejecutaria, de esta forma el menu seria dinamico. Gracias anticipadas. |
#7
|
||||
|
||||
una ves programe algo como eso, y aqui el codigo.
En resumen de tu caso creo q sin problemas podrias hacer
|
#8
|
|||
|
|||
Buenas tardes,
Bien sigo sin entender, tienen que tenerme paciencia porque soy un novato en programacion orientada a objetos y hay cosas que no las comprendo. De tu ejemplo pude saber como convertir un texto a Taction y eso ya es un avance, pero aun no me funciona lo que quiero hacer mira este codigo procedure TFMenuUsuarios.cxButton5Click(Sender: TObject); var comp : Taction; begin comp := FindComponent (FUsuarios.QMenuNombreObjeto.Value) as TAction; TAction(comp).Execute; end; se supone que deberia funcionar ahi lo que hago es segun el registro en que estoy posicionado ejecuto la action del action list, ya que el contenido de ese registro es el nombre del item en el action list. Pero no funciona. Sin embargo si sustituyo la variable por el nombre directo del item del action list si funciona. seria algo asi procedure TFMenuUsuarios.cxButton5Click(Sender: TObject); var comp : Taction; begin comp := FindComponent (MnCuentas) as TAction; TAction(MnCuentas).Execute; end; Donde MnCuentas es unos de los action list contenidos en la tabla desde donde estoy ejecutando. Espero haberme explicado correctamente para ver si me pueden dar alguna ayuda sobre esto. Gracias anticipadas. |
#9
|
||||
|
||||
Cita:
En tu caso un campo de tu tabla debe tener asociado en nombre del TAction, sino no hay forma de "enganchar" lo que tienes en Base de Datos, con lo que tienes en código. ¿Exactamente qué tienes almacenado en la tabla? ¿Cuales son los campos? Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Hola.
Añade TAG's al código para que se lea mejor. El problema es que esos dos códigos no son equivalentes, ya que en el segundo:
MnCuentas no es el nombre del componente, sino el componente en sí. Vamos por partes (como dijo Jack el destripador...) Coloca el siguiente código:
Ejecútalo, paso a paso, si hace falta y dinos qué mensajes te salen...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
|||
|
|||
Buenos dias,
Neftali es que ya tengo la tabla creada con los campos correspondientes, y hay un campo llamado NombreObjeto que contiene el nombre del action list que quiero ejecutar, pero es que ahi es que esta el problema porque cuando paso el contenido del campo para que sea ejectuado no funciona mira esto es lo que hago que no funciona procedure TFMenuUsuarios.cxButton5Click(Sender: TObject); var comp : Taction; begin comp := FindComponent (FUsuarios.QMenuNombreObjeto.Value) as TAction; TAction(comp).Execute; end; Pero si hago esto mismo pero sustituyo el lugar donde esta el campo de la tabla por el nombre que esta contenido en el campo si me funciona que seria esto procedure TFMenuUsuarios.cxButton5Click(Sender: TObject); var comp : Taction; begin comp := FindComponent (MnCuentas) as TAction; TAction(MnCuentas).Execute; end; Actualmente estoy atorado ahi, no se como resolverlo. Gracias por su colaboracion. |
#12
|
|||
|
|||
Buenos dias,
Dice que no encuentra el componente, es decir no entra al codigo de la ejecucion de la accion. este es el mensaje 'No encontrado el componente: Para contestar algo que preguntaste sobre Mncuentas, el actionlist se llama ActionList1 y MnCuentas es una accion que yo he creado dentro de ese actionlist. Por eso los dos codigos que viste hace un momento si son equivalentes, porque lo que estoy haciendo es sustituyendo en uno de ellos el puntero de la tabla por el contenido que tiene ese campo en la misma tabla, porque en la tabla yo tengo en cada registro los nombres de acciones en el action list. |
#13
|
||||
|
||||
Cita:
Creo que con un ejemplo se verá más claro... Ahí tienes una pequeña tabla (XML) que tiene una serie de acciones definidas (nombre) que coinciden con las que existen en el programa. Selecciona una línea del Grid y pulsa ejecutar; Eso a partir de lo que hay definido en el campo NOMBRE ejecuta la acción (TAction) que se llama igual y que está definida en el programa.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#14
|
|||
|
|||
Buenos dias,
Listo funciono o mejor dicho lo hiciste funcionar el tema estaba en que el actionlist estaba en una pantalla diferente de donde estaba ejecutando el boton, entonces lo unico que tuve que hacer es especificar donde iba a buscar el componente es decir cambiar esto comp := Fmenu.FindComponent(Str) Un millon de gracias, en verdad te lo agradezco bastante, voy a seguir trabajando con este proyecto porque ahora tocan pulir otras cositas, gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear Cubos en un plano Configurable | Efren2006 | Gráficos | 11 | 24-03-2009 15:12:10 |
QReport configurable por el usuario ?? | Delphitest | Impresión | 1 | 02-02-2009 05:02:16 |
Showmessage configurable | Marwuinh | Varios | 6 | 23-10-2008 22:05:37 |
iconos para el el menu main o pop menu... | vroa74 | Gráficos | 0 | 06-10-2008 15:54:56 |
Imagen o texto sobre el menu / menu con align / menu movible | dajaji | Varios | 12 | 21-09-2007 00:30:19 |
|