Pirambu! Postado Setembro 16, 2009 Denunciar Share Postado Setembro 16, 2009 Alguém sabe como eu posso fazer para escrever em um edit da direita para esquerda em forma de Moeda? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Setembro 16, 2009 Denunciar Share Postado Setembro 16, 2009 Inverte ele, huahuhauha, brincadeira, tenta assim, no onchange do edit coloca isso:Edit1.text := FormatFloat('0.00', StrToFloat(Edit1.text));Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Setembro 17, 2009 Autor Denunciar Share Postado Setembro 17, 2009 Douglas_Soares, eu tentei mas não deu certo, apareceu uma mensage que o valor não é valida. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 18, 2009 Denunciar Share Postado Setembro 18, 2009 Alguém sabe como eu posso fazer para escrever em um edit da direita para esquerda em forma de Moeda?Douglas_Soares ....Inverte ele, huahuhauha, brincadeiraDouglas é exatamente isso que tem que ser feito ... a unica diferença é quando voce vai escrever em formato de moedaexemplo: use 2 edits e um botãoprocedure TForm1.Button1Click(Sender: TObject); var i, x : integer; s,s1,s2 : string; begin x := length(Edit1.text); s1 := ''; s2 := ''; edit2.clear; for i := 1 to x do begin Edit2.MaxLength := 20; s := ''; s := '%'+inttostr(20-i)+'s'; if i = 1 then s1 := Format(s,[Edit1.Text[i]]) else s1 := Edit1.Text[i]; insert(s1,s2,20+i); Edit2.Text := s2; Edit2.Refresh; delete(s2,1,2); sleep(500); end; end; OBS: neste exemplo o que estiver digitado no Edit1 será digitado no Edit2 da direita para a esquerda Com algumas alterações no código, voce pode digitar da direita para a esquerda no mesmo edit , obrigando o Edit a aceitar apenas numeros e coloca-lo no formato de moeda exemplo: function FNUMD(Objeto: TEdit; Texto, VKey: String; Espaco, Decimal: Integer): String; Var vChar, vDiv : String; I : Integer; begin vDiv := '1'; For I := 1 to Decimal do vDiv := vDiv + '0'; vChar := copy(Texto,1,length(Texto)); if (vchar = '') or (vchar = '0') then vchar := vkey else vchar := vchar + vkey; While ( pos( ',', vChar ) > 0 ) or ( pos( '.', vChar ) > 0 ) do begin Delete( vChar, pos( '.', vChar ), 1 ); Delete( vChar, pos( ',', vChar ), 1 ); end; Objeto.MaxLength := Espaco; Objeto.Text := Format('%*.*n',[Espaco,Decimal,StrToFloat(vchar)/StrToInt(vDiv)]); Objeto.SelStart := length(Objeto.text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',',', #8]) then key := #0 else FNUMD(Edit1,trim(Edit1.text),key,20,2); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Setembro 18, 2009 Autor Denunciar Share Postado Setembro 18, 2009 Pronto era isso que procurava, mas tem como no proprio edit aparacer "R$" antes do valor? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Setembro 18, 2009 Denunciar Share Postado Setembro 18, 2009 Pronto era isso que procurava, mas tem como no proprio edit aparacer "R$" antes do valor?Poxa Pirambu ... acho que voce tem um bom conhecimento na linguagem, então não deveria ser tão dificil para voce conseguir resolver este pequeno problema.Veja a mudança no código:function FNUMD(Objeto: TEdit; Texto, VKey: String; Espaco, Decimal: Integer): String; Var vChar, vDiv : String; I : Integer; begin vDiv := '1'; For I := 1 to Decimal do vDiv := vDiv + '0'; vChar := copy(Texto,1,length(Texto)); if (vchar = '') or (vchar = '0') then vchar := vkey else vchar := vchar + vkey; While ( pos( ',', vChar ) > 0 ) or ( pos( '.', vChar ) > 0 ) do begin Delete( vChar, pos( '.', vChar ), 1 ); Delete( vChar, pos( ',', vChar ), 1 ); end; Objeto.MaxLength := Espaco; Objeto.Text := Format('%*.*n',[Espaco,Decimal,StrToFloat(vchar)/StrToInt(vDiv)]); Objeto.SelStart := length(Objeto.text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if pos('R$',Edit1.Text) > 0 then Edit1.Clear; if key = #13 then begin Edit1.text := format('%20s',['R$ '+ trim(Edit1.text)]); exit; end; if not (key in ['0'..'9',',', #8]) then key := #0 else FNUMD(Edit1,trim(Edit1.text),key,20,2); end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Setembro 21, 2009 Autor Denunciar Share Postado Setembro 21, 2009 Jhonas obrigado, mas algumas coisas ainda não conheço muito bem.Valeu pela força. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sppolis Postado Agosto 8, 2010 Denunciar Share Postado Agosto 8, 2010 Achei excelente essa dica. Eu também estava precisando para um programa que estou fazendo. Porém, eu gostaria que quando teclassemos a tecla BackSpace fosse apagado o último número digitado. Exemplo:Digito 1 - 0,01Digito 2 - 0,12Digito 3 - 1,23Ai teclo BackSpace uma vez e fica 0,12Teclo novamente e fica 0,01Se puder me ajudar agradeço.Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 10, 2010 Denunciar Share Postado Agosto 10, 2010 Achei excelente essa dica. Eu também estava precisando para um programa que estou fazendo. Porém, eu gostaria que quando teclassemos a tecla BackSpace fosse apagado o último número digitado.Basta fazer essa modificaçãoprocedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.Clear; SysLocale.MiddleEast := true; Edit1.BiDiMode := bdRightToLeft; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if pos('R$',Edit1.Text) > 0 then Edit1.Clear; if key = #13 then begin Edit1.text := 'R$ ' + formatfloat(',0.00',strtofloat(trim(Edit1.text))); exit; end; if not (key in ['0'..'9',',', #8]) then key := #0; end;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 paulosspacheco Postado Fevereiro 17, 2022 Denunciar Share Postado Fevereiro 17, 2022 Não entendo como algo tão básico para entrada de números com casas decimais, não existe no componente TMaskEdit Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pirambu!
Alguém sabe como eu posso fazer para escrever em um edit da direita para esquerda em forma de Moeda?
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.