Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Saber si hay imagen cargada (https://www.clubdelphi.com/foros/showthread.php?t=45448)

jzginez 03-07-2007 18:51:33

Saber si hay imagen cargada
 
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:

Código Delphi [-]
if Assigned(Image1.Picture) then
  {...}

O bien:

Código Delphi [-]
if (Image1.Picture <> nil) then
  {...}

seoane 03-07-2007 21:30:01

Casi dec :p , pero yo probaria con esto otro:

Código Delphi [-]
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

Cita:

Empezado por dec
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:
Código Delphi [-]
Image1.Picture:= nil;
Picture seguirá sin valer nil, porque el método para asignar esa propiedad es el siguiente:
Código Delphi [-]
procedure TImage.SetPicture(Value: TPicture);
begin
  FPicture.Assign(Value);
end;
Y el método Assing del TPicture es:
Código Delphi [-]
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. :)


La franja horaria es GMT +2. Ahora son las 00:02:55.

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