Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Guardar cambios en memo!! (https://www.clubdelphi.com/foros/showthread.php?t=81994)

Melissa_12 12-01-2013 14:34:58

Guardar cambios en memo!!
 
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:
Código Delphi [-]
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

Cita:

Empezado por Melissa_12 (Mensaje 453313)
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:
Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 05:02:52.

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