Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   obtener ubicación y nombre de imagen (https://www.clubdelphi.com/foros/showthread.php?t=76345)

lmpadron 24-10-2011 18:53:09

obtener ubicación y nombre de imagen
 
Hola Amigos:

Saludos...

Tengo una aplicación donde un objeto imagen puede tener dos pictures 1 o 2, el problema es que necesito determinar cual de esos dos es el que está usando y pues no tengo ni la mas minima idea, use GetNamePath() pero no me devuelve el nombre o la dirección exacta (incluyendo el nombre que es lo que necesito).

Les dejo parte del código y su explicación

De esta forma era como tenia el código cuando image->picture no tenia dos valores, el valor de Image1->Picture era 1, entonces le asignaba el 1a

Código:

if (Image1->Visible == true){Image1->Picture->LoadFromFile("icons\\1a.bmp");}
Pero ahora puede tener dos valores 1 o 2 por lo que necesito determinar, antes de usar la linea anterior, cual es el que tiene para saber de esta forma si asignar a 1a.bmp o a 2a.bmp.

Gracias de antemano

duilioisola 24-10-2011 19:07:49

Según entiendo, el objeto Imagen1 no guarda el lugar desde donde tomó la imagen.
Deberás tener alguna otra cosa que te lo indique.
Supongo que al cargar por primera vez la imagen puedes poner el nro. de imagen en una variable. Luego, dependiendo de esto cargas una o la otra

Código:

NroImagen=1;
Image1->Picture->LoadFromFile("icons\\1a.bmp");
...
if (NroImagen==1)
  if (Image1->Visible == true) {Image1->Picture->LoadFromFile("icons\\1a.bmp"); NroImagen=1;}
else
  if (Image1->Visible == true) {Image1->Picture->LoadFromFile("icons\\2a.bmp"); NroImagen=2;}


ecfisa 24-10-2011 19:19:22

Hola impadrón.

Como bién te señala duilioisola, TImage no almacena esa información.

Me acordé de este mensaje en el cuál dec da una solución muy simple e ingeniosa.

En C++ quedaría más o menos así:
Código:

...
char *s;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 s = "C:\\TEMP\\LogoRad.bmp";
 Image1->Tag = (int) s;
 Image1->Picture->LoadFromFile(s);
}

Es decir que utilizas la propiedad Tag del TImage para guardar la dirección de la variable que almacena la ruta+archivo cargado actualmente.

Un saludo.

roman 24-10-2011 19:51:53

Pero, esto de usar el Tag para guardar una cadena de caracteres debe tener sus asegunes ¿no? En algún momento se debe asignar memoria y liberarla posteriormente. ¿Por qué no usar el Tag simplemente para guardar el número de imagen?

// Saludos


La franja horaria es GMT +2. Ahora son las 01:21:13.

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