Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Ever Cerna en Marzo 04, 2010, 03:29:51 am
-
Wenas una consultilla, saben que api puedo usar para poder detectar los cambios que se realizaron en un control textbox. estuve buscando por google y no encontre mucha info, bueno tengo un formularios con varios text la cual muestro mi contenido de la BDD MySQL, bueno ahora si yo modifico algunos datos de los text necesariamente tengo k hacerle click en un boton que puse de actualizar y weno k pasaria si cerrara el prog sin haber guardado los cambios realizados obviamente no se guardarian entonces aqui vino mi inquietud de saber si se hiso cambios en el los text cosa que asi me avisara mediante un msgbox que "se hisieron cambios ¿desea usted guardarlos?", :P weno esa es la idea haber si me dan una manito. Slu2.
-
Te cuento lo que yo hago, no se si lo mas apropiado pero me funciona.
Debes definir una variable tipo Boolean que comprobarás antes de Salir y modificarla en el evento Change del Text
Private Modificado As Boolean
Cuando visualizas en pantalla los valores procedentes del Registro de datos, Modificado = False
En el evento Change como te decia antes Modificado = True
En la salida, If Modificado Then ...
-
Wenas una consultilla, saben que api puedo usar para poder detectar los cambios que se realizaron en un control textbox. estuve buscando por google y no encontre mucha info, bueno tengo un formularios con varios text la cual muestro mi contenido de la BDD MySQL, bueno ahora si yo modifico algunos datos de los text necesariamente tengo k hacerle click en un boton que puse de actualizar y weno k pasaria si cerrara el prog sin haber guardado los cambios realizados obviamente no se guardarian entonces aqui vino mi inquietud de saber si se hiso cambios en el los text cosa que asi me avisara mediante un msgbox que "se hisieron cambios �desea usted guardarlos?", :P weno esa es la idea haber si me dan una manito. Slu2.
Hola, ojo no solo con clicks llegas a un TextBox, también llegas usando la tecla Tab.
Pero es cierto, como dijo erbuson seria bueno uses una variable bolean, yo hago lo mismo.
Para reafirmar, al iniciar, la variable modificado será False, y en evento Unload si la variable es false mandas un msgbox advirtiendo, si es true no manda nada.
Sin embargo, esto lo aplicaría si se tratase de un formulario destinado a la edición de registros, sino en todo caso te recomiendo parametrizar el tema.
Otra alternativa seria poner un sólo label mas o menos grande y de un color llamativo que diga: "Datos sin Modificar", al modificar uno de ellos cambiar a "Datos Modificados", y si tienes un botón "Grabar" al ejecutarlo el label cambiara a "Datos Modificados y Grabados".
Es una idea.
Saludos
-
Wenas gracias por las ayudas pero, tengo una ultima duda por ejemplo si yo escribo o modifico algo en el text y luego se me ocurre dejarlo como estava anteriormente, alli en ese caso en el evento change estaria en false, pero ya escribi algo en el texto por lo tanto ya esta en true y como dije anteriormente cambie el texto y luego lo volvi a dejar como estava entonces igual me va a decir que guarde los cambio cuando en realidad lo deje como estava anteriormente, weno no se si se entienda mi inquietud.
Slu2..
-
Hola, personalmente pienso que estas liando demasiado la madeja, ya que de este modo, no te basta un indicador de modificado sino que por lo menos necesitarias 1 para cada campo, por otra parte al presentar los datos deberías saber lo que tienes inicialmente ya que puedes modificarlo, salir del campo, volver a entrar, dejarlo como estaba y ¿ que pasa con el Modificado = True ? y si en el campo uno si lo modificaste y dejaste True y en el 2 entras lo modificas y despues lo dejas como estaba ¿ lo pondras en false ? si es así se va a ir al carajo la modificación del campo1
Creo que lo estas complicando, no es imposible, pero si complicado. Depende de lo que prtendas conseguir y cuando quieras complicarte la existencia.
-
;D ok weno gracias por sus respuestas solo era una duda weno voy haber que consigo con sus ayudas brindadas gracias.
-
Lo que yo uso en algunos codigos para tener autosave es un hash de los datos originales y al salir calculas nuevamente el hash de los datos que tenes, si difiere simplemente guardas o advertis al usuario; de esa manera se guarda unicamente cuando los datos realmente difieren de los originales.
-
@ cobein
Me podrias poner un ejemplo, claro si no fuera molestia :-\
-
Puedes usar un módulo de clase MD5, con eso haces la comparación...! No es complicado, y es la mejor solución...! Grande Cobein...! No se me había ocurrido esto...!
-
Una aclaracion, lo del hash es simplemente para no tener una copia de los datos originales en memoria en el caso de que sean muchos.
Ejemplo... no hay mucho que hacer simplemente busca algun modulo para calcular hashes y le pasas los datos ... creo que los que estan por ahi afuera no soportan "streaming" pero pasas los datos de a uno y los vas concatenando con el ultimo hash.
-
Una aclaracion, lo del hash es simplemente para no tener una copia de los datos originales en memoria en el caso de que sean muchos.
Ejemplo... no hay mucho que hacer simplemente busca algun modulo para calcular hashes y le pasas los datos ... creo que los que estan por ahi afuera no soportan "streaming" pero pasas los datos de a uno y los vas concatenando con el ultimo hash.
Cobein, con una clase que obtenga el MD5 funcionaría?
-
Una aclaracion, lo del hash es simplemente para no tener una copia de los datos originales en memoria en el caso de que sean muchos.
Ejemplo... no hay mucho que hacer simplemente busca algun modulo para calcular hashes y le pasas los datos ... creo que los que estan por ahi afuera no soportan "streaming" pero pasas los datos de a uno y los vas concatenando con el ultimo hash.
Cobein, con una clase que obtenga el MD5 funcionaría?
MD5, MD4, CRC32, SHA1, lo que quieras! ya que son todos hash, y si la variable que le pasas es igual, el hash deberia ser el mismo!. para cerrar la idea MD5(txtCampo1.text & txtCampo2.text) y asi sucecivamente. eso ni bien lo cargan lo guardan en una variable estatica, y luego a la hora de ver si se modifico, se vuelve a hacer el MD5 y se compara con el anteriormente guardado.
saludos
-
Entonces he acertado...! Que use el MD5 para mi es mejor..! XD
-
Demasiado para una sola cosa Mejor Que Comience de Nuevo JEJEJEJEJEJE
-
Hola, para hacer el simple "se hisieron cambios ¿desea usted guardarlos?" simplemente implementas una clase que tenga cargados los datos y despues te haces un metodo que chequee todas las propiedades si estan como cuando la cargaste y si llega a diferir una , mostrar el msgbox, mas simple imposible...
saludos.