|
Página 1 de 2
|
Deshacer....Rehacer....¿como Se Puede Programar?
Autor |
Mensaje |
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Deshacer....Rehacer....¿como Se Puede Programar?
Estamos acostumbrado a ver programas que deshacen/rehacen las acciones que hemos realizados (metemos datos, pulsamos botones de aceptar y volvemos a pulsar deshacer, y deshace hasta el nivel que queremos)
Se que algunas veces (cuanto metes textos en textbox tiene esa opción) pero me gustaría que lo tuviera el programa en general, como hace Gimp: deshaces dibujar, crear capas, cambiar colores, etc....creo que tiene un nivel infinito de deshacer...
¿como se puede programar esto?, para mi es una misterio...a resolver.....
Saludos...
|
#1 Jueves, 19 Agosto 2010, 03:30 |
|
|
Fenriz07
Programador
Registrado: Agosto 2010
Mensajes: 118
Edad: 32 Ubicación:
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
Ertale se me acaba de ocurrir una idea un poco descabellada y si colcamos un reloj que registre un tiempo y al momento q pulses el boton de atras este cordinado con el reloj y este controle a los demas elementos del formulario textbox, combobox etc etc jejeje
|
#2 Jueves, 19 Agosto 2010, 04:46 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
ufff..
Yo pensaba el algo parecido en llevar un "registro" de lo que ibas haciendo.
Por ejemplo "pulsar aceptar" (hacer click) , y en el registro pones "1 pulsa aceptar boton X formulario X".
Luego escribes en un textbox, y cuando terminas (pulsa ENTER), pues genera un registro "2 textbox X formulario X texto introducido.text"
Y así vas generando registros....("describiendo lo que haces y los datos que introduces")
Cuando pulsas el botón de deshacer, lee el ultimo registro y "interpreta lo que has echo", por ejemplo para el registro "2" borrar el texto introducido en el textbox x formulario X
Hasta aquí es sencillo, pero la cosa se complica cuando realmente estas ejecutando un código, tendrías que "desejecutarlo", por decirlo de alguna manera... Si introduces un registro en una base da dato: funcion_introduce(dato), habría que crear una función contraria: funcion_quita(dato), ese "dato", vendría dado por el registro.
El caso es que llegado a un extremo, habría que realizar un programa "duplicado", con las acciones y sus contraacciones, e ir interpretando las contraacciones con los datos proporcionado con el registro.
Es algo que me parece complicado de hacer (sobre todo en grandes programas con muchas opciones)... pero se podría hacer ......¿alquilen otra idea?
Saludos
última edición por jsbsan el Jueves, 19 Agosto 2010, 12:27; editado 1 vez
|
#3 Jueves, 19 Agosto 2010, 12:23 |
|
|
Ayortano
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
¿Y si mantienes un buffer? Es decir, registrar todo lo que el usuario haga, pero hasta que no "Guarde los cambios", no se hará nada. Por ejemplo, si retocas una imagen en GIMP, éste trabaja con un buffer, no estás editando la imagen directamente, por eso luego tienes que guardar los cambios. Bueno, es una idea.
Saludos
|
#4 Jueves, 19 Agosto 2010, 15:23 |
|
|
Dani26
Analista Programador
Registrado: Junio 2010
Mensajes: 365
Edad: 58 Ubicación: Montevideo
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
¿Y si mantienes un buffer? Es decir, registrar todo lo que el usuario haga, pero hasta que no "Guarde los cambios", no se hará nada. Por ejemplo, si retocas una imagen en GIMP, éste trabaja con un buffer, no estás editando la imagen directamente, por eso luego tienes que guardar los cambios. Bueno, es una idea.
Saludos
Amigo, me sacaste las palabras de la boca. Creo que eso es lo que hacen los programas, ir almacenando los datos sin guardarlos hasta que tú le das guardar. Viste que incluso cuando borrás un registro de una base de datos te avisa "esta acción no se podrá deshacer". Es un tema sin duda complejo. Además cuanto más hacia atrás pueda ir el programa más recursos consume y hay que ponderar el costo-beneficio de este recurso. Eso sí, ni idea de como hacerlo. Suerte.
=================== Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
|
#5 Jueves, 19 Agosto 2010, 18:55 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
Ayortano:
Entiendo que el Buffer, seria como lo que comentaba de un archivo donde guardas lo que haces (click, meter datos, borrar, etc) ¿no?
Que cosa mas interesante (deshacer/rehacer) .... una cosa que estamos harto de ver en los programas habituales...
A ver si encontramos alguno que nos comente como se hace realmente.....o que nos confirme que se hace de esa manera , mediante buffer...
Saludos...
|
#6 Jueves, 19 Agosto 2010, 19:19 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
ehhh.... he encontrado algo interesante en san google:
Patron de Diseño de Software Memento
pero..... bueno ahora que lo pienso.... si nuestro entorno IDE de gambas tambien tiene "hacer y deshacer".... habra que estudiar el codigo fuente del IDE de gambas....
a ver como lo hace...
|
#7 Jueves, 19 Agosto 2010, 19:45 |
|
|
Ayortano
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
Sì, con las funciones Redo y Undo de cada control Por ejemplo, en un Editor, haces:
Editor1.Redo()
Y deshace lo escrito.
|
#8 Jueves, 19 Agosto 2010, 20:13 |
|
|
TrueneX
Usuario
Registrado: Noviembre 2009
Mensajes: 9
Edad: 30 Ubicación:
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
Sì, con las funciones Redo y Undo de cada control Por ejemplo, en un Editor, haces:
Editor1.Redo()
Y deshace lo escrito.
sin duda una de las mejores opciones ... lo utilizo y funcionan de 10
Saludos
|
#9 Viernes, 08 Octobre 2010, 01:06 |
|
|
magdalena
Usuario
Registrado: Noviembre 2010
Mensajes: 1
Edad: 39
|
Re: Deshacer....Rehacer....¿como Se Puede Programar?
hola disculpen, estoy diseñando unas interfaces en gambas y por equivocación borre unos controles en el formulario y necesito deshacer los cambios como hago por fa auxilio...existe algun comando o algo que me permita hacer eso ya que el botón no sirve
|
#10 Miercoles, 19 Enero 2011, 16:38 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|