Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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;
y También con....
Código:
if gridFac.SelectedIndex=2 then
  gridFac.SelectedIndex:=1;
Cuando estoy en el 3er campo y presionó el <ESC> me borra el registro, esto lo hace el propio dbGrid????, yo no lo hago manualmente de que me borre el registro, en dado caso de que lo haga el dbGrid, como se puede evitar esto????

Cualquier comentario se los agradezco mucho.

Última edición por AGAG4 fecha: 15-09-2004 a las 20:13:29. Razón: Corrección
Responder Con Cita
  #2  
Antiguo 15-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 15-09-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Cita:
Por último no es que me Borra un Dato en una celda al presionar el <ESC>, si no que me Borra el Registro actual.
Según te ha explicado Román la tecla ESC implica cancelar y si desaparece la línea entera es porque todavía no era un registro sino un proyecto de registro.

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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 15-09-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Gracias por sus Comentarios...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:39:19.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi