Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cerrar un TImage (https://www.clubdelphi.com/foros/showthread.php?t=53423)

fasthorse 20-02-2008 17:20:38

Cerrar un TImage
 
Hola, mirad yo abro una imagen en un formulario a través de un TImage, y cuando quiero cerrarla a vista de usuario, q tengo q poner? yo es pongo por ejemplo si Imagen es el TImage; Imagen->Destroying;... pero así la sigo viendo y no se cómo puedo cerrarla...
AYUDAA POR FAVOR!!
Gracias.

dec 20-02-2008 17:35:36

Hola,

Prueba con:

Código:

Image1.Picture = null;
Nota: creo que sería así en C++, en Delphi sería:

Código Delphi [-]
Image1.Picture := nil;

Echa un vistazo a este hilo.

fasthorse 20-02-2008 21:48:01

Q va, tampoco se me cierra, bueno me da error, me dice que el símbolo null es desconocido. Puede ser porque lo tenga que definir antes no? pero como lo defino para que se me cierre luego la imagen?
Gracias

cHackAll 21-02-2008 14:20:23

Código:

Image1->Picture->Assign(NULL);

fasthorse 21-02-2008 15:24:54

Ahora no me da ningun error, pero sigo viendo la imagen después de darle a la opción de cerrar imagen, mirad tengo este código:


void __fastcall TForm1::ToolButton_CerrarImagen(TObject *Sender)
{
int resp;
resp = MessageDlg("¿Desea guardar " + Caption + " primero?",
mtConfirmation, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);

if(resp == mrYes)
GuardarImagen1Click(this);
Imagen->Picture->Assign(NULL);
//siendo Imagen un TImage dentro del formulario principal
.....
}

¿qué puedo hacer entonces?

escafandra 21-02-2008 18:04:42

¿Que tal si pruebas esto?:
Código:

TPicture *VoidPicture = new TPicture;
Imagen->Picture->Assign(VoidPicture);

Asignas un TPicture vacio....

Saludos.

fasthorse 21-02-2008 18:20:53

que va tampoco... no se , q cosa más rara,... seguiré probando... y si se os ocurre otra cosa...
Gracias por todo.

escafandra 21-02-2008 18:23:21

¿Por que dices que no se cierra?
¿No habras volcado en el Canvas de tu formulario la imagen....?

En ese caso debes repintar el Canvas con una imagen nula....


Saludos.

fasthorse 21-02-2008 21:46:38

No no, si ahí no utilizo ningún canvas ni nada, simplemente tengo un formulario Form1 y dentro de él tengo definido un Timagen, tb un botón para que, una vez abierta la imagen dentro del Form1 se me cierre, y eso es lo q no consigo. Me entiendes?
Entonces tu crees que tengo q pintar un canvas?? Es que creo que no te he entendido bien.
Un saludo.

escafandra 21-02-2008 22:54:14

Borrado por repetición

escafandra 21-02-2008 22:56:25

Pues no entiendo....
He probado un programita con un TImage y dos botones.
uno hace
Código:

Image1->Picture->Assign(NULL);
y el otro
Código:

TPicture *VoidPicture = new TPicture;
Imagen->Picture->Assign(VoidPicture);

Ambos cierran el TImage, es decir, se borra.

cHackAll 21-02-2008 23:10:56

Muy cierto lo que dices escafandra, pero intenta no repetir tus posts. Hay un boton de "Editar" para realizar los cambios imprevistos, por favor úsalo.

escafandra 21-02-2008 23:22:43

Cita:

Empezado por cHackAll (Mensaje 267729)
Muy cierto lo que dices escafandra, pero intenta no repetir tus posts. Hay un boton de "Editar" para realizar los cambios imprevistos, por favor úsalo.

Ha sido un error mientras estaba editando el post para incluir un archivo... Me he dado cuente y no fue intencionado.

fasthorse 25-02-2008 16:41:14

Si, a ti te sale, pero a mi no. Ainsss y no se por qué...lo tengo que abrir de alguna manera especial?? yo lo abro así:
if(cdAbrir->Execute()){
try{
Imagen->Picture->LoadFromFile(cdAbrir->FileName);
Caption= "Imagen-(" + cdAbrir->FileName + ")";
} catch(...) {
ShowMessage("No es posible cargar el archivo");
}
}
Vamos no se si tendrá que ver, pero no me sale... bueno seguiré probando, porque por algo será que no sale...
Muchas gracias.

ucanneo 26-02-2008 19:09:54

Bueno... pues puedes probar solo con ocultarla

Código:

Image1->Hide();

ya luego cambairla solo cuando sea necesario, que igual no le pasa nada y es más recomendable ya que es más rápid si estas haciendo un programa con muchos gráficos (y por supuesto tienes una pc decente jejeje XD)

_______________________________________________________________


Pero si lo que quieres es "liberar" la imagen pues lo tienes que hacer desde el bitmap ya que este es el único que la puede liberar y dicho sea de paso "quitarla de la pantalla" (por cierto esto lo he sacado de la ayuda del builder y lo he probado)

Código:

Image1->Picture->Bitmap->FreeImage();

si lo haces desde otra propiedad esmuy posible que te de error




saludos

fasthorse 26-02-2008 21:49:27

Oleee, ya lo conseguí!!! menos mal, creí que nunca me iba a funcionar!!!
Muchas gracias a tod@s por vuestra ayuda.
Saludos.


La franja horaria es GMT +2. Ahora son las 10:47:29.

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