Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   menú dinámico con eventos dinámicos (https://www.clubdelphi.com/foros/showthread.php?t=33297)

mguixot 03-07-2006 14:24:25

menú dinámico con eventos dinámicos
 
Hola, buenas tardes,

estoy realizando un menú dinámico para mi aplicación, mediante el componente TMainMenu y ayudandome de un fichero XML.
En mi fichero XML me almaceno datos como Caption y OnClick, es decir, le indico el nombre del procedimiento al que tiene que llamar.
Este procedimiento ya lo tengo declarado y definido en mi aplicación, pero no puedo asignarselo en tiempo de ejecución al elemento TMenuItem que estoy creando.
Sabeís como puedo asignar en OnClick, el nombre del procedimiento al que llamar.
Código Delphi [-]
 
    ...
    MiElemento.caption := 'Elemento1';
    MiElemento.OnClick := 'MiProcedimiento1';
    ...

Lógicamente en la propieada OnClick, no puedo asignar un tipo string, pero como hacer para que me deje asignarlo?.

Saludos

jam 03-07-2006 15:08:31

Create un Stringlist con el nombre de todas las funciones y en la propiedad objects guardas el puntero al procedimiento.

Neftali [Germán.Estévez] 03-07-2006 15:38:23

Otra opción es definir el procedimiento como published y acceder aél a través de RTTI. Aquí tienes un ejemplo de cómo ejecutar procedimientos a partir de su nombre utilizando RTTI.

mguixot 04-07-2006 08:41:10

Hola de nuevo JAM,

estoy intentando implementar tu solución, pero no entiendo la última parte que dices
Cita:

en la propiedad objects guardas el puntero al procedimiento
Esa propiedad de que componente es?, en cualquier caso, podrías indicarme un pequeño ejemplo?.

Saludos

Lepe 04-07-2006 16:05:05

En Objects guardas un puntero, si lo escribes... estas escribiendo una dirección de memoria, que despues ... puede no ser útil.

RTTI es la única opción viable a mi parecer.... claro ;)

Saludos


La franja horaria es GMT +2. Ahora son las 00:51:02.

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