Ver Mensaje Individual
  #1  
Antiguo 08-05-2017
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Reputación: 9
Soa Pelaez Va por buen camino
Validación coma y decimales Keypress

Buen día.

Quisiera saber si me pueden colaborar, tenía este código que encontre en un foro en el evento keypress de un edit y funciona correctamente me valida que solo deje ingresar dos decimales y que si escribo un punto lo modifique y lo cambie por una coma, como necesito realizar esta validación para varios edits quise hacerlo como un procedimiento, pero al hacerlo no me realiza la validación correctamente (no me cambia el punto por la coma y no lo muestra en el edit).

Alguien que me pueda ayudar a corregir o decirme el motivo por el cual no me funciona. Gracias.

Código Delphi [-]
procedure ValidarPorcentajeKeyPressEdit(Caracter: Char;Edit:TrDBEdit;Sender: TObject);
var
  pos: Cardinal;
begin
  i:=0;
  if ( StrScan('0123456789.,'+chr(7)+chr(8)+#13, Caracter) = nil ) then  Caracter := #0;
  // cambia el punto decimal por coma
  if (Caracter = '.') or (Caracter = ',') then Caracter := ',';
  //controlar entrada una sola coma
  for i := 1 to length(Edit.Text) do
    if ( copy(Edit.Text,i,1) = ',' ) and not ( StrScan(',', Caracter) = nil ) then  Caracter := #0;

  with Sender as TrDBEdit do
  begin
    pos := System.Pos(',', Text);
    if not LongBool(Pos) then Dec(Pos);
      ReadOnly := not (Caracter in ['0'..'9',#13, ',', #8]) or
        (Pos <> $FFFFFFFF) and (Caracter = ',') or
        ((Caracter <> #8) and (Caracter <> #13) and (Pos < (SelStart - 1)));
  end;
end;
Responder Con Cita