GARANTIR DESCONTO

Fórum Simular a digitação de traz para frente num maskedit #267114

02/02/2005

0

Amigos, a duvida é a seguinte,

em contas de banco existe varios tamanhos de conta

do tipo 4222-5, 10444-5, 9907223-4 gostaria de mascarar elas, só que ficaria melhor se for escrita de tras para frente ex:
´ - ´ , quando for digitando ficaria assim
´ -4´
´ 4-2´
´ 42-2´
´ 422-2´
´ 4222-5´

gostaria de saber como faço para simular isto

desde ja agradeço....


Marcusbraga

Marcusbraga

Responder

Posts

02/02/2005

Marcusbraga

Amigos, a duvida é a seguinte, em contas de banco existe varios tamanhos de conta do tipo 4222-5, 10444-5, 9907223-4 gostaria de mascarar elas, só que ficaria melhor se for escrita de tras para frente ex: ´______- ´ , quando for digitando ficaria assim ´______-4´ ´_____4-2´ ´____42-2´ ´___422-2´ ´__4222-5´ gostaria de saber como faço para simular isto desde ja agradeço....



Responder

Gostei + 0

02/02/2005

Paulo_amorim

Olá

Fiz essa rotina que deve ser atribuída ao evento OnKeyPress do componente desejado (altere o nome para sua conveniência)

Deve funcionar em um MaskEdit com máscara como !9999999-9;1;_
Pode rodar com Edit também, basta mudar a Constante FIXO para ´´

procedure KeyPress(Sender: TObject; var Key: Char);
const FIXO: String = ´´;
begin
     //Não fazer nada com o Backspace, senão não deixa apagar
     if Key = #8 then Exit;

     //Só permitir numéricos
     if not (Key in [48..57]) then Key := 0;

     if Trim(msk.Text) = FIXO then
     begin
          { No primeiro caractere, colocar após o ´-´ }
          msk.Text := ´-´ + Key;
     end
     else
     begin
          { Nos outros, concatenar normalmente }
          msk.Text := Key + Trim(msk.Text);
     end;
     { Tecla já foi usada, portanto invalida-la }
     Key := #0;
     { Posiciona o cursor }
     msk.SelStart := Pos(Trim(msk.Text),msk.Text) -1;
end;


Espero que ajude
Até+


Responder

Gostei + 0

02/02/2005

Marcusbraga

antes de tudo, meus agradecimentos a Paulo Amorim pela rotina,
com algumas modificações funcionou perfeitamente,

mas gostaria de aperfeiçoar um pouco mais, existe algum modo de fixar o alinhamento dos caracteres a direita do edit?

tipo ao inves de ficar assim dentro do edit

|2836-3___|

ficar assim

|___2836-3|

espero que tenha sido claro

obrigado...


Responder

Gostei + 0

02/02/2005

Paulo_amorim

Olá

Você está usando TEdit então? Foi malz..

Tente inserir com espaços à esquerda...
Aliás, tente, na atribuição:

msk.Text := StringOfChar(´ ´, msk.MaxLength -1 - Length(Trim(msk.Text))) + Key + Trim(msk.Text);

Não esqueça de setar o MaxLength
Isso deve funcionar

Espero que ajude
Até+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar