Programación General > C++ Builder

 Asignar evento en tiempo de ejecución

(1/2) > >>

carmatth:
Hola a toda la gente de este foro, este es mi primer consulta !
    Y antes que nada quiero aclarar que no soy un experto programador de c++ builder   :huh:
   La consulta es la siguiente :   Necesito crear una aplicación en la que pueda ir agregando componentes del tipo TImage en tiempo de ejecución y a cada uno de estos componentes dotarlos con la capacidad de que respondan a eventos, como por ejemplo al hacer un click izq. (onClick) pueda mostrar una ficha con imformación asociada a es componente ImageN.
   Concretamente, al producirce el evento, donde introduzco el código asociado a este ?  :blink:

   Desde ya gracias por lo que puedan aportar !
   Saludoss a todos  :hola:

avefenix1810:

--- Cita de: "carmatth" ---Hola a toda la gente de este foro, este es mi primer consulta !
    Y antes que nada quiero aclarar que no soy un experto programador de c++ builder   :huh:
   La consulta es la siguiente :   Necesito crear una aplicación en la que pueda ir agregando componentes del tipo TImage en tiempo de ejecución y a cada uno de estos componentes dotarlos con la capacidad de que respondan a eventos, como por ejemplo al hacer un click izq. (onClick) pueda mostrar una ficha con imformación asociada a es componente ImageN.
   Concretamente, al producirce el evento, donde introduzco el código asociado a este ?  :blink:

   Desde ya gracias por lo que puedan aportar !
   Saludoss a todos  :hola:
--- Fin de la cita ---


Hola carmatth, creo que tienes dos preguntas en una. Primero me parece que quieres ir ingresando imágenes en tiempo de ejecución, y segundo quieres que aparezca información de la imagen al hacer click en la imagen.

Algo simple sería poner un botón para cada cosa, primero para acceder a un cuadro de dialogo que te permita buscar la imagen a ingresar y segundo otro botón que te permita abrir un Memo para mostrar la información de la imagen.

Si eres nuevo en esto, te recomiendo que veas el video tutorial que tiene publicado laChayra en youtube, o visitar este sitio: miperfil.mx/cbuilder6/index.php, ahi encontraras ejemplos de como hacer lo que quieres.

Tambien no esta demás mirar el tutorial La Cara oculta de Borland C++ Builder.

 :beer:

softevolutions:
Puedes usar estos pasos como guia:

1) Si conoces la ruta donde estan las imagenes, crea un array de componentes TImage o prueba a hacerlo con un bucle e indicando en el nombre el id de la imagen que estás mostrando

for( int i = 1;  i < cuantas_imagenes+1; i++) {
 //creo el componente
 TImage * img * new TImage(this);
 //indico el nombre al componente, concatenando el codigo de imagen
 img->Name = "Imagen_" + String(i);
 //cargo la imagen
 img->Picture->LoadFromFile(ruta_imagen);
  //ten en cuenta que tienes que reubicar las imagenes o puedes tambien alinearlas a la izquierda, derecha o arriba
 //asigno el evento OnClick en tiempo de ejecucion
 img->OnClick = MiEventoOnClick;
 //incluyo el componente a la lista de componentes del TForm en cuestion
 this->InsertControl(img);
}

Por otro lado debes tener creado el evento OnClick, pero uno personalizado

void __fastcall MiEventoOnClick(TObject *sender) {
 //hago lo que quiero al pulsar en la imagen
}

Espero que te ayude

carmatth:
Hola softevolutions !!!!
   Gracias por tu aporte, ... he buscado y buscado pero por el momento no he encontrado lo que tu acabas de postear !  :rolleyes:
   Amigo, antes de hacerte alguna pregunta más, voy a probar hacer un pequeño programa y poner en práctica lo que me has facilitado, así conceptualizo la idea.
   Muchas gracias  softevolutions !!!
   Nos escribimos.. saludos !  :good:

carmatth:
Hola Gente !!!
  Les paso lo que he probado hasta ahora y cuales son los comentarios que tengo al respecto.
  Si yo compilo este codigo el error devuelto por builder es :

[C++ Error] Unit1.cpp[30]: E2316 '__fastcall TForm1::SenalClick(TObject *)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp[52]: E2451 Undefined symbol 'SenalClick'

Y como notarán he comentado la linea  "this->InsertControl(Boton);" porque cuando luego de clickear el boton que ejecuta el código de abajo
sin ningún problema aparente, ( aparece en Panel1 el boton !!), y finalizo el programa aciendo click en un boton "Salir" ( Close();) salta un error que dice algo así como que no se destruyó bla bla y algún otro problema de memoria ! y todo se interrumpe.
  Espero comentarios .... me voy a poner un casco je je je je  :clown:
  bye



//---------------------------------------------------------------------------
//   Funcion de evento creada por mi !!!!

void __fastcall TForm1::SenalClick(TObject *sender)
  {
   ShowMessage("Prueba exitosa");
  }
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

 //Crear Control
 TButton *Boton = new TButton(this);
 //Posicionarlo al componente en Panel1
 Boton->Left=Panel1->Width/2;
 Boton->Top=Panel1->Height/2;
 //Dimensiones
 Boton->Height=89;
 Boton->Width=89;
 Boton->Name="Bot";

 //Va a estar dentro del Panel 1
 Boton->Parent=Panel1;
  //incluyo el componente a la lista de componentes del TForm en cuestion
// this->InsertControl(Boton);
  Boton->OnClick = SenalClick;

  Button1->Enabled=false;


}
//---------------------------------------------------------------------------

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa