Skip to content

Eliminar la imagen de un TImage en tiempo de ejecución

Al manipular un TImage en tiempo de diseño, es muy fácil, ya que tenemos dentro de la propiedad Picture (TPicture) el Picture Editor, que nos permite cargar, borrar, modificar entre algunas otras características más.

Pero un día, en un proyecto de hace algunos años, debería eliminar una imagen de un TImage, pero a simple vista no hay comando para realizarlo.

Probé de varias maneras y como la mayoría de las veces la solución era mucho más fácil de lo que realmente es.

No les voy a mentir, estuve varias horas con este problema hasta que se me ocurrió probar una forma más, que era poner en nil la propiedad Picture, y funcionó.

Les comparto una función que devuelve True si el TImage poseía una imagen o False si no la poseía, pero de todos modos coloca la propiedad Picture a nil, o sea que elimina la imagen.

Uses
  Vcl.StdCtrls, Vcl.ExtCtrls;

...

function EliminarImagen(vImage: TImage): boolean;
begin
  // Retorna True o False según el TImage tiene o no cargada una imagen
  Result := (vImage.Picture = nil);
  // Colocamos en nil la propiedad Picture (eliminamos la imagen cargada)
  vImage.Picture:=nil;
end;