![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Quizás te sirvan los eventos OnValidate y OnChange del campo del ClientDataSet que quieres controlar.
EDIT: aquí hay un poco más de información sobre estos dos eventos http://www.clubdelphi.com/foros/show...ght=OnValidate En el Help de Delphi, más ![]() Última edición por __marcsc fecha: 15-06-2004 a las 22:23:09. |
|
#2
|
|||
|
|||
|
Buenisimo, mucho mejor validar en esos eventos.
Pero sera que ¿hay alguna manera de recuperar el valor del campo en el evento OnKeyPress del DBGrid?. O sea, el valor del campo antes de ir al buffer del registro actual, mientras el usuario lo está tipeando. Muchas gracias. |
|
#3
|
||||
|
||||
|
Puedes probar con la propiedad NewValue del TField, aunque siempre que he necesitado hacer lo que comentas, he usado la técnica de marc
![]()
__________________
E pur si muove |
|
#4
|
|||
|
|||
|
El valor de NewValue en el OnKeyPress es siempre nulo, luego cuando salgo del campo entonces se asigna el valor de lo que escribio el usuario a esa propiedad. O sea que si ya tiene algo, en el OnKeyPress siempre se devolvera lo que tenia de antes, sea nulo o algun valor.
Tambien probe con CurValue, OldValue, Value, Text. Pero todos ellos no se actualizan mientras el usuario escribe el valor, solamente despues que el usuario deja el campo es que estas propiedades son asignadas con el valor ingresado por el usuario. Lo que me gustaria hacer es en el evento OnKeyPress cancelar la tecla que el usuario presiono si el valor de esa tecla sumado al valor que ya ingreso el usuario no es valido. Para eso es necesario conocer los valores que el usuario ya ha ingresado pero cuando el campo todavia esta en edicion. Muchas gracias. |
|
#5
|
||||
|
||||
|
andre:
El problema es que un DbGrid no recibe directamente la entrada del teclado sino que crea una componente TEdit cada vez que se edita una celda. Esta componente- InPlaceEdit - es la que lleva a cabo la edición y por tanto tendrían que ser sus eventos sobre los que trabajes y no los del DbGrid. El detalle es que InPlaceEdit es una propiedad protegida del DbGrid por lo que no puedes acceder a ella directamente. Mira estos hilos TEdit en DBGrid Una de grid's en donde andres1569 explica como acceder a dicho TEdit. Lo que tendrías que hacer es asignar a InPlaceEdit el evento KeyPress cada vez que entres en modo de edición. // Saludos |
|
#6
|
|||
|
|||
|
Muchas gracias roman, eso soluciona mi inquietud, gracias a todos por su tiempo.
Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|