Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Mascara de Moedas


robinhocne

Pergunta

Em um DbGrid ligado a uma tabela temporária (RxMemoryData) eu tenho o campo Valor to tipo Currency e um campo Moeda do tipo String e ai no mesmo DbGrid posso ter moedas diferentes tipo, Dolar, Real, Guarani etc, porém tipo o guarani eu não quero que o usuario digite nada apos a virgula quero que utilize o valor sem virgula, para o Real nosso formato mesmo e o Dolar a mesma coisa como posso estar fazendo para cada linha dependendo da moeda ?

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
utilize as propriedades DisplayFormat e InputFormat do ClientDataSet para mostrar a mascara no DBGrid

abraço

Então não deu certo não fiz para cada vezes que sair da coluna valor, ver qual a moeda que está no Field 2 para mostrar o fomarto, mas como cada linha é uma moeda diferente e mascara diferente ai só aceita uma, tipo se mando guarani antes....ele fica sem as casas decimais depois da virtgula (do jeito que quero), mas quando coloco de Dolar para Real 1,68 e passo por ele ....ai arredonda para 2, estou encaminhando uma imagem de como fica:

Sem_ttulo_2.png

coloquei esse código no BeforeScroll do TIBCDataSource BeforeOpen, BeforePost no after também, mas nada deu;

procedure TFAdmCad004.TblCamBeforePost(DataSet: TDataSet);
begin
  inherited;
  if DbgCambio.Fields[01].AsString = 'GUARANI' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0';
    end
    else
  if DbgCambio.Fields[01].AsString = 'REAL' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0.0000';
    end;
end;

eu guardo numa tabela temporária

Link para o comentário
Compartilhar em outros sites

  • 0

a maneira como colocou, só é possivel se usar stringgrid ( valores na horizontal )

para usar um dbgid, voce deve colocar os valores na vertical ( coluna )

exemplo:

Real........Dolar........Guarani........Peso.........Euro

dessa maneira, voce pode usar uma mascara para cada coluna.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
a maneira como colocou, só é possivel se usar stringgrid ( valores na horizontal )

para usar um dbgid, voce deve colocar os valores na vertical ( coluna )

exemplo:

Real........Dolar........Guarani........Peso.........Euro

dessa maneira, voce pode usar uma mascara para cada coluna.

abraço

ai não ficaria legal.....tinah que ser em linha......

Então para solucionar como faço para validar assim......mesmo que eu digite quando for de Real para Guarani assim 2500,00 ai assim que ele for digitar o virguala o sistema não aceitar

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

  • 0

então use o evento OnDrawColumnCell do DBgrid

inherited;
  if DbgCambio.Fields[01].AsString = 'GUARANI' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0';
    end
    else
  if DbgCambio.Fields[01].AsString = 'REAL' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0.0000';
    end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
então use o evento OnDrawColumnCell do DBgrid

inherited;
  if DbgCambio.Fields[01].AsString = 'GUARANI' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0';
    end
    else
  if DbgCambio.Fields[01].AsString = 'REAL' then
    begin
      TblCamValor.DisplayFormat := '###,###,##0.0000';
    end;

abraço

mas o problema que ele fica em um loop que dá pra ver a tela piscando......

Link para o comentário
Compartilhar em outros sites

  • 0
amigo, usando o dbgrid para isso, fica meio complicado ... a minha sugestão é que voce use o stringgrid

ou pode fazer algo parecido com esse exemplo

http://www.planetadelphi.com.br/delphi/exe...es/00004466.zip

abraço

Legal esse exemplo, mas fiz assim....joguei o campo Valor como String na tabela temporaria ai fiz assim:

if DbgCambio.SelectedIndex = 02 then
    begin
      if TblCamPara.AsString = 'GUARANI' then
        begin
          TblCamValor.AsString := FormatFloat('###,###,##0', TblCamValor.AsCurrency);
        end
        else
      if TblCamPara.AsString = 'DOLAR' then
        begin
          TblCamValor.AsString := FormatFloat('###,###,##0.0000', TblCamValor.AsCurrency);
        end
        else
      if TblCamPara.AsString = 'REAL' then
        begin
          TblCamValor.AsString := FormatFloat('###,###,##0.00', TblCamValor.AsCurrency);
        end
        else
      if TblCamPara.AsString = 'CARTÃO' then
        begin
          TblCamValor.AsString := FormatFloat('###,###,##0', TblCamValor.AsCurrency);
        end
        else
      if TblCamPara.AsString = 'PESO' then
        begin
          TblCamValor.AsString := FormatFloat('###,###,##0.0000', TblCamValor.AsCurrency);
        end;
    end;

Uma Gambi mas deu certo.....

valeu Jhonas mais uma vez......abracos

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...