Ver Mensaje Individual
  #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
Reputación: 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