FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Crear evento a un componente creado en ejecución
Hola compañeros, vengo con esta pequeña duda, estoy creando componentes en tiempo de ejecución, ¿existe alguna forma de crearle un evento como OnClick y llamarlo?.
Saludos. EDITO: se me olvidó el código:
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. Última edición por enecumene fecha: 04-10-2008 a las 00:17:33. |
#2
|
||||
|
||||
#3
|
||||
|
||||
Gracias Roman, justamente estaba probando este método que comentas, en unos minutos te comento como me va.
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#4
|
||||
|
||||
Bueno volví rápido, me entró una duda, por ejemplo, en este pedazo de código donde se crea el componente TImage bajo TPanel1:
¿El procedure lo creo fuera del constructor o dentro o entre begin...end del Timage?, disculpa mi ignorancia. Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#5
|
||||
|
||||
Recuerda que Delphi no es un lenguaje de esos interpretados que hay por ahí No puedes crear funciones durante la ejecución. El evento debes declararlo como te comenté anteriormente, en la declaración del formulario, e implementarlo en la zona interface.
// Saludos |
#6
|
||||
|
||||
Gracias Roman, pero ahora tengo otro problema, dentro del panel se crean dos labels (TLabel), y ahora no logro llamar el caption de uno específico :
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#7
|
||||
|
||||
¡Oh! Disculpa. No había visto que está definiendo tu propio componente. El método debes definirlo en la declaración de TPanel1 e implementarlo en la zona implementation de ese mismo componente:
// Saludos |
#8
|
||||
|
||||
Disculpa roman, como estoy creando un Timage dentro del TPanel que lo cubre por completo, ¿al dar click funciona el procedimiento aunque la imagen esté encima? .
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#9
|
||||
|
||||
Como que ya no esstoy entendiendo. ¿De qué va el componente? Si es un panel y dentro hay un Image que abarca todo entonces estamos hablando del click de la imágen y ésa es la que va a responder.
// Saludos |
#10
|
||||
|
||||
Cita:
Saludos. PD. Post #6
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#11
|
||||
|
||||
enecumene eso ¿no debería ser un Frame en lugar de un panel?
Según veo tienes un ID, un autor y la foto, pues eso es un frame, con dos labels y un Image colocados en tiempo de diseño, asignas sus eventos y listo. Cuando quieras crear varios:
Lo he puesto así por claridad, se puede mejorar aun más. Si quieres más info, avisa. En el FTP tienes el ejemplo "crear calendario dinamico con frames", quizás te sirva. Que conste que lo que estás haciendo se puede hacer, pero el Frame creo que puede facilitarte las cosas. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#12
|
|||
|
|||
Hola...
Para poder usar las etiquetas y la imagen, necesitas crear las variables que van a servir de referencia:
De esta forma ya podrás hacer referencia a la etiqueta que quieras y a la imagen... Saludos... |
#13
|
||||
|
||||
Vale gracias Lepe, trataré de aplicar eso que comentas con los frames, miren un ejemplo de lo que estoy haciendo (estoy haciendo una vellonera para fines personales y de aprendizaje):
http://img118.imageshack.us/my.php?i...lloneraio1.jpg Eso lo hice con un scrollbox y los panels creado en tiempo de ejecución sacando las imagenes y la información desde la BD con un while. Si con los frames es más fácil pues ahí voy. Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#14
|
|||
|
|||
Hola...
Veo que quieres hacer referencia a las propiedades desde fuera del componente, o sea, cuando este se encuentra en una forma. Para esto puedes crear propiedades en tu TPanel1 que hagan referencia a las propiedades de los componentes internos:
De esta forma ya puedes hacer algo como:
Saludos... Última edición por maeyanes fecha: 04-10-2008 a las 02:15:46. |
#15
|
||||
|
||||
Aplicando la opción de Lepe, hice lo siguiente:
Problema: Cita:
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#16
|
||||
|
||||
bueno amigo enecumene, independintemente de si lo haces con Frames o Paneles, creo que debes aclarar un poco mas el tema de donde y por que se crea este evento y como funciona...
Si buscas en la ayuda, verás que el evento OnClick está definido como una propiedad (Property) dentro de la mayoria de objetos visuales (¿o todos?)
entonces Onclick es una variable (puntero) que referencia a un procedimiento... Pero atención no es cualquier procedimiento..!!! es uno especial definido como un tipo asi:
Esto quiere decir que el tipo TNotifyevent es un tipo de procedimiento que debe estar definido dentro de una clase (De ahi el of Object) Entonces... tu puedes definir tu procedimiento dentro de cualquier clase que tengas en esta u otra unidad... lo mas comun es hacerlo dentro del Tform
La implementación, la debes hacer (Obviamente en la seccion implementation) De la siguiente Manera:
ahora, puedes comenzar a asignarle tus eventos Onclick al objeto que quiereas..!!! Aunque aqui tengo una duda y por favor me corrigen....creo que no puedes asignarselo a la misma clase donde fue definida... es decir, en el caso de
No podrias hacer esto
Pero si puedes hacer esto:
En tu caso definiste el evento en el Tpanel1 y se lo asignaste a tu imagen en el evento OnCreate del Panel.... como todos los objetos referncian al mismo evento onclick, entonces los puedes diferenciar mmediante el sender... El sender, en este y todos los objetos es la instancia que dispara el evento... y puedes difernciar tus objetos asi:
Saludos.... |
#17
|
||||
|
||||
El problema está en que cuando creas tus frames en forma dinámica, por defecto siempre seestá creando con el mismo nombre de componente.... FRAME1...
Debes asiganarle un nombre específico..
|
#18
|
||||
|
||||
¡Muchas gracias Gatosoft!, era lo que me faltaba, me funcionó de pelos, opté por la opción de Lepe, no se me hubiese ocurrido pues nunca he trabajado con frames, ahora lo usaré con más frecuencia.
Saludos y gracias a todos .
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#19
|
||||
|
||||
Saludos compañeros, aprovechando el hilo se me presentado un problemilla y es como eliminar los frames creados en tiempo de ejecución que están dentro de un scrollbox, hice lo siguiente:
Pero no me funcionó, ¿alguien me da una mano?. Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
#20
|
||||
|
||||
Intenté este otro código aún no me funciona:
Saludos.
__________________
Mi BLOG - ¡Joder, leanse la guia de estilo! Las Palabras son enanas, los ejemplos gigantes. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como crear un boton en ejecucion y ponerle un evento | jeremiselxi | Varios | 6 | 24-09-2008 20:34:40 |
Como saber si me frame esta creado en cierto evento? | Albano | OOP | 2 | 15-03-2007 23:13:44 |
ayuda con boton creado dinamicamente y sus evento | cureham | OOP | 1 | 13-09-2006 09:39:14 |
Crear componente Image en tiempo d Ejecucion | Jessica666 | Gráficos | 6 | 30-05-2004 01:58:22 |
asignar evento a control creado dinamicamente | jorgeganc | Varios | 4 | 17-12-2003 02:47:51 |
|