Hudson Cavazin Postado Abril 2, 2007 Denunciar Share Postado Abril 2, 2007 (editado) Estou querendo formatar um campo em que será colocado um preço de produto. Gostaria que quando a pessoa começassee a digitar o valor fosse colocando a vírgula e também o ponto automaticamenteUm exemplo: http://www.correios.com.br/encomendas/precos/default.cfmSerá que alguém pode me ajudar? ;) Editado Abril 4, 2007 por Hudson Cavazin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Abril 2, 2007 Denunciar Share Postado Abril 2, 2007 OpaNa biblioteca RxLib possue um componente chamado TCurrencyEdit que faz isto quevocê quer, não sei se faz "exatamente" como você quer, mas é um Edit que formatao que é digitado em modo de dinheiro (currency), da uma olhada se não for podemoste ajudar com outros métodos...Rxlib Downloadabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 2, 2007 Denunciar Share Postado Abril 2, 2007 Na biblioteca RxLib possue um componente chamado TCurrencyEdit que faz isto quevocê quer, não sei se faz "exatamente" como você quer, mas é um Edit que formatao que é digitado em modo de dinheiro (currency)Voce está correto Churc. O componente está na paleta RX Controls e para a função que o colega pretende fazer dele, é necessário habilitar (deixar true) a propriedade FormatOnEdit. A formatação é definida através da propriedade DisplayFormat. Entretanto, este é um componente tipo TEdit - não tem uma versão DataWare, ou seja, que possa ser ligado a um campo de um dataset. A medida que o tempo permita, eu comecei adaptar um componente que eu tenho, que simplesmente posibilita o alinhamento de números pela direita (TAlignedEdit), para que possa ser utilizado como um DataWare já que achei a idéia interessante. Qualquer hora dessas, eu posto aqui. ;) Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hudson Cavazin Postado Abril 2, 2007 Autor Denunciar Share Postado Abril 2, 2007 pra instalar os componentes do rx lib no delphi 2005 eu me bati um pouco e não consegui, mais mesmo conseguindo, eu prefiro que seja alguma coisa no evento onchange, pois o componente faz ligação direta com o banco de dados, já o componente o rxlib não como o micheus comentou ;xty Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Abril 2, 2007 Denunciar Share Postado Abril 2, 2007 OpaEntendi, só que tem um problema, os eventos onKeyUp, onKeyDown, onKeyPressse você manipular o texto digitado o cursor volta para o primeiro caracter, no queatrapalha e não da certo da maneira que você deu como exemplo, agora a não serque haja como impedir isto...Sei que se fosse "internamente" ou seja, no componente não haveria este problema,agora usando eventos seria "externamente" então vai ocorrer este problema...Usando os eventos externos da pra fazer mais acontece o que eu te falei...Sem dar este problema, eu não sei como te ajudar, espero que o Micheus ou alguém saiba ;)abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 Entendi, só que tem um problema, os eventos onKeyUp, onKeyDown, onKeyPressse você manipular o texto digitado o cursor volta para o primeiro caracter, no queatrapalha e não da certo da maneira que você deu como exemplo, agora a não serque haja como impedir isto...É isto mesmo Churc e o meio de impedir que isso ocorra é salvar a posição do cursor (propriedade SelStart do edit) antes da alteração e ajustar sua posição caso seja realizada alguma alteração no sentido de incluir os caracteres de pontuação da formatação. Tem outra coisa em questão ainda, para definir o alinhamento do edit para outra que não a esquerda, faz-se necessário manipular a criação do componente, visto que é necessário definir em seu estilo que tráestá-se de um componente multi-linha, bem como o tipo do alinhamento (ver comentário no help Win32API - CreateWindow - EM_RIGHT).Disto resulta que a melhor saída seria realmente utilizar/criar um componente para este fim (minha opnião).Em meu componente (mencionado anteriormente), eu utilizo o evento OnKeyPress, mas é um controle chato de ser feito (pelo menos ainda não consegui deixar redondo). Deve ser observado também, a questão de modificar a propriedade Text, como resultado do processamento, pois resultará na ocorrência de um evento OnChange (se não me falha a memória). Neste caso, faz-se necessário ainda salvar e remover o evento (atribuir nil a OnChange) e restaurá-lo depois do processamento - isso no caso de haver qualquer processamento no referido evento.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 Entendi, só que tem um problema, os eventos onKeyUp, onKeyDown, onKeyPressse você manipular o texto digitado o cursor volta para o primeiro caracter, no queatrapalha e não da certo da maneira que você deu como exemplo, agora a não serque haja como impedir isto...É isto mesmo Churc e o meio de impedir que isso ocorra é salvar a posição do cursor (propriedade SelStart do edit) antes da alteração e ajustar sua posição caso seja realizada alguma alteração no sentido de incluir os caracteres de pontuação da formatação. Tem outra coisa em questão ainda, para definir o alinhamento do edit para outra que não a esquerda, faz-se necessário manipular a criação do componente, visto que é necessário definir em seu estilo que tráestá-se de um componente multi-linha, bem como o tipo do alinhamento (ver comentário no help Win32API - CreateWindow - EM_RIGHT).Disto resulta que a melhor saída seria realmente utilizar/criar um componente para este fim (minha opnião).Em meu componente (mencionado anteriormente), eu utilizo o evento OnKeyPress, mas é um controle chato de ser feito (pelo menos ainda não consegui deixar redondo). Deve ser observado também, a questão de modificar a propriedade Text, como resultado do processamento, pois resultará na ocorrência de um evento OnChange (se não me falha a memória). Neste caso, faz-se necessário ainda salvar e remover o evento (atribuir nil a OnChange) e restaurá-lo depois do processamento - isso no caso de haver qualquer processamento no referido evento.AbraçosOpaEntão Micheus, sobre o SelStart parece ser uma boa, se der pra salvar a posição do cursor entãoacredito que de pra fazer o que ele quer em eventos como onKeyUp...Eu também acho que a melhor maneira deve ser criar um componente para isto, ou dar um inheritde um... pode ser que se der um override no create params dele de para ajustar o EM_RIGHT, temque ver onde ele fica, Exstyle?abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 3, 2007 Denunciar Share Postado Abril 3, 2007 ...É isto mesmo Churc e o meio de impedir que isso ocorra é salvar a posição do cursor (propriedade SelStart do edit) antes da alteração e ajustar sua posição caso seja realizada alguma alteração no sentido de incluir os caracteres de pontuação da formatação. Tem outra coisa em questão ainda, para definir o alinhamento do edit para outra que não a esquerda, faz-se necessário manipular a criação do componente, visto que é necessário definir em seu estilo que tráestá-se de um componente multi-linha, bem como o tipo do alinhamento (ver comentário no help Win32API - CreateWindow - EM_RIGHT).Disto resulta que a melhor saída seria realmente utilizar/criar um componente para este fim (minha opnião).Em meu componente (mencionado anteriormente), eu utilizo o evento OnKeyPress, mas é um controle chato de ser feito (pelo menos ainda não consegui deixar redondo). Deve ser observado também, a questão de modificar a propriedade Text, como resultado do processamento, pois resultará na ocorrência de um evento OnChange (se não me falha a memória). Neste caso, faz-se necessário ainda salvar e remover o evento (atribuir nil a OnChange) e restaurá-lo depois do processamento - isso no caso de haver qualquer processamento no referido evento.AbraçosOpaEntão Micheus, sobre o SelStart parece ser uma boa, se der pra salvar a posição do cursor entãoacredito que de pra fazer o que ele quer em eventos como onKeyUp...Isto mesmo.Eu também acho que a melhor maneira deve ser criar um componente para isto, ou dar um inheritde um... O que tenho, descende de TEdit.pode ser que se der um override no create params dele de para ajustar o EM_RIGHT, temque ver onde ele fica, Exstyle?Não no Style mesmo. Veja uma pontinha do código:procedure TAlignedEdit.CreateParams(var Params: TCreateParams); const AlignOnAPI: array [TAlignment] of DWORD = (ES_LEFT, ES_RIGHT, ES_CENTER); begin inherited CreateParams(Params); // adicionamos Multiline ao estipo para que possa ser aplicados // os alinhamentos à Direita e Centralizado - ver help CreateWindow // ES_RIGHT e ES_CENTER if FEditType <> etText then Params.Style := Params.Style or ES_MULTILINE or AlignOnAPI[FAlignment]; // se o edit ler números inteiros, então definimos para aceitar apenas // caracteres numéricos if FEditType = etInteger then Params.Style := Params.Style or ES_NUMBER; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hudson Cavazin Postado Abril 4, 2007 Autor Denunciar Share Postado Abril 4, 2007 alguém sabe pelo menos como possso instalar os componentes do rxlib no delphi 2005 ?grato (: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 4, 2007 Denunciar Share Postado Abril 4, 2007 alguém sabe pelo menos como possso instalar os componentes do rxlib no delphi 2005 ?Tente baixar este do Torry's: http://www.torry.net/vcl/packs/huge/rx275d2005.zipNão sei se instala fácil, dê uma olhada no Readme.txt - não tenho o D2005 para testar.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Hudson Cavazin
Estou querendo formatar um campo em que será colocado um preço de produto. Gostaria que quando a pessoa começassee a digitar o valor fosse colocando a vírgula e também o ponto automaticamente
Um exemplo: http://www.correios.com.br/encomendas/precos/default.cfm
Será que alguém pode me ajudar? ;)
Editado por Hudson CavazinLink 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.