PDA

Ver la Versión Completa : ¿Cómo eliminar varias imágenes cargadas en un solo TImage?


Aszael
09-12-2017, 05:10:53
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...
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:
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, 20:47:33
Bueno, gracias, ya lo conseguí con esto:
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:
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"?