Fórum Digito Igual a Caixa Eletrônico #282468
20/05/2005
0
Boa tarde!
Alguém sabe como faço para formatar determinado valor de acordo com a digitação do usuário, ou seja parecido com os caixas rápido dos bancos?
Ex1: inicia assim se não me engano....
,0
Ex2: A medida que o usuário vai digitando o número vai avançando uma casa....
0,1
Ex3: A medida que o usuário vai digitando o número vai avançando uma casa....
1,00
Acho que é mais ou menos assim:
Agradeço desde já!
Mmbarros
Curtir tópico
+ 0Posts
20/05/2005
Marco Salles
Var texto:String; procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.SelStart:=Length(edit1.Text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:Integer; caracter:Char; cumprimento:Integer; TextoAux:String; begin texto:=Edit1.Text; cumprimento:=Length(Edit1.Text); if texto[cumprimento]=´0´ Then Texto[cumprimento]:=Key else begin Texto:=Texto+Key; i:=pos(´,´,Texto); Caracter:=Texto[i+1]; Texto[i]:=Caracter; Texto[i+1]:=´,´; if Texto[1]=´0´ Then begin i:=2; cumprimento:=Length(Texto); TextoAux:=´´; while i <= cumprimento do begin TextoAux:=TextoAux+Texto[i]; i:=i+1; end; Texto:=TextoAux; end; end ; Showmessage(Texto); end; procedure TForm1.Edit1Change(Sender: TObject); begin Edit1.OnChange:=Nil; edit1.Text:=Texto; Edit1.Onchange:=Edit1Change; Edit1.SelStart:=Length(edit1.Text);; end;
Gostei + 0
20/05/2005
Marco Salles
[b:0ca9fd4adc]Esqueci tb de colocar na propriedade Edit1.Text no Objecto Inspector
Propriedade Text =0,00 [/b:0ca9fd4adc]
Var
texto:String;
procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.SelStart:=Length(edit1.Text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:Integer; caracter:Char; cumprimento:Integer; TextoAux:String; begin texto:=Edit1.Text; cumprimento:=Length(Edit1.Text); if texto[cumprimento]=´0´ Then Texto[cumprimento]:=Key else begin Texto:=Texto+Key; i:=pos(´,´,Texto); Caracter:=Texto[i+1]; Texto[i]:=Caracter; Texto[i+1]:=´,´; if Texto[1]=´0´ Then begin i:=2; cumprimento:=Length(Texto); TextoAux:=´´; while i <= cumprimento do begin TextoAux:=TextoAux+Texto[i]; i:=i+1; end; Texto:=TextoAux; end; end ; Showmessage(Texto); end; procedure TForm1.Edit1Change(Sender: TObject); begin Edit1.OnChange:=Nil; edit1.Text:=Texto; Edit1.Onchange:=Edit1Change; Edit1.SelStart:=Length(edit1.Text);; end;
Gostei + 0
20/05/2005
Marco Salles
Desculpe as versões amigo , e que esta ainda em fase de Testes
Acrescente ainda os eventos Edit1KeyUp e Edit1Click.. Ficando assim:
Var texto:String; procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.SelStart:=Length(edit1.Text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:Integer; caracter:Char; cumprimento:Integer; TextoAux:String; begin texto:=Edit1.Text; cumprimento:=Length(Edit1.Text); if texto[cumprimento]=´0´ Then Texto[cumprimento]:=Key else begin Texto:=Texto+Key; i:=pos(´,´,Texto); Caracter:=Texto[i+1]; Texto[i]:=Caracter; Texto[i+1]:=´,´; if Texto[1]=´0´ Then begin i:=2; cumprimento:=Length(Texto); TextoAux:=´´; while i <= cumprimento do begin TextoAux:=TextoAux+Texto[i]; i:=i+1; end; Texto:=TextoAux; end; end ; end; procedure TForm1.Edit1Change(Sender: TObject); begin Edit1.OnChange:=Nil; edit1.Text:=Texto; Edit1.Onchange:=Edit1Change; Edit1.SelStart:=Length(edit1.Text);; end; procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Edit1.SelStart:=Length(edit1.Text); end; procedure TForm1.Edit1Click(Sender: TObject); begin Edit1.SelStart:=Length(edit1.Text); end;
Gostei + 0
20/05/2005
Mmbarros
Gostei + 0
20/05/2005
Marco Salles
[b:7a2065166e]Agora so no Evento OnKeySpace[/b:7a2065166e]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:Integer; caracter:Char; cumprimento:Integer; TextoAux:String; begin if Key in [´0´..´9´] Then begin texto:=Edit1.Text; cumprimento:=Length(Edit1.Text); if texto[cumprimento]=´0´ Then Texto[cumprimento]:=Key else begin Texto:=Texto+Key; i:=pos(´,´,Texto); Caracter:=Texto[i+1]; Texto[i]:=Caracter; Texto[i+1]:=´,´; if Texto[1]=´0´ Then begin i:=2; cumprimento:=Length(Texto); TextoAux:=´´; while i <= cumprimento do begin TextoAux:=TextoAux+Texto[i]; i:=i+1; end; Texto:=TextoAux; end; end ; end else begin if Key = 8 Then if Edit1.SelStart < Length(edit1.Text) Then texto:=´0,00´ else begin texto:=Edit1.Text; texto[length(Texto)]:=´0´; end; end; end;
Gostei + 0
20/05/2005
Marco Salles
[b:57592bb44d]Coloque este código No Show[/b:57592bb44d]
procedure TForm1.FormShow(Sender: TObject); begin Texto:=´0´+DecimalSeparator+´00´; Edit1.Text:=Texto; end;
[b:57592bb44d]Altere mais uma vez o Evento OnKeyPress[/b:57592bb44d]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:Integer; caracter:Char; cumprimento:Integer; TextoAux:String; begin if Key in [´0´..´9´] Then begin texto:=Edit1.Text; cumprimento:=Length(Edit1.Text); if texto[cumprimento]=´0´ Then Texto[cumprimento]:=Key else begin Texto:=Texto+Key; i:=pos(DecimalSeparator,Texto); Caracter:=Texto[i+1]; Texto[i]:=Caracter; Texto[i+1]:=DecimalSeparator; if Texto[1]=´0´ Then begin i:=2; cumprimento:=Length(Texto); TextoAux:=´´; while i <= cumprimento do begin TextoAux:=TextoAux+Texto[i]; i:=i+1; end; Texto:=TextoAux; end; end ; end else begin if Key = 8 Then if Edit1.SelStart < Length(edit1.Text) Then texto:=´0,00´ else begin texto:=Edit1.Text; Cumprimento:=Length(Texto); Texto[cumprimento]:=0; i:=pos(DecimalSeparator,Texto); Caracter:=Texto[i-1]; Texto[i]:=Caracter; Texto[i-1]:=DecimalSeparator; if Texto[1]=DecimalSeparator Then Texto:=´0´+Texto; end; end; end;
[b:57592bb44d]Os outros eventos Continuam como estão...[/b:57592bb44d]
Acho que ta bom :lol: :lol: :lol:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)