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 21-01-2005
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
Como saber el Dato Capturado en Celda de un dbGrid.

Como puedo saber el Dato Capturado en Celda de un dbGrid antes de presionar el TAB ó ENTER, esto se puede hacer en un tedit, tdbedit,etc, pero no logro encontrar en que evento puedo hacer eso dentro de un dbgrid ya me puse a investigar en internet y no he encontrado nada, en la ayuda de delphi y nada, yas probe en el onkeypress que es donde quiero hace esta validación, dicha validación es hacia una celda de tipo Flotante por lo que no quiero que el usuario captura mas de 2 puntos decimales(..), solamente ocupo donde cachar el DATO que esta capturando el usuario antes de presionar TAB ó ENTER.

Agradezco cualquier sugerencia
Responder Con Cita
  #2  
Antiguo 21-01-2005
Avatar de ISKANDAR
ISKANDAR ISKANDAR is offline
Miembro
 
Registrado: jun 2004
Ubicación: Argentina, Latitud 28- Longitud 59 (Resistencia)
Posts: 41
Poder: 0
ISKANDAR Va por buen camino
Post

Mirá, no sé si entendí bien lo que necesitás pero creo que es algo como esto:
Para ir validadndo si el valor ingresado (flotante) se está escribiendo correctamente, podrías crear un objeto como éste al inicio del formulario:

Código Delphi [-]
 
.
type
  TValorCelda = Class(TObject)
  private
    Numero : String;
    Puntos : Byte;
  public
    constructor Create;
    procedure Inicializar;
    function Validar(Caracter: Char): Boolean;
    function GetNumero:String;
    function NumeroAsFloat: Real;
    function GetPuntos: Byte;
  end;
.
.
.
implementation
.
.
.
procedure TValorCelda.Inicializar;
begin
    Numero:='';
    Puntos:=0;
end;
 
function TValorCelda.Validar(Caracter: Char):Boolean;
begin
    if IsNumeric(Caracter) then
        begin
        Numero:=Numero+Caracter;
        Result:=True;
        end
        else
            if (Caracter='.') AND (Puntos=0)then
                begin
                Numero:=Numero+Caracter;
                Puntos:=Puntos+1;
                Result:=True;
                end
                else
                    Result:=False;
end; 
.

Lo deberías inicializar luego de cada cambio de celda en el grid. En el metodo OnKeyPress del grid:

Código Delphi [-]
 var
    flag: Boolean;
begin
    flag:= ValorCelda.Validar(key);
    if not flag and (ValorCelda.GetPuntos>0) then //Si se cumple esto, es invalido porque ingresó 2 puntos
        ShowMessage('Ingresó 2 puntos!');
.

y una vez que hace tab o presiona enter...

Código Delphi [-]
         DataSet.Campo:=ValorCelda.NumeroAsFloat;
De este modo el valor que te devuelva NumeroAsFloat siempre es válido, y lo podés asignar a la celda, campo o donde sea que lo necesites.
Espero haber entendido bien tu pregunta , Saludos.
__________________
El que nada duda, nada sabe.
Guía de Estilo
La Otra Guía de Estilo
Responder Con Cita
  #3  
Antiguo 21-01-2005
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
Gracias

Gracias SKANDAR eso es lo que andaba investigando, de no permitir que capturen más de 2 puntos decimales en una celda Flotante ó Entera, lo voy aprobar....

Que tenga buen día.

Última edición por AGAG4 fecha: 21-01-2005 a las 22:32:14. Razón: Corrección
Responder Con Cita
  #4  
Antiguo 21-01-2005
Avatar de ISKANDAR
ISKANDAR ISKANDAR is offline
Miembro
 
Registrado: jun 2004
Ubicación: Argentina, Latitud 28- Longitud 59 (Resistencia)
Posts: 41
Poder: 0
ISKANDAR Va por buen camino
Bueno, me alegro que te haya servido, puesto que en principio no habia entendido bien la pregunta. Lo único que veo que me faltó es poner el código de GetNumero, GetPuntos y NumeroAsFloat, pero por sus nombres me imagino que no tendrás problemas en rellenarlos . Suerte.
__________________
El que nada duda, nada sabe.
Guía de Estilo
La Otra Guía de Estilo
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 18:41: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