Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

sexta-feira, 28 de setembro de 2012

DELPHI - Validando Teclas Digitadas

Reações: 
Function KeyControls(Key : Char) : Boolean;
begin
  Result := False;
  case Key of
    #13 : Result := True; // Enter
    #27 : Result := True; // Escape
    #8  : Result := True; // BackSpace
    #9  : Result := True; // Tab
  end;
end;
Function KeyNumber(Key : Char) : Char;
begin
  if not KeyControls(Key) then
    case key of
      '0'..'9' : Result := Key;
      Else
      Result := #0;
    end;
end;

Function KeyNumberFloat(Key : Char) : Char;
begin
  if not KeyControls(Key) then
    case key of
      '.' : Result := Key;
      ',' : Result := Key;
      Else
      Result := #0;
    end;
end;

function  LowCase( ch : Char ) : Char;
begin
  Result := ch;
  case Result of
    'A'..'Z':  Dec(Result, Ord('A') - Ord('a'));
  end;
end;

Function KeyAZ(Key : Char; CharCase: TEditCharCase) : Char;
begin
  //CharCase in ecNormal, ecUpperCase, ecLowerCase
  Result := Key;
  if not KeyControls(Key) then
  begin
    case key of
      ' ' : Result := Key;
      'A'..'Z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
      'a'..'z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
       else
       Result := #0;
    end;
  end;
end;


Function KeyAZNumber(Key : Char; CharCase: TEditCharCase) : Char;
begin
  //CharCase in ecNormal, ecUpperCase, ecLowerCase
  Result := Key;
  if not KeyControls(Key) then
  begin
    case key of
      ' '      : Result := Key;
      '0'..'9' : Result := Key;
      'A'..'Z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
      'a'..'z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
       else
       Result := #0;
    end;
  end;
end;


Function KeyAZNumberFloat(Key : Char; CharCase: TEditCharCase = ecNormal) : Char;
begin
  //CharCase in ecNormal, ecUpperCase, ecLowerCase
  Result := Key;
  if not KeyControls(Key) then
  begin
    case key of
           ' ' : Result := Key;
      '0'..'9' : Result := Key;
      '.' : Result := Key;
      ',' : Result := Key;
      'A'..'Z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
      'a'..'z' : begin
                   If CharCase = ecLowerCase then
                     Result := LowCase(Key)
                   Else
                   If CharCase = ecUpperCase then
                     Result := UpCase(Key)
                   Else
                     Result := Key;
                 end;
       else
       Result := #0;
    end;
  end;
end;

// Utilizando:

procedure TForm1.Edit1KeyPress(Sender: TObject;
  var Key: Char);
begin
  key := KeyNumber(Key); // retorna somente numeros digitados
end;

procedure TForm1.Edit2KeyPress(Sender: TObject;
  var Key: Char);
begin
  key := KeyNumberFloat(Key); // retorna numeros com opção de ponto flutuante (ponto ou virgula)
end;

procedure TForm1.Edit3KeyPress(Sender: TObject;
  var Key: Char);
begin
  key := KeyAZ(Key,ecUpperCase); // Retorna Letras de A a Z (caso precise de maiuscula/Minuscula/Normal troque o parametro da função)
end;

procedure TForm1.Edit4KeyPress(Sender: TObject;
  var Key: Char);
begin
  key := KeyAZNumber(Key,ecUpperCase); // retorna Alfanumerico (caso precise de maiuscula/Minuscula/Normal troque o parametro da função)
end;

procedure TForm1.Edit5KeyPress(Sender: TObject;
  var Key: Char);
begin
  key := KeyAZNumberFloat(Key,ecUpperCase); // retorna Alfanumerico ou numeros ou ponto ou virgula, (caso precise de maiuscula/Minuscula/Normal troque o parametro da função)
end;

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer