Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Manejo de Objetos TImage en Arreglo o Similar (https://www.clubdelphi.com/foros/showthread.php?t=75174)

WhiteJack 03-08-2011 14:51:52

Manejo de Objetos TImage en Arreglo o Similar
 
Saludos Amigos,

Soy nuevo en el foro y en la programación en C++, estoy trabajando con builder C++ 6, haciendo una pequeña aplicación, es un juego el cual tiene un tablero compuesto de varias imágenes, estoy tratando de crear un arreglo de objetos TImage para luego recorrerlo y asignarles tamaño y posición en el tablero, el usuario al darle click sobre alguna de estas imágenes reasignara de una manera especifica, se podría pensar en un juego como buscaminas, memoria o alguno similar. Se puede hacer lo que planteo o tengo a arrastrar con editor cada imagen y trabajarlas individualmente?

Gracias por su tiempo.

maeyanes 03-08-2011 14:57:23

Hola...

Bienvenido a los foros de Club Delphi, te recomiendo que le des una leida a la Guía de Estilo.

Sobre tu duda, si se puede hacer lo que comentas. Puedes cargar las imágenes desde disco usando los métodos que proporciona la clase TBitmap (LoadFromFile).



Saludos...

escafandra 03-08-2011 15:05:00

Hola. Revisa TComponentList.

Saludos.

WhiteJack 03-08-2011 15:48:01

Gracias por responder amigos,

estaba probando agregar algo asi en Unit1.h un TImage *ImageM[5][5] y luego en Unit1.cpp

Código:

for(int i=0;i<5;i++){
                for(int j=0;j<5;j++){
                        ImageM[i][j]=TImage.Create(Form1);
                        //ImageM[i][j]->SetBounds(10*i,10*j,10,10);
                }
        }

pero no funciona.

maeyanes 03-08-2011 15:50:34

Hola...

Para poder ver las imágenes en el formulario, tienes que asignarles su propiedad Parent:

Código PHP:

ImageM[i][j]->Parent Form1


Saludos...

WhiteJack 03-08-2011 16:02:20

Cita:

Empezado por maeyanes (Mensaje 408324)
Hola...

Para poder ver las imágenes en el formulario, tienes que asignarles su propiedad Parent:

Código PHP:

ImageM[i][j]->Parent Form1

Saludos...

Gracias maeyanes, la linea me da un error de Violacion de Acceso!, a que se podra deber.

escafandra 03-08-2011 16:38:21

Tal y como lo planteas, en un array estático, debes hacerlo así:

Código:

  #include <jpeg.hpp>
//.........................................

  TImage* ImageM[5][5];

  for(int i=0;i<5;i++){
      for(int j=0;j<5;j++){
          ImageM[i][j] = new TImage(this);
          ImageM[i][j]->Parent = Form1;
          ImageM[i][j]->SetBounds(10*i,10*j,10,10);
          ImageM[i][j]->Picture->LoadFromFile("img.jpg");
      }
  }

En Builder un componente, como lo es TImage, es un puntero. Debes realizar un array de punteros...


Saludos.

WhiteJack 03-08-2011 17:07:24

Cita:

Empezado por escafandra (Mensaje 408337)
Tal y como lo planteas, en un array estático, debes hacerlo así:

Código:

  #include <jpeg.hpp>
//.........................................

  TImage* ImageM[5][5];

  for(int i=0;i<5;i++){
      for(int j=0;j<5;j++){
          ImageM[i][j] = new TImage(this);
          ImageM[i][j]->Parent = Form1;
          ImageM[i][j]->SetBounds(10*i,10*j,10,10);
          ImageM[i][j]->Picture->LoadFromFile("img.jpg");
      }
  }

En Builder un componente, como lo es TImage, es un puntero. Debes realizar un array de punteros...


Saludos.

Gracias escafandra y a los demas en general, ha funcionado perfectamente! pero ahora me ha surgido la duda de como agregar el evento a esto arreglo, ya que el mismo no aparece en el Object Inspector, por ejemplo un OnClick ImageM[i][j]->OnClick ??.

escafandra 03-08-2011 17:22:00

Código:

//---------------------------------------------------------------------------
void __fastcall TForm1::Imagelick(TObject *Sender)
{
  Beep();
  Label->Caption = ((TImage*)Sender)->Name;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TImage* ImageM[5][5];

  for(int i=0;i<5;i++){
      for(int j=0;j<5;j++){
          ImageM[i][j] = new TImage(this);
          ImageM[i][j]->Parent = Form1;
          ImageM[i][j]->OnClick = Imagelick;
          ImageM[i][j]->SetBounds(10*i,10*j,10,10);
          ImageM[i][j]->Picture->LoadFromFile("img.jpg");
          ImageM[i][j]->Name = "ImageM"+IntToStr(i)+IntToStr(j);
      }
  }
}
//---------------------------------------------------------------------------


Saludos.

WhiteJack 03-08-2011 17:38:35

Todo a funcionado perfectamente, ya solo me resta agregar la logica para el pequeño juego.

Gracias nuevamente a todos.


La franja horaria es GMT +2. Ahora son las 03:48:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi