Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Cargar muchas imagenes en un Form! (https://www.clubdelphi.com/foros/showthread.php?t=81316)

PauloMeno 02-11-2012 17:25:59

Cargar muchas imagenes en un Form!
 
Buenaaas! Tengo una duda importante..
Quiero colocar en un form una imagen dependiendo del valor de una variable.. Puede ser con un Case..
El tema es que esta variable puede tomar al rededor de 400 valores y no voy a hacer un Case de ese tamaño!!
Mi pregunta es si hay otra manera de hacer esto??
MUCHAS GRACIASSS!

marcoszorrilla 02-11-2012 17:29:15

Sería necesario conocer si el valor de esa variable lo produce el programa como resultado de una operación o la eligirá el usuario.

Un Saludo.

PauloMeno 02-11-2012 17:33:55

El tema es asi.. Tengo una base de datos y para cada persona que esta cargada en la base necesito asignarle una imagen diferente.. Seria una foto de cada persona..
La variable seria el Id..

Casimiro Noteví 02-11-2012 17:36:37

Entonces en form sólo vas a presentar una imagen.

Por cierto, bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

dec 02-11-2012 17:41:31

Hola,

Asocia el "ID" de la imagen con la imagen misma. Por ejemplo, la imagen puede tener como nombre dicho "ID". De esta manera, bastará conque busques en el directorio apropiado la imagen correspondiente al "ID". Supón que guardas tus imágenes en "C:\Imgs". Supón que tienes que mostrar la imagen con "ID" "1234". Entonces, tú cargarías en un "TImage" la imagen cuya ruta sería: "C:\Imgs\1234.jpg", por ejemplo. Esto en el supuesto caso de que las imágenes estuvieran en un directorio. Si están en una base de datos, deberás, en todo caso, buscar la imagen adecuada ahí mediante el "ID" correspondiente.

ecfisa 02-11-2012 17:42:11

Cita:

Empezado por PauloMeno (Mensaje 448562)
El tema es asi.. Tengo una base de datos y para cada persona que esta cargada en la base necesito asignarle una imagen diferente.. Seria una foto de cada persona..
La variable seria el Id..

Hola.

Supongo entonces que el valor de la variable sería de tipo entero, ahora me surgen estas dudas:
  • ¿ Donde se encuentran las imágenes ?
  • Si se encuentran como archivos en el disco rígido, ¿ Sus nombres tienen una secuencia lógica ?

Saludos.

PauloMeno 02-11-2012 17:42:19

Muchas gracias!..
Claro la idea es esa y ademas otros datos de cada persona..

marcoszorrilla 02-11-2012 17:42:55

Yo concretamente, hago lo siguiente, almaceno las fotos en la BD y entonces solamente tengo que mostrarla en un control de base de datos para imágenes, pongamos un DbImage, no hay que hacer nada especial pues por cada persona existe una foto en el mismo registro.

almaceno las fotos en una carpeta, mas propio para productos que para personas, en el registro tengo un campo que indica el nombre de la foto en el disco y la ubicación, simplemente la cargo:

Código Delphi [-]
procedure TfrPVP.pg1Change(Sender: TObject);
begin
 if (pg1.ActivePage = TbFoto) and (DmPrix.IBDtsPVPFOTOPRODUCTO.AsString <>'' )then
 begin
  try
  fotoproducto.Picture.LoadFromFile('\\servidor\xx\datosfb\fotos\'+DmPrix.IBDtsPVPFOTOPRODUCTO.AsStrin  g+'.jpg');
  except
  ShowMessage('Atención:La imagen no existe o no pudo cargarse.');
  end;
 end
 else
 fotoproducto.Picture.LoadFromFile('\\servidor\xx\datosfb\fotos\Nohay.jpg');
end;

Nohay, es una imagen que yo mismo he construido con una x en tamaño grande y color rojo.

Un Saludo.

PauloMeno 02-11-2012 17:45:18

Si si de tipo entero..
Las imagenes se encuentran en el disco..
La idea que tengo es asignarle a cada imagen el numero de Id de la persona correspondiente
Ej: Juan tiene Id = 1 entonces la imagen de Juan va a tener como nombre 1

marcoszorrilla 02-11-2012 17:48:59

Por si te sirve la idea para el futuro, yo he añadido un botón que me permite pasar la foto al portapapeles, para luego pegarla en Word por ejemplo:

Código Delphi [-]
procedure TfrPVP.spClipboardClick(Sender: TObject);
begin
Clipboard.Assign(FotoProducto.Picture.Graphic) ;
end;

Un Saludo.

PauloMeno 02-11-2012 17:50:17

Cita:

Empezado por marcoszorrilla (Mensaje 448567)
Yo concretamente, hago lo siguiente, almaceno las fotos en la BD y entonces solamente tengo que mostrarla en un control de base de datos para imágenes, pongamos un DbImage, no hay que hacer nada especial pues por cada persona existe una foto en el mismo registro.

almaceno las fotos en una carpeta, mas propio para productos que para personas, en el registro tengo un campo que indica el nombre de la foto en el disco y la ubicación, simplemente la cargo:

Código Delphi [-]
procedure TfrPVP.pg1Change(Sender: TObject);
begin
 if (pg1.ActivePage = TbFoto) and (DmPrix.IBDtsPVPFOTOPRODUCTO.AsString <>'' )then
 begin
  try
  fotoproducto.Picture.LoadFromFile('\\servidor\xx\datosfb\fotos\'+DmPrix.IBDtsPVPFOTOPRODUCTO.AsStrin  g+'.jpg');
  except
  ShowMessage('Atención:La imagen no existe o no pudo cargarse.');
  end;
 end
 else
 fotoproducto.Picture.LoadFromFile('\\servidor\xx\datosfb\fotos\Nohay.jpg');
end;

Nohay, es una imagen que yo mismo he construido con una x en tamaño grande y color rojo.

Un Saludo.



Muchas gracias por tu aporte.. Lo voy a analizar bien ya que mucho no entendi.. Soy muy nuevo en el uso y manejo de Base de Datos.. Muchas gracias!

ecfisa 02-11-2012 20:17:45

Hola PauloMeno.

Otra forma, es guardar la imágen directamente en cada registro en lugar de tener las imágenes en archivos aparte.

Te pongo un enlace que recuerdo trata sobre este otro modo de hacerlo, que no es ni mejor ni peor que el anterior. [guardar imagen en campo blob]

Con seguridad el tema ha sido tratado en más ocasiones, usa la busqueda de los foros por: blob, campo blob, imagen blob, ...

Saludos. :)

bulc 28-11-2012 18:00:09

Guardar imágenes en TImageList
 
Cita:

Empezado por ecfisa (Mensaje 448580)
Hola PauloMeno.

Otra forma, es guardar la imágen directamente en cada registro en lugar de tener las imágenes en archivos aparte.

Te pongo un enlace que recuerdo trata sobre este otro modo de hacerlo, que no es ni mejor ni peor que el anterior. [guardar imagen en campo blob]

Con seguridad el tema ha sido tratado en más ocasiones, usa la busqueda de los foros por: blob, campo blob, imagen blob, ...

Saludos. :)

Puedes guardar las imágenes en un TImageList. Las puedes cargar fácilmente. Pero en este caso lo mejor es una base de datos como dicen los compañeros. Bulc.

richy08 11-02-2013 19:35:18

Cita:

Empezado por marcoszorrilla (Mensaje 448571)
Por si te sirve la idea para el futuro, yo he añadido un botón que me permite pasar la foto al portapapeles, para luego pegarla en Word por ejemplo:

Código Delphi [-]procedure TfrPVP.spClipboardClick(Sender: TObject); begin Clipboard.Assign(FotoProducto.Picture.Graphic) ; end;


Un Saludo.

buenas tardes marcoszorrilla, podrias mostrar el codigo que utilizaspara pasar la imagen a word, tengo una imagen cargada en clipboard que viene de un tdbchart que necesito mandarla a excel, creo que tu codigo podria serme de mucha ayuda

mil gracias de antemano

bulc 11-02-2013 20:53:38

¿También tienes 400 imágenes?
 
Cita:

Empezado por PauloMeno (Mensaje 448560)
Buenaaas! Tengo una duda importante..
Quiero colocar en un form una imagen dependiendo del valor de una variable.. Puede ser con un Case..
El tema es que esta variable puede tomar al rededor de 400 valores y no voy a hacer un Case de ese tamaño!!
Mi pregunta es si hay otra manera de hacer esto??
MUCHAS GRACIASSS!

¿Puedes escalonar o agrupar las variables en varios grupos? Serían más manejables.
La otra opción que se me ocurre es usar una base de datos a posta para las imágenes y elegir un registro de forma aleatoria.
Luego muestras el gráfico de ese registro.

AzidRain 12-02-2013 01:46:40

Delphi estilo pascal...Es una tarea de instituto donde piden "leer un id, buscar dicho id en una tabla, si s eencuentra el id mostrar la foto y datos del usuario"

O lo que es lo mismo
Cita:

leer login y password
abrir tabla de usuarios y buscar login y password
si se encuentra mostrarlos,
si no, mostrar mensaje de error.

jhlsoft 20-03-2013 23:42:12

jpej error #53
 
Intento cargar una imagen jpg con 1mb de tamaño, y otra de 7mb...me sale el mensaje de jpeg error 53......como puedo silucionar este problema y poder apreciar imagenes de gran tamaño...gracias de antemano


La franja horaria es GMT +2. Ahora son las 12:11:15.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi