PDA

Ver la Versión Completa : Saber si hay imagen cargada


jzginez
03-07-2007, 18:51:33
Hola amigos tengo un TImage al cual al ejecutar el sistema busca en una tabla el logo de la empresa y si lo encuantra lo mustra, si no hay imagen el usuario puede hacer doble click en el TImage y cargar una imagen, hasta ahí todo va bien lo que no he podido hacer es que al salir de esa ventana si el TImage tiene cargada una imagen la guarde en la tabla, el problema lo tengo al querer verificar si hay una imagen cargada lo intente con:
[delphp]if (VarIsNull(Image1.picture))[/delphi]
me da error de tipos no coinciden variant y TPicture
alguien me puede decir como debo hacer esta comparación

Gracias

dec
03-07-2007, 19:04:25
Hola,

Prueba con:


if Assigned(Image1.Picture) then
{...}


O bien:


if (Image1.Picture <> nil) then
{...}

seoane
03-07-2007, 21:30:01
Casi dec :p , pero yo probaria con esto otro:


if (Image1.Picture.Graphic <> nil) then

dec
04-07-2007, 19:04:00
Hola,

Pues qué puedo decir Seoane. La verdad que lo que respondí lo hize "de oído", pero, ni siquiera lo comprobé. Muy bien puede ser como dices. :)

seoane
04-07-2007, 19:34:15
Muy bien puede ser como dices. :)

:o Parece que mi respuesta no fue demasiado explicativa.

La cuestión es que la propiedad Picture del TImage nunca es igual a nil, FPicture, la variable interna que se corresponde con la propiedad Picture, se crea en el método Create del TImage y no se destruye hasta que lo hace el TImage.

Incluso si hacemos lo siguiente:

Image1.Picture:= nil;

Picture seguirá sin valer nil, porque el método para asignar esa propiedad es el siguiente:

procedure TImage.SetPicture(Value: TPicture);
begin
FPicture.Assign(Value);
end;

Y el método Assing del TPicture es:

procedure TPicture.Assign(Source: TPersistent);
begin
if Source = nil then
SetGraphic(nil)
else if Source is TPicture then
SetGraphic(TPicture(Source).Graphic)
else if Source is TGraphic then
SetGraphic(TGraphic(Source))
else
inherited Assign(Source);
end;

Como ves solo se ve afectada la propiedad Graphic del TPicture.

Y después de todo este rollo, creo que queda claro porque se debe examinar la propiedad Graphic :D

dec
04-07-2007, 19:37:14
Hola,

Bueno. Pues, ¿qué más puede pedirse? Eres un monstruo Seoane. :)