Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cargar imagen (https://www.clubdelphi.com/foros/showthread.php?t=55307)

franfl 13-04-2008 20:09:27

Cargar imagen
 
Hola
Vaya dia que llevo...Tengo un formulario para insertar un cliente o modificarlo, entonces tengo un boton cargarimagen programado asi, para ver la imagen elegida:
OpenPictureDialog->Execute();
ImCliente->Picture->LoadFromFile(OpenPictureDialog->FileName);
Si selecciono una foto va bien, pero si salgo de la ventana de cargar imagen pulsando el boton de cancelar o la x, me da un error;
"unknown picture file extension(.)"
Supongo que tendre que validar si se seleciono una foto o no, pero no se como, o igual tengo algo mas mal no lo se, si alguien me puede ayudar se lo agradeceria mucho.
Gracias y un saludo

jachguate 13-04-2008 20:24:04

Así:

Código Delphi [-]
  if OpenPictureDialog1.Execute then
    ImCliente.Picture.LoadFromFile(OpenPictureDialog1.FileName);

Hasta luego.

;)

franfl 13-04-2008 21:53:36

Muchas gracias, vaya fallo mas grande.
Otra pregunta es que yo una vez rellenado el formulario del cliente, pulso guardar, y la imagen no es obligatorio, entonces al guardar no se como comprobar si existe o no imágen, o si se ejecuto o no el opendialogpicture.
Probe con ImCliente->Picture!=NULL, pero no funciona.
Muchas gracias

jachguate 14-04-2008 00:19:11

Código Delphi [-]
  if not Assigned(Image1.Picture.Graphic) then
    ShowMessage('Está vacio');

Hasta luego.

;)

escafandra 14-04-2008 01:23:53

En Builder es un poco diferente, pues no existe Assigned:

Código:

if(Image1->Picture->Graphic->Empty)
    ShowMessage("Está vacio");

Saludos.

franfl 14-04-2008 08:42:05

Muchisimas gracias
La ultima cosa ya es que para blanquear un edit basta con poner
edit->Clear();
y para el timage puse: timage->Picture->Assign(NULL);
y parece que va bien, ¿es correcto?
y para borrar desde builder una imagen de una carpeta, existe el deleteFile ¿no?
Muchas gracias, es que voi fatal de tiempo y entre el trabajo y todo.....
Saludos

Gabo 14-04-2008 11:01:44

Sí, si existe.

Código:

DeleteFile(AnsiString aquí)
Aunque si tienes dudas sobre si una función existe o no, búscala primero en la ayuda. :)

franfl 14-04-2008 18:53:46

Ok, muchas gracias
Respecto a lo que me dijisteis para saber si un timage es vacio, al hacerlo en builder con
if(ImCliente->Picture->Graphic->Empty)
ShowMessage("Está vacio");
Si contiene imagen va bien, pero sino me da un error, entonces seria
if(ImCliente->Picture->Graphic==NULL)
ShowMessage("Está vacio");

Muchas gracias por la ayuda a todos

escafandra 14-04-2008 20:59:50

El problema es que contenga un grafico, osea que Image1->Picture->Graphic !=0 pero que el grafico este vacio.

Prueba esto, yo no lo he hecho:

Código:

bool IsVacio(TImage *Image)
{
  bool Result = false;
  if(Image->Picture->Graphic==NULL)
      Result = true;
  else if(Image->Picture->Graphic->Empty)
      Result = true;
 
  return Result;
}

Saludos

franfl 15-04-2008 08:35:29

No me dio tiempo a probarlo, pero en mi timage solo tengo la opcion de cargar .jpg, y con lo que os dije hice muchas pruebas y me funciona perfecto. Supongo que tambien funcionara con otras extensiones, para cualquier duda a ver si os puedo ayudar
Gracias por la ayuda a todos


La franja horaria es GMT +2. Ahora son las 21:47:17.

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