• Viernes 15 de Noviembre de 2024, 10:52

Autor Tema:  Re: Evento OnClick  (Leído 2382 veces)

gmartin50

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Evento OnClick
« en: Lunes 31 de Marzo de 2003, 09:36 »
0
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.

Ruso

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Evento OnClick
« Respuesta #1 en: Sábado 30 de Agosto de 2003, 13:59 »
0
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.
_________________________________________

Si no fuera por C, usaríamos BASI, PASAL y OBOL

_Viktor

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Re: Evento OnClick
« Respuesta #2 en: Sábado 27 de Septiembre de 2003, 00:38 »
0
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:
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]

Satyr

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Evento OnClick
« Respuesta #3 en: Miércoles 15 de Octubre de 2003, 03:46 »
0
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:

_Viktor

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Evento OnClick
« Respuesta #4 en: Miércoles 15 de Octubre de 2003, 04:48 »
0
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!
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]

unload

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Evento OnClick
« Respuesta #5 en: Sábado 10 de Enero de 2004, 20:39 »
0
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: