Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Crear Imagenes en ejecución (https://www.clubdelphi.com/foros/showthread.php?t=45390)

Drake 01-07-2007 17:01:10

Crear Imagenes en ejecución
 
Buenas a todos, estoy creando un programilla de mapeo y necesito que me echeis una mano, se trato de los siguiente:

Tengo un TImage con su acciones, quiero coger en un componente añadir el numero de TImagenes que quiero hacer, todos con las mismas acciones que tenga el TImage del cual voy a crear los demas y cuando se vayan a crear que cada uno se ponga uno al lado del otro. Todo esto cuando el programa esta en ejecución.

Espero que me entiendan sino les adjunto una imagen.


http://img252.imageshack.us/my.php?image=samplegr6.jpg

eduarcol 01-07-2007 17:22:01

Segun te entendi, lo que debes haces es crear un nuevo componente, y en este modificar las acciones que quieras, de esta manera el comopnente no seria un tImage sino un TMiImagen

Con respecto de uno al lado de otro cuadra que el area de dibujo sea un panel y le colocas la propiedad Align del TMiImagen como alLeft, asi deberia funcionarte, ahora no se si te entendi bien

Drake 01-07-2007 17:40:53

nop sorry algunas veces me explico mal >.<
lo que quiero hacer es que cuando el programa este en ejecucion se puedan crear la cantidad que yo quiera de un TImage, y que tengan las mismas caracteristicas del TImage que quiero copiar osea, crear clones de ese TImage.

eduarcol 01-07-2007 18:14:13

pero esas cofiguraciones especiales se hacen en diseño o ejecucion?? si es en ejecucion lo que debes es antes de asignarlas guardarlas en una variable y antes de crear el nuevo lo configuras desde esas variables, ahora si es en diseño sigue estando la idea de crear el componente.

y para crearlo en ejecucion

MiImagen := TMIImagen.Create;

no se si sigo sin entender

Drake 01-07-2007 18:32:29

si, tan simple y mira XD thanks eduarcol sabrias como hacer que cada imagen al hacerle click asigne un valor en una array, osea dependiendo de la imagen creada al hacer click selecciona una posicion en la array y le guarda un valor. thanks

eduarcol 01-07-2007 18:48:01

pero por fin como solucionastes??
configura el tag de cada tImagen la posicion del array luego lo que haces es

Código Delphi [-]
MiArrray[TMIImagen(Sender).Tag] := cualqueir cosa

Drake 01-07-2007 19:17:37

De la siguiente forma:

Definir la variable la cual sera un componente TImage
Código Delphi [-]
var
Tiles: TImage;

Creacion dela imagen
Código Delphi [-]
//Crear la imagen y darle las propiedades
        Tiles:= TImage.Create(Tile1); //Imagen de la cual crearemos las demas.
        Tiles.Top:= 0;
        Tiles.Left:= 32;
        Tiles.Width:= 32;
        Tiles.Height:= 32;
        Tiles.Name:= 'Tile'+IntToStr(2); //Nombre de la nueva imagen
        Tiles.Parent:= MapTiles; //Componente que contendra dicha imagen
        Tiles.Canvas.Draw(0,0,tileset1.Picture.Graphic); //por si queremos diujar algo en la imagen

Si queremos crear varios hacemos un bucle y cambiamos:
Código Delphi [-]
Tiles.Name:= 'Tile'+IntToStr(N_imagen); //Donde N_Imagen le ponemos la variable que ira incrementando la cual cada vez que se crea una nueva sera diferente sino nos daria fallo al intentar crear un componentecon el mismo nombre

Pos todo listo un saludo y gracias.

gabrielkc 01-07-2007 20:50:23

un pequeño cambio
 
Código:

procedure TForm1.CreaImgenes(n:Integer);
var Image:TImage;
begin
 for x:=1 to n do
  begin
  image:=TImage.Create(Self);
  image.Top:=0;
  image.Left:=x*32;
  image.Width:=32;
  image.Height:=32;
  Image.AutoSize:=False;{Para que no cambie el tamaño del componente}
  Image.Stretch:=True;{Para que se ajuste al tamaño que asignamos}
  Image.OnClick:=ClickImage;
  image.Parent:=Self;
  image.Tag:=x;
  Image.Name:= 'Imagen'+IntToStr(n); //El nombre de la imagen quedaba fija
  image.Picture.LoadFromFile('C:\images\Powered5.jpg');//imagen a cargar
  image.Show;
  end 
 end;

y clickimage se define en la parte privada de la forma como :


procedure ClickImage(Sender:TObject);


y la implementacion:
Código:

procedure TForm1.ClickImage(Sender: TObject);
begin
 showmessage('hiciste click en la imagen'+inttostr(tcomponent(sender).Tag));
end;



La franja horaria es GMT +2. Ahora son las 12:15:37.

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