FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Retroceder Campos en dbGrid
Como puedo retroceder entre Celdas dentro de un dbGrid, lo que pasa es que al momento de presionar <ESC> dentro del OnKeyDown valido para retroceder entre Celdas pero no me funciona, hice pruebas con esto.
Código:
if gridFac.SelectedIndex=2 then dmFact.tDFacturas.Fields[4].FocusControl; Código:
if gridFac.SelectedIndex=2 then gridFac.SelectedIndex:=1; Cualquier comentario se los agradezco mucho. Última edición por AGAG4 fecha: 15-09-2004 a las 20:13:29. Razón: Corrección |
#2
|
||||
|
||||
Disculpa la franqueza pero viendo éste y otros de tus mensajes me parece que estás haciendo un uso incorrecto de las herramientas.
Yo diría que básicamente hay tres tipos de validaciones: a nivel de caracter, a nivel de campo y a nivel de registro. Las primeras las controlas con máscaras sobre el campo y te permiten restringir el tipo de caracteres que puede aceptar el campo. Las segundas se hacen con los eventos OnValidate de cada campo que se generarán cada vez que cambies de campo pero dentro de un mismo registro. Puede ser porque te moviste de columna en un DBGrid o porque cambiaste de DBEdit. El tercer tipo de validaciones las controlas con el evento OnBeforePost de los datasets y te permiten validar los datos de un registro completo antes de que se actualice en la tabla física. Además de las validaciones existen los controles de errores, que pueden ser generados por la base de datos. Por ejemplo al insertar un registro cuya llave primaria esté repetida. Este tipo de excepciones las puedes controlar con el evento OnPostError del dataset. Una cosa que en mi opinión hay que entender, es que los controles DB Aware como los DBGrid, los DBEdit, etc. son básicamente de 'palo', es decir, se limitan a desplegar el contenido de los registros de una tabla pero no intervienen directamente en validaciones ni nada que tenga que ver con la logística del manejo de datos. En el caso que presentas por ejemplo; si quieres validar al momento de retroceder de campo entonces usa el evento OnValidate del campo que pierde el foco. Y desde luego veo muy poco conveniente tratar de hacer validaciones en eventos como OnKeyDown y, sobre todo, usando teclas como ESC que tienen una funcionalidad muy específica: CANCELAR. Si escribes un dato en una celda y al oprimir ESC se borra el dato (si no había nada de principio) o se regresa al valor original, no debe sorprenderte: eso es lo que se espera de la tecla ESC. // Saludos |
#3
|
||||
|
||||
oki
Muchas Gracias Sr. Roman, por explicar lo de las validaciones, esta Perfecto, pero en conclusión, No puedo usar el <ESC> para retroceder celdas dentro del dbgrid????
Por último no es que me Borra un Dato en una celda al presionar el <ESC>, si no que me Borra el Registro actual. Última edición por AGAG4 fecha: 15-09-2004 a las 21:38:46. Razón: Corrección |
#4
|
||||
|
||||
Cita:
Cuando en una rejilla pulsamos fecha abajo por ejemplo tenemos una nueva línea en donde vamos ingresando datos, para que sean un registro, esto en Dbase se le llamaba el registro fantasma, tenemos que hacer un "Post", bien por código o bien moviendo el puntero hacia otra fila lo cual provoca éste de manera indirecta y los datos queden guardados en la tabla, en conclusión el comportamiento normal es precisamente éste si pulso escape cancelo el registro que aún no se había grabado. Lo que es estándar es pulsar las flechas de dirección o mayúsculas + Tabulador para retroceder celdillas en una rejilla. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
oki
Gracias por su respuesta Sr. MarcosZorrilla, ya me dí cuenta que no hay vuelta de hoja, de que no hay forma de programar que el dbGrid no haga la Cancelación Fantasma del Registro... Que tenga buen día.
|
#6
|
||||
|
||||
Si se hiciera esto sería una aberración ya que cualquiera usuario avezado cuando pulsa escape es precisamente para eso para no guardar el registro en curso si se hizo un "append" o "Insert", o para símplemente cancelar los cambios si se estaba editando el mismo.
Cualquier usuario se quejaría de los efectos de la tecla escape sobre una rejilla sino hiciera esto. Y lo estándar es lo comentado anteriormente. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
oki
Gracias por sus Comentarios...
|
|
|
|