Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Cómo eliminar varias imágenes cargadas en un solo TImage? (https://www.clubdelphi.com/foros/showthread.php?t=92609)

Aszael 09-12-2017 06:10:53

¿Cómo eliminar varias imágenes cargadas en un solo TImage?
 
Hola, he leído sobre cómo liberar imágenes de un TImage, pero al intentar hacer lo mismo con muchas imágenes, solo consigo eliminar la última imagen cargada. Entonces, ¿Cómo libero/quito/elimino varias imágenes cargadas en un solo TImage? ^\||/

Tengo un código que genera una cadena de imágenes, una detrás de otra: en el array bloque[f,c] tengo un orden establecido de 0s y 1s...
Código Delphi [-]
procedure dibujar();
var f,c:integer;
begin
  for f:=1 to fils do
    for c:=1 to cols do begin
      imagen:=TImage.Create(Form);
      with imagen do begin
        if(bloque[f,c]=1)then begin
          picture.LoadFromFile('images/bloque.jpg');
          parent:=Form;
        end;
      end;
    end;
end;

Bueno, y el problema es que cuando hago algo como esto, no me libera todos los bloques (imagen .jpeg) cargados; llamo a este procedimiento con un botón:
Código Delphi [-]
procedure liberar();
var f,c:integer;
begin
  if assigned (imagen) then begin
   for f:=1 to fils do
    for c:=1 to cols do begin
      if(bloque[f,c]=1)then begin
        imagen.picture:=nil;
      end;
    end;
  end;
end;

Intente de varias formas, pero solo me elimina la última imagen cargada, agradezco enormemente su tiempo, gracias.

Aszael 09-12-2017 21:47:33

Bueno, gracias, ya lo conseguí con esto:
Código Delphi [-]
procedure liberar;
var i:integer;
begin
  for i:=Form1.ComponentCount-1 downto 0 do
    begin
      if (Form1.Components[i] is TImage)then
        Form1.Components[i].free;
    end;
end;

Y bueno, solo para seguir aprendiendo, tengo esto:
Código Delphi [-]
procedure dibujar;
begin
  imagen:=TImage.Create(Form1);  
  fondo:=TImage.Create(Form1);  
end;

Creo dos imágenes con distinto nombre, luego ejecuto el procedimiento liberar(); y me elimina las dos imágenes. ¿Qué parámetros debo usar para solo quitar todo lo relacionado a "imagen" y no tocar "fondo"?


La franja horaria es GMT +2. Ahora son las 10:38:44.

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