PDA

Ver la Versión Completa : Guardar cambios en memo!!


Melissa_12
12-01-2013, 14:34:58
Hola!, quisiera que cuando el usuario cambie algún caracter o palabra en el memo cuando quiera cerrar la ventana donde esta me muestre un mensaje avisando si lo quiere guardar, de lo contrario(o sea si no hizo ningún cambio) no muestre el mensaje y se cierre normalmente. Muchas Gracias.

Caral
12-01-2013, 16:27:06
Hola
En el evento on click del memo crea un procedimiento.
Saludos

ecfisa
12-01-2013, 16:29:57
Hola.

Otra opción puede ser:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Memo1.Modified and (MessageBox(Handle, '¿ Desea guardar los cambios ?',
'', MB_ICONQUESTION+MB_YESNO) = IDYES) then
Memo1.Lines.SaveToFile('NOMBRE_DEL_ARCHIVO.TXT');
end;


Saludos.

Melissa_12
12-01-2013, 16:39:59
Muchas Gracias Caral pero si el usuario da sin querer un clic en el memo pero no cambia nada igualmente le preguntará si desea guardar los cambios aunque no haya hecho ninguno.
Por otra parte ecfisa he probado con Modified pero aun sin modificar nada me sigue poniendo la variable en True y pues me hace la pregunta.
Muchas Gracias por sus respuestas.

ecfisa
12-01-2013, 16:49:53
Por otra parte ecfisa he probado con Modified pero aun sin modificar nada me sigue poniendo la variable en True y pues me hace la pregunta.
Muchas Gracias por sus respuestas.
Hola.

Es realmente extraño... por que la propiedad Modified toma el valor verdadero sólo si alguna linea ha tenido algún cambio.

Para salir de dudas hice una pequeña prueba:

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('PRUEBA.TXT')
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Memo1.Modified and (MessageBox(Handle,'¿Desea guardar los cambios?',
'', MB_ICONQUESTION+MB_YESNO)= IDYES) then
Memo1.Lines.SaveToFile('PRUEBA.TXT')
end;

Y se comporta como se espera. Solamente presenta la consulta si se ha modificado al menos un caracter del Memo.

¿ Algún evento de tu código no estará modificando algo del Memo ?

Saludos.

Melissa_12
12-01-2013, 17:19:35
Pues no se que sera la verdad, a lo mejor tiene que ver con la forma en que lo cargo, te explico:

Yo tengo un archivo que he guardado en un lugar de la maquina, ese archivo quiero mostrarlo al usuario para que si el quisiera le cambie algo, eso lo hago cargando las lineas desde el archivo de texto y poniendolas en el memo, no se si por eso ya la propiedad Modified este en True. Si tienes alguna idea de como podria hacer te lo agradeceria.

Melissa_12
12-01-2013, 17:45:24
Ya lo solucione, cuando termino de cargar los datos al memo pongo la propiedad Modified en False para que cuando modifique algo se ponga en True. Muchas Gracias por su ayuda.