Fórum Simular a digitação de traz para frente num maskedit #267114
02/02/2005
0
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
Curtir tópico
+ 0Posts
02/02/2005
Marcusbraga
Gostei + 0
02/02/2005
Paulo_amorim
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é+
Gostei + 0
02/02/2005
Marcusbraga
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...
Gostei + 0
02/02/2005
Paulo_amorim
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é+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)