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 16-01-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Impedir salir de un DBEdit si el valor no es válido

Qué método o propiedad puedo utilizar para impedir que el cursor salga de un campo TDBEdit tras comprobar que el dato introducido no es válido?

Tengo un TDBEdit en un Form y solicito al usuario introducir un código. Con el evento OnChange compruebo si el código introducido es válido o no. Si es válido puedo pasar al próximo TDBEdit. Si NO es válido no quiero permitir que salga de ese campo ni con las teclas de edición, ni seleccionando con el ratón otro campo diferente.

Gracias.
Responder Con Cita
  #2  
Antiguo 16-01-2005
maruenda maruenda is offline
Miembro
 
Registrado: oct 2003
Ubicación: elche
Posts: 173
Poder: 21
maruenda Va por buen camino
Thumbs down

hola. a ver. mi consejo :

en el evento onexit del dbedit
sidatonovalido then dbedit.setfocus

simplemente. si es valido , seguira con orden de tabulacion establecido, y si no lo es, volverà al dbedit.

un saludo.
__________________
frenadol
Responder Con Cita
  #3  
Antiguo 16-01-2005
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
Cita:
Empezado por gluglu
Con el evento OnChange compruebo si el código introducido es válido o no. Si es válido puedo pasar al próximo TDBEdit. Si NO es válido no quiero permitir que salga de ese campo ni con las teclas de edición, ni seleccionando con el ratón otro campo diferente.
Lo estás enficando desde un punto de vista erróneo. Los eventos OnChange u OnExit, aunque los puedes usar, son más que nada para Edits normales.

Para validaciones de campos agrega éstos en el editor de campos de tu DataSet y en el que te interese usa su evento OnValidate donde compruebas su validez. Si no es válido lanzas una excepción o usas abort y con esto se impedirá que cambie el foco a otro control. La ventaja es que no importa cuántos controles uses para editar el campo, siempre funcionará igual en todos ellos.

// Saludos
Responder Con Cita
  #4  
Antiguo 17-01-2005
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias Roman,

Eso era precisamente lo que andaba buscando : donde validar el campo introducido.

Mi código utilizado es el siguiente :
Código Delphi [-]
procedure TMaster.IBQuery1CAMPO1Validate(Sender: TField);
begin
   IBQueryCheck.SQL.Clear;
   IBQueryCheck.SQL.Add('Select * from TABLA1');
   IBQueryCheck.SQL.Add('where CAMPO1 = ');
   If DBEdit1.Text = '' then
     IBQueryCheck.SQL.Add('-999999')
   else
     IBQueryCheck.SQL.Add(DBEdit1.Text);
   IBQueryCheck.SQL.Add('and CAMPO2 = ');
   If DBEdit2.Text = '' then
     IBQueryCheck.SQL.Add('-999999')
   else
     IBQueryCheck.SQL.Add(DBEDit2.Text);
   IBQueryCheck.Open;
   If IBQueryCheck.Eof then abort;
end;

Espero que esto sea lo correcto. Estoy por supuesto abierto a cualquier recomendación mejor.

Saludos
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 05:58:01.


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