Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2005
nowheremanza nowheremanza is offline
Registrado
 
Registrado: sep 2005
Ubicación: Barcelona
Posts: 7
Poder: 0
nowheremanza Va por buen camino
Validar celda de StringGrid

Hola,

He estado buscando por el foro, y he encontrado algunos hilos que hablan del tema, pero no me han solucionado mi problema. El que más se parecía era el "no salir de campos" de Mario1980 (http://www.clubdelphi.com/foros/show...8700#post68700),

en el cual explica casi el mismo problema que el mío. Ambos queremos validar la entrada en una celda, pero en su caso utiliza un dbgrid, y le aconsejan que use el evento OnValidate del campo, pero en mi caso, la celda es un simple string, ya que utilizo un StringGrid. Hasta ahora he conseguido que las celdas que yo quiero, tengan una "máscara" concreta, mediante el evento OnGetEditMask, y poniendo el parámetro Validate con la máscara, pero al editar la celda, no puedo validar que se cumpla la máscara, ya que el evento OnExit sólo se llama al cambiar de objeto (es decir, puedo cambiar de celda sin que el evento se llame). He creado una función que en principio me validaría dicha entrada mediante la función 'MatchesMask', pero ahora lo que me falta es poder controlar cuándo pierde el foco la celda, o simplemente se cambia de celda (similar al OnExit de un TEdit). Ya he probado con el evento OnKeyDown, y comprobando si se presiona el tabulador, o el botón izquierdo del ratón, pero cuando se presiona por ejemplo el tabulador, el foco de la celda ya ha cambiado antes de entrar en el evento, o sea, que tengo la celda actual y no la que quiero validar. Y con el evento OnSelectCell, más de lo mismo. Tengo la celda que se selecciona, no la anterior que es la que quiero validar...

¿¿¿Alguien puede ayudarme???

Muchas gracias, por adelentado.

Raúl.
Responder Con Cita
  #2  
Antiguo 03-10-2005
nowheremanza nowheremanza is offline
Registrado
 
Registrado: sep 2005
Ubicación: Barcelona
Posts: 7
Poder: 0
nowheremanza Va por buen camino
Me respondo parcialmente a mi mismo...

Hola de nuevo, jeje... por si a alguien le interesa, al final he podido resolver parte del problema que tengo.
El hecho es que si que se puede controlar la validación, tal y como lo había descrito en el mensaje, con el evento OnKeyDown, y mirando si se ha apretado el tabulador, compruebo si coincide la entrada del usuario con la máscara indicada en OnGetEditMask, y si no es así, muestro un mensaje indicándolo, y dejando el foco en la misma celda.
Y como he dicho al principio, esto soluciona mi problema "parcialmente", ya que no puedo comprobarlo si se cambia de celda, por ejemplo con el ratón, ya que en el mismo evento de OnKeyDown, "se supone", que también se puede saber si se ha oprimido el botón izquierdo del ratón (no lo he conseguido con el parámetro Key ni con el parámetro Shift -que por cierto, siempre llega como [ssShift] cuando clico en la celda-). Y si utilizo el evento OnClick, pierdo la celda a validar, ya que no tengo los valores de la fila y columna. Se me ocurre utilizar variables en el Form que contengan para cada momento, la posición de la celda actual, pero me parece una solución bastante fea. A parte que esto sólo valdría para el Clic dentro del StringGrid... debería controlar la pérdida del foco de la celda, pero esto di que ya no se me ocurre nada...

Si a alguien se le ocurre cómo, se lo agradecería...

Muchas gracias a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 15:04:24.


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