Ver Mensaje Individual
  #5  
Antiguo 22-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Rofocale.

Según entiendo la consigna es, que permitas ingresar números, el separador coma para miles y
el punto para decimales. Limitandodose estos últimos al número de dos.

Te pongo un código que no intenta ser un analizador de expresiones. Es sólo para aproximarte una
idea, las demás comprobaciónes las podés implementar.
No comprueba si ingresas dos puntos o cinco comas. Sólo verifica que no pongas un punto o coma
al iniciar, y tál como te piden, admite sólo dos decimales luego del primer separador decimal.

Código Delphi [-]
procedure TForm1.EditKeyPress(Sender: TObject; var Key: char);
var
  NDec: integer;
begin
  NDec:= 0;
  with Sender as TEdit do
  begin
    if (Pos('.', Text+Key) > 1) then  // Text+Key: necesario por que todavía Key no esta en Text
      NDec := Length(Text+Key) - Pos('.',Text+Key);
    if (Key in ['.',',']) and (Length(Text+Key) = 1) then
      NDec:= 3;  // no '.' o ',' al inicio
    if (not (Key in[',','.','-','0'..'9']) or (NDec > 2)) and (Key<>#8) then
    begin
      Key:= #0;
      MessageBeep(MB_ICONERROR);
      SetFocus;
    end;
  end
end;


Saludos.
Responder Con Cita