Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2010
Caljim Caljim is offline
Miembro
 
Registrado: jun 2004
Posts: 21
Poder: 0
Caljim Va por buen camino
Thumbs down Eventos para componentes creados en runtime

A ver si me explico.

Estoy haciendo un formulario, que crea botones en tiempo de ejecucion. El problema es que necesito definir el codigo que se ejecute cuando haga click, pero no se como definirlo. Supongo que sera definir alguna propiedad del boton creado y direccionarlo a un procedimiento previamente hecho, pero no se.
El boton lo creo asi ...
MyButton := TSpeedButton.create(self);
MyButton.parent := Panel;
...

Lo que necesito supongo que será algo así:
MyButton.onclick := (procediento definido)

¿Alguien me echa un cable?

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 23-03-2010
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Tienes que crear un método en la clase que tenga la siguiente firma:

Código Delphi [-]
TMyClass = class(TObject)
private
  procedure MyOnClickEvent(Sender: TObject);
  //...
end;

// Ahora lo asignamos...

MyButton.OnClikc := MyOnClickEvent;


Saludos...
Responder Con Cita
  #3  
Antiguo 25-03-2010
Caljim Caljim is offline
Miembro
 
Registrado: jun 2004
Posts: 21
Poder: 0
Caljim Va por buen camino
En primer lugar muchas gracias por la respuesta.

Voy a explicarme mejor

He hecho un Form con lo siguiente ...
private
Button: TSpeedButton;

Luego en onActivate por ejemplo
For a := 0 to Lista.count - 1 do
begin
Button := TSpeedButton.create(Self);
Button.parent := panel;
Button.name := 'Bu' + Lista;
Button.onClick := MyOnclick(Button);

end;

In dispues el proc...

procedure TMyForm.MyOnClick(Sender: TObject);
begin
ShowMessage(Sender.name);

End;

Al ejecutar esto me da el error
Incompatible types TNotifyEvent and procedure

Que opinais???
Responder Con Cita
  #4  
Antiguo 25-03-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por Caljim Ver Mensaje
Button.onClick := MyOnclick(Button);
Al asignarlo de esa forma, con parámetros, el compilador debe entender que se trata de la llamada a un procedimiento y no una referencia al mismo.
Esta es la forma:
Código Delphi [-]
Button.onClick := MyOnclick;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 25-03-2010 a las 19:51:13.
Responder Con Cita
  #5  
Antiguo 25-03-2010
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Delphi.com.ar,
Creo que te equivocaste al copiar y pegar. No veo cual es la diferencia entre tu cita y el código que propones

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 25-03-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Delphi.com.ar,
Creo que te equivocaste al copiar y pegar. No veo cual es la diferencia entre tu cita y el código que propones
Corregido!... gracias!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 25-03-2010
Caljim Caljim is offline
Miembro
 
Registrado: jun 2004
Posts: 21
Poder: 0
Caljim Va por buen camino
Muchisimas gracias,

Pensaba que de esta manera el compilador me devolveria que faltaban parametros, pero ahora lo entiendo, no llamo al procedimiento, sino que dirijo la llamada del evento a ese procedimiento.

Gracias de nuevo
Responder Con Cita
  #8  
Antiguo 26-03-2010
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por delphi.com.ar Ver Mensaje
Corregido!... gracias!
De nada Federico,
No tienes que agradecer, justo pasaba por aquí y vi el pequeño error y consideré que era mejor darlo a conocer antes de que empezaran los hilos con mensajes "pero es lo mismo" "que no funciona" ,etc.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
eventos de componentes creados en runtime slipknot1111111 OOP 2 31-01-2008 17:51:09
Problema con borrado de componentes creados en tiempo de ejecución harpo OOP 5 22-12-2007 16:54:55
Localizar controles creados en runtime salvica OOP 7 08-12-2007 17:05:06
cambiar tamaño y mover componentes creados en tiempo de ejecucion gulder API de Windows 4 18-11-2006 23:21:16
Eventos en componentes creados en tiempo de ejecucion joumont OOP 3 27-12-2005 14:48:23


La franja horaria es GMT +2. Ahora son las 01:02: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