Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-05-2004
morfeo21 morfeo21 is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
morfeo21 Va por buen camino
Generar Evento en titemmenu

Hola Amigos, Una consulta . He creado un menu de opciones dinámicamente y lo que pretendo es poder ejecutar el evento onclik del menuitem. Primeramente les dire que he creado procedimientos que se deben de ejecutar cuando yo haga clic en la opcion, pero estos no estan amarrados al evento pues el menu como les vuelvo a indicar lo he creado dinámicamente. Ahora el nombre del procedimiento lo tengo almacenado en una bd. y quisiera poder ejecutar el evento haciendo referencia solo al nombre del procedimiento. tienen alguna idea?. Gracias
Responder Con Cita
  #2  
Antiguo 01-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Al ser pascal un lenguaje compilado, lo que estas pidiendo no es posible asi, a las planas.

Siempre podes hacer algo como:

Código Delphi [-]
if NombreProcedimiento = 'procedimientouno' Then
  procedimientouno;
else if NombreProcedimiento = 'procedimientodos' Then
  procedimientodos;
.

Obviamente, de esta forma no hay tanto dinamismo como quisieras, y puede volverse tedioso. De funionar... funciona.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 01-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A ver si entendí correctamente morfeo:

Imagino que tienes una tabla en la bd del estilo

Código:
----------------------
texto  |  procedimiento
----------------------
texto1 | procedimiento1
texto2 | procedimiento2
texto3 | procedimiento3
  ...  |      ...
-----------------------
donde el campo texto sería el texto que aparece en el ítem y procedimiento el nombre del procedimiento que debe ejecutarse al hacer click en el ítem.

Como dice jachguate, no puedes ejecutar un procedimiento por su nombre en un lenguaje compilado. Esto no es una limitante de lenguajes de este tipo, es sólo que las cosas se hacen de otra forma.

Fíjate lo que requieres:

Una forma de asociar el nombre del procedimiento con el procedimiento en sí.

Esto ya existe en Delphi: ActionList

Un ActionList es una lista de acciones, cada cual con su correspondiente evento OnClick en donde pones el código que quieras y cada acción, como cualquier componente, tiene un nombre. Este nombre es el que tomarías del campo procedimiento de la tabla.

Con esto ya tienes una correspondencia entre los nombres y los procedimientos. Lo que falta es asociar cada acción al ítem que creas dinámicamente. Pero esto es fácil: cada MenuItem tiene una propiedad Action a la que puedes asignar cualquier acción del ActionList. Al hacer click en un ítem- el cual no tiene asociado un evento OnClick -lo que se ejecuta es el evento OnClick de la acción asociada.

En resumen harías lo siguiente:

Usas una componente TActionList (de la paleta Standard) y la llenas con todas las acciones (TAction) que requieras asignando a cada una el nombre que le corresponda al de la tabla y codificando cada evento OnClick como requieras.

Al momento de construir dinámicamente el menú lees el registro que toque de la tabla, te fijas en el valor del campo texto, recorres la lista de acciones del ActionList hasta encontrar la que lleve el mismo nombre y asignas la acción encontrada al ítem construido.

// Saludos

Última edición por roman fecha: 01-05-2004 a las 08:11:23.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:47:23.


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
Copyright 1996-2007 Club Delphi