Foros del Web » Programación para mayores de 30 ;) » C/C++ »

modificar evento onClick de boton creado dinamicamente c++ builder

Estas en el tema de modificar evento onClick de boton creado dinamicamente c++ builder en el foro de C/C++ en Foros del Web. Gente, me ha surgido un problema. La idea es que mi programa cree botones dinamicamente de pendiendo la dimension de un arreglo, es decir, dimension ...
  #1 (permalink)  
Antiguo 27/12/2011, 15:55
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 13 años
Puntos: 25
modificar evento onClick de boton creado dinamicamente c++ builder

Gente, me ha surgido un problema.

La idea es que mi programa cree botones dinamicamente de pendiendo la dimension de un arreglo, es decir, dimension del arreglo = cantidad de botones a crear. Luego de crear el boton necesito modificar su evento onClick para asignarle la funcion que quiero que haga.


hasta ahora tengo lo siguiente:

Código C++:
Ver original
  1. class MiBoton{
  2.  
  3. private:
  4.         TButton *Boton;
  5.  
  6.         MiBoton *Siguiente;
  7.  
  8.         TNotifyEvent* Evento();
  9. public:
  10.  
  11.  
  12. bool Crear(TWinControl *Padre,
  13. int x,
  14. int y,
  15. int Height,
  16. int Width){
  17.  
  18. this->Boton= new TButton(Padre);
  19.  
  20. this->Boton->Top= Top;
  21. this->Boton->Left= Left;
  22. this->Boton->Height= Height;
  23. this->Boton->Width= Width;
  24.  
  25. this->Boton->Parent= Padre;
  26.  
  27. Boton->OnClick= Evento();  
  28. }
  29. };



La idea es que le asigne a la variable Boton en su evento OnClik la funcion Evento(), pero me da el siguiente error:

Cannot convert TNotifyEvent to TNotifyEvent.


No se si la asignacion es valida (por lo que veo no lo parece), pero no encuentro en ningun lado como modificarlo, he encontrado como crear nuevos eventos pero no entiendo las explicaciones jeje.

Saludos y gracias
  #2 (permalink)  
Antiguo 27/12/2011, 18:09
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 13 años
Puntos: 25
Respuesta: modificar evento onClick de boton creado dinamicamente c++ builder

bien, he logrado lo que pretendia :).....


ARCHIVO .h

primero que nada se deben incluir las siguientes librerias:

- StdCtrls.hpp
- Controls.hpp
- systobj.h

Código C++:
Ver original
  1. #include <StdCtrls.hpp>
  2. #include <Controls.hpp>
  3. #include <systobj.h>

Luego creo una nueva clase MiBoton que sera derivada de la clase TButton.

Código C++:
Ver original
  1. class MiBoton : public TButton{};

en la parte private: declare lo siguiente:

Código C++:
Ver original
  1. class MiBoton : public TButton{
  2.  
  3. private:
  4.  
  5. TButton *Boton; //almacena la direccion de memoria del boton que sera creado;
  6.  
  7. TWinControl *Propietario; //almacena la direccion de memoria del componente que
  8.                                //padre del boton
  9.  
  10. void __fastcall BotonClick(TObject *Sender); //esta es el evento en si, lo que se ejecutara
  11.                                   //cuando se haga click en el boton
  12.                                                                    
  13. };


y en la parte public:

Código C++:
Ver original
  1. class MiBoton : public TButton{
  2. private:
  3.  
  4. ...
  5.  
  6. public:
  7.  
  8. //se encarga de establecer la posicion y el tamaño del boton, tambien lo muestra
  9. void crear(int x, int y, in Height, int Width);
  10.  
  11. MiBoton(TWinControl *Padre):TButton(Padre){
  12. Boton= new TButton(Padre);
  13. Propietario= Padre;
  14. };


luego en el archivo .cpp lo unico que hay que hacer es crear la funcion BotonClick(TObject *Sender y la funcion Crear(int, int, int, int)

ARCHIVO .cpp

Código C++:
Ver original
  1. void MiBoton::Crear(int Top, int Left, int Height, int Width){
  2.  
  3.  
  4. //se establece la posicion del boton, el tamaño y se muestra
  5. this->Boton->Top= Top;
  6. this->Boton->Left= Left;
  7. this->Boton->Height= Height;
  8. this->Boton->Width= Width;
  9.  
  10. this->Boton->Parent= this->Propietario;
  11. //se termina de mostrar el boton
  12.  
  13.  
  14. //se asigna al evento OnClick del boton la funcion BotonClick
  15.  Boton->OnClick= BotonClick;
  16. }
  17.  
  18. void __fastcall MiBoton::BotonClick(TObject *Sender)
  19. {
  20. //aqui va lo que queremos que haga el boton
  21. }


Tengan en cuenta que esto lo hice mirando que se agregar en los archivos .h y .cpp de un formulario cuando queremos crear un evento y de ahi saque mis conclusiones..... funciona, pero puede que genere algun error a futuro si esta no es la manera correcta de hacerlo.

Saludos

Etiquetas: builder, creado, dinamicamente, evento, funcion, modificar, onclick, programa, botones, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.