Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Crear evento boton dinamico dentro de form dinamico

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Crear evento boton dinamico dentro de form dinamico Responder citando

Buenas..

Dentro de un Formulario FormPadre he creado un furmulario Hijo de forma dinamica
Código:

TForm * FHijo;
FHijo = new TForm(this)


Y a su vez un Boton de forma dinamica dentro de este Form Hijo:
Código:

TLMDButton *MiBoton;
MiBoton = new TLMDButton(this);
MiBoton->Parent = FHijo;


Hasta aqui todo correcto..mi problema surge cuando quiero acceder al evento click del MiBoton

Código:
MiBoton->OnClick = ClickBoton;


supongo que debo de declarar la funcion:

Código:

void_fascall FHijo::ClickBoton(TObject *Sender)
{
}


pero no se como ni donde... Alguna idea

Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

coloque un botón en el formulario
Cambie el nombre. Por ejemplo: button
haga doble clic en él
Código:

void __fastcall TForm1::buttonClick(TObject *Sender)
{
}

en el código hace un comentario
Código:

void __fastcall TForm1::buttonClick(TObject *Sender)
{
  //
}


delete el botón
puede utilizar este onclick

Código:


MiBoton->OnClick = buttonClick;

...

void __fastcall TForm1::buttonClick(TObject *Sender)
{
  ShowMessage("Builder");
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas Garcias por contestar..

He hecho lo que me has sugerido y al compilar no me da ningun error, pero al ejecutar el programa y hacer click sobre los botones no me accede al evento correspondiente (no hacen nada).

Que puedo estar haciendo mal??

Gracias otra vez.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Mira este ejemplo:

Código:

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
  TButton *Button1;
  void __fastcall Button1Click(TObject *Sender);
  void __fastcall ButtonHijoClick(TObject *Sender);

private:   // User declarations
public:      // User declarations
  __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif


Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TForm *FHijo = new TForm(this);
  TButton  *MiBoton = new TButton(this);
  MiBoton->Parent = FHijo;
  MiBoton->OnClick = ButtonHijoClick;
  MiBoton->Caption = "Mi Boton";
  FHijo->Show();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ButtonHijoClick(TObject *Sender)
{
  Beep();
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perfecto... Gracias a los dos
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Buenas..

Me ha surgido otro problema...

He creado el form FHijo (creado dinamicamente) de esta manera:

Código:
FHijo->ShowModal();


Al hacer Click con el raton en uno de los botones creados dinamicamente (funciona, gracias) quiero que se cierre el FHijo..

He probado a pone en su evento click los siguientes codigos


Código:
Application->OnMessage=0;
ModalResult=mrOk;


Código:
This->Close();


Código:

PostMessage(Handle,WM_Close,0,0);


y no se cierra el form.

Alguna idea Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si declaras FHijo como miembro de la clase o como una variable blobal, puedes hacer:

Código:

void __fastcall TForm1::ButtonHijoClick(TObject *Sender)
{
  FHijo->Close();
}


En caso contrario:
Código:

void __fastcall TForm1::ButtonHijoClick(TObject *Sender)
{
  TButton *B = static_cast<TButton*>(Sender);
  if(B){
    TForm *F = static_cast<TForm*>(B->Parent);
      if(F) F->Close();
  }
}


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.