¿Usar SavePictureDialog?

SavePictureDialog me da problemas al intentar guardar imágenes de distintos tipos. No se como acceder a la extensión (filter) del dialogo... Hay algo que estoy haciendo mal, pero no encuentro al solución.
Yo tengo:
Image2. Picture. SaveToFile(SavePictureDialog1. FileName);
pero esto me guarda un archivo sin extension...
¿Cómo debo hacerlo?

2 respuestas

Respuesta
1
Bueno el componente SavePictureDialog tiene una propiedad llamada filter que por default te pone varios tipos lo que tienes que hacer es entrar y eliminar o agregar las extensiones que no deses o que deses según sea el caso.
Ahora supongo que primero abres la venta de dialog para poner el nombre y con la propiedad FieldName lo obtienes tal y como lo estas haciendo ahora para la extensión, tiene una propiedad llamada FilterIndex tendas que hacer un case más o menos así:
case SavePictureDialog1.FilterIndex of
1: extension := "BMP";
2: extension := "gif";
end;
si te das cuenta cuando abres la venta de dialog te muestra un combo para capturar el nombre y otro donde seleccionas el tipo de archivo, bueno la lista del tipo de archivo empieza con 1 y se guarda en la propiedad filterindex y ya que tengas la extension pues simplemente se la concatenas Image2.Picture.SaveToFile(SavePictureDialog1.FileName+extension);
Y listo saludos...
Respuesta
1
Bueno recuerda, que las extensiones en el FILTER, las colocas tu, pot lo que es recomendable, que las coloques en un vector antes de inicializar el componente o usar un Ciclo Case usando la propiedad FilterIndex, de acuerdo con la extensión que hayas escogido.
Caso 1:
Partimos del supuesto que inicializaste el filter, con:
var
VectExt : array[1..X] of String;
.
.
.
VectExt[1]:= '.BMP';
VectExt[2]:= '.CXY';
VectExt[3]:= '.WMP';
VectExt[4]:= '.TIFF';
VectExt[5]:= '.SAL';
.
.
.
.
VectExt[X]:= '.BXP';
.
.
.
.
.
Al ejecutar el Savepicture dialog queda:
Image2.Picture.SaveToFile(SavePictureDialog1.FileName+VectExt[SavePictureDialog1.FilterIndex+1]);
la otras es colocar todo dentro de un case y quedaria asi:
Case FilterIndex+1 of
1: Fext := '.WMP';
2: Fext := '.TIFF';
3: Fext := '.SAL';
.
.
.
.
X: Fext:= '.BXP';
end;
Image2.Picture.SaveToFile(SavePictureDialog1.FileName+Fext);
De los métodos el Primero ocupa algo más de memoria dinámica pero es más rapido que el segundo pues las búsquedas dentro del ciclo case consumen más ciclos de reloj que el primero.
Éxitos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas