Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/12/2011, 18:09
starfix
 
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