SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: gmartin50 en Lunes 31 de Marzo de 2003, 09:36

Título: Re: Evento OnClick
Publicado por: gmartin50 en Lunes 31 de Marzo de 2003, 09:36
Ayudenme Por Favor.

Dentro de una de mis clases he creado un objeto TImage que dibuja una imagen en tiempo de ejecución.

Necesito manejar el evento OnClick de esa imagen y no se como hacerlo.

Es decir , cuando corro el programa un botón hace que la imagen aparezca, pero necesito también poder hacerle click a esa imagen y ejecutar una función.

Gracias por su ayuda.
Título: Re: Evento OnClick
Publicado por: Ruso en Sábado 30 de Agosto de 2003, 13:59
Prueba a crear la imagen en tiempo de diseño, pero manteniéndola oculta(propiedad Visible=false), y que lo que haga el botón en vez de crearla sea solo mostrarla, y asi puedes definir el evento OnClick de la imagen en tiempo de diseño.
Título: Re: Evento OnClick
Publicado por: _Viktor en Sábado 27 de Septiembre de 2003, 00:38
Holas, si quieres hacerlo en forma completamente dinamica hazlo asi:

 
Código: Text
  1.  
  2. /****************UNIT1.H**********/
  3. //---------------------------------------------------------------------------
  4.  
  5. #ifndef Unit1H
  6. #define Unit1H
  7. //---------------------------------------------------------------------------
  8. #include <Classes.hpp>
  9. #include <Controls.hpp>
  10. #include <StdCtrls.hpp>
  11. #include <Forms.hpp>
  12. #include <ExtCtrls.hpp>
  13. //---------------------------------------------------------------------------
  14. class TForm1 : public TForm
  15. {
  16. __published:    // IDE-managed Components
  17.         TButton *Button1;
  18.         TImage *Image1;
  19.         void __fastcall Button1Click(TObject *Sender);
  20. private:    // User declarations
  21. public:     // User declarations
  22.         void __fastcall MiOnClick(TObject *Sender);
  23.         __fastcall TForm1(TComponent* Owner);
  24. };
  25. //---------------------------------------------------------------------------
  26. extern PACKAGE TForm1 *Form1;
  27. //---------------------------------------------------------------------------
  28. #endif
  29.  
  30.  
  31.  

y finalmente:

 
Código: Text
  1.  
  2. void __fastcall TForm1::Button1Click(TObject *Sender)
  3. {
  4.  
  5.   TImage *Imagen = new TImage(this);
  6.   Imagen->Top = 10;
  7.   Imagen->Left = 10;
  8.   Imagen->Parent=this;//Form1
  9.   Imagen->Picture->LoadFromFile("d:avathar2.bmp");
  10.   Imagen->Show();
  11.   Imagen->OnClick = MiOnClick;
  12. }
  13. //---------------------------------------------------------------------------
  14.  
  15. void __fastcall TForm1::MiOnClick(TObject *Sender)
  16. {
  17.   ShowMessage("Esta haciendo Click!");
  18. }
  19. //---------------------------------------------------------------------------
  20.  
  21.  
  22.  

Asi asignas en tiempo de ejecucion el evento MiOnClick al OnClick de Imagen, con lo que te ahorras poner un TImage en diseño, que creo es lo que querias evitar.  Espero te sirva aun.

Saludos.-:good:
Título: Re: Evento OnClick
Publicado por: Satyr en Miércoles 15 de Octubre de 2003, 03:46
Tambien puedes hacer lo siguiente

void __fastcall TForm1::Button1Click(TObject *Sender)
{

  Image1->Picture->LoadFromFile("c:imagen.jpg");
    Image1->Stretch = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1Click(TObject *Sender)
{
//Aqui llamas a tu funcion
}
//---------------------------------------------------------------------------


Espero q esto te sirva de ayuda :suerte:
Título: Evento OnClick
Publicado por: _Viktor en Miércoles 15 de Octubre de 2003, 04:48
Citar
Originalmente publicado por Satyr
Tambien puedes hacer lo siguiente

void __fastcall TForm1::Button1Click(TObject *Sender)
{

  Image1->Picture->LoadFromFile("c:imagen.jpg");
    Image1->Stretch = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1Click(TObject *Sender)
{
//Aqui llamas a tu funcion
}
//---------------------------------------------------------------------------


Espero q esto te sirva de ayuda :suerte:


Satyr, creo que la idea era usar un TImage Creado en tiempo de ejecucion y asignarle un evento en forma dinamica, cosa que no veo en tu codigo.  ¿Estoy en lo correcto ?

Saludos!
Título: Re: Evento OnClick
Publicado por: unload en Sábado 10 de Enero de 2004, 20:39
Saludos: bueno este trozo de codigo  es para crear imagenes en tiempo de ejecución y al dar click saber sobre que imagen se esta dando click

for(int i=1;i<=(Form1->Table1->FieldByName("Numero_equipos")->AsInteger);i++)
   {
    Ima= new TAnimate(Form1);
    Ima->Top = posy;
    Ima->Left = posx;
    Ima->Parent = Form1;
    Ima->CommonAVI = aviFindComputer;
    Ima->Active = true;
    Ima->Cursor =crHandPoint;
    Ima->AutoSize = true;
    Ima+=50;
    Ima->Tag=1;//aqui esta el truco para saber sobre que imagen se esta dando
                           //click
    Ima->OnMouseDown=funcion;
    Ima->Hint = "En espera de Cliente";
    Ima->ShowHint = true;
    if(i%10==0){
        posx=30;
        posy+=100;
   }
//y asi quedaria la funcion

void __fastcall Servidor::valores(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
{
 int quien_es;
TImage *x;
x=(TImage*)Sender;

Form1->Label1->Caption = x->Tag;

}
// y listo
Bueno espero les sirva :kicking: