![]() |
Que evento debo capturar?
Ok. Otra vez clipper....
Pues en aquellos tiempos usaba una funcion que me daba verdadero si se actualizaba un get en la pantalla: UPDATED() Solo deseo activar el boton "Grabar" solo si el usuario "modifica" uno de los varios Tedit's. Ok se que puedo hacerlo en el OnExit de cada Tedit, pero creo que debe haber algo mas general, Cual seria el evento que necesito capturar? (a veces uno se tranca en unas cosas.....) :D |
Si utilizas DbEdits puedes colocar una variable pública de tipo lógico que haga de semáfooro:
Y luego en el botón que tengas para grabar consultas como quedó el valor de dicha variable para saber si se hicieron cambios. Un Saludo. |
Con TEdits puedes hacer algo parecido programas el evento OnChange de un Tedit y luego asocias todos los demas tedits a este evento.
Un Saludo. |
Cita:
Este es mi aporte Saludos bye |
No recuerdo haber leido que los datos en los edits estuvieran asociados a alguna tabla...
si fuese asi, lo mas natural sería el uso de DBEdits, ¿no?, y valerse de la propiedad Modified del DataSet para saber si se ha aplicado alguna modificación sobre los valores del registro activo Hasta luego. ;) |
Cita:
// Saludos |
oh, claro. El punto, es que no está claro (al menos para mi) el que haya un datasource de por medio...
saludos. |
Que bien...
Pues les agradezco a todos...
Para agregar inf. En el form utilizo Tedits, un para de Tmemos y yn Tcombobox. Con un boton "Guardar" muevo los datos a la base de datos. Uso un datamodule con su respectivo Tquery y Tdatasource. Me propuesta de Marco es en la que estaba pensando, solo que confundido en el evento. Pero vean que es interezante .... deberia haber un evento que capturara una modificacion de este tipo sin tener que recurria a banderas o tratamiento individual...(como la funcion que les comente de clipper) jeje... Bueno en todo caso tambien se puede crear no?.... cuando tenga un tiempito le buscare la vuelta, si la termino la publico. :D |
A mi me parece que aquí hay una confusión y no sé si debe a que cuando escribes TEdit en realidad quieres escribir TDBEdit o bien que hay algo que no nos has contando.
Si estás usando TEdit (sin el DB) entonces no aplica lo del evento DataChange del DataSource ya que el control no está conectado directamente al dataset. Y en tal caso, el de usar TEdit (sin DB), tampoco tienes que tratar casos individuales. Ya Marcos lo señaló desde el principio: Asignas a todos los TEdit el mismo evento OnChange. No necesitas ninguna bandera. Al comienzo pones el botón inhabilitado y en cuanto se entre a este evento lo habilitas. // Saludos |
No ROMAN esta bien como lo expreso, uso edit "simples y silvestres" (no TDBEdits) y en efecto, la propuesta de Marco es a mi novato entender la mas practica. Solo que estaba enfrascado en el evento ONexit de los edits y demas componentes. El caso es que el form, lo uso para editar e ingresar datos.
Por Ejemplo: Busco codigo ingresado en el edit1.text: "XXX" por una consulta. Si el cursor esta vacio entonces me habilita los demas controles para ingresar todos los datos correspondientes a dicho codigo. En caso de que el codigo exista, entonces (el codigo es unico) habilita los controles y recibe los datos desde el cursor para su edicion o consulta. No queria tener que agregar otro boton "EDICION" sino que por las caracteristicas del trabajo, si entras es solo para editar. En cualquier momento el usuario pude cancelar la edicion (no tengo la base de datos abierta, solo tome los datos y los "pegue" en los edit). Quiza es mi viejo estilo de programación el que impera, pero no me terminande cuadrar los controles DBXXXXX, porque creo que las Bases de datos estaran abiertas mas tiempo que el necesario...nose. Actualmente lo tengo de esta forma: Todos los controles que reciben datos los tengo en un panel y el su evento OnEnter cambio el boton guardar a Enabled, y una ves guardado el registro, lo inhabilito. En todo caso un teraGracias, debo investigar un poco mas de los eventos de la DB, pero realmente no voy a durar mucho con paradox, me pienso mudar a firebird...jeje |
En primer lugar, la decisión de mudarte a firebird me parece muy buena... pero. ¿que te hace pensar que usando dbEdits la base de datos estará abierta mas tiempo del necesario?? :confused:
Habrá que comenzar por explicar que entendes por "tener abierta" una base de datos... y por otro lado, te recomiendo investigar un poco sobre los controles de datos (tipo TDBEdit y similares). Hay mucha gente que los usa, y mucha que no los usa... pero dada la razón que das, creo que valdrá la pena que explores e investigues un poco mas para tener un buen criterio y tomar tu propia decisión. La mia: los uso siempre que sea conveniente, pues me fácilitan bastante la vida.. ;) Hasta luego. ;) |
Cita:
,... es que en un programa que combine los dos metodos (en un form, edits, y en otro use DBGrid. tuve inconvenientes, de hecho hice hasta una consulta sobre ese tema: http://www.clubdelphi.com/foros/showthread.php?t=19189 ) :D |
Pues en general son convenientes media vez se use solamente para mostrar/editar datos almacenados en el dataset (o derivados mediante campos calculados).
Cuando usaría un edit normal es, por ejemplo, en el caso del primer campo de tu formulario, para que el usuario pueda ingresar un código, y en base a este valor realizar una búsqueda en la base de datos.... asi que si yo fuese quien programó este formulario, probablemente el primer campo sería un Tedit y el resto TDBEdits. Este es un comportamiento, sin embargo, que evito siempre que me sea posible proveer de otro mecanismo de búsqueda igualmente conveniente para el usuario. Lo mejor, claro, es que en base a la lectura de libros/artículos/revistas, el help y tu propia experiencia vayas formando y afinando tu propio criterio. Saludos. ;) |
Muy agradecido, amigos :D
|
La franja horaria es GMT +2. Ahora son las 22:25:24. |
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