Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Campo calculado

30 de Julho de 2012, 9:32 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 2 vezes
Como eu poderia criar um campo calculado por ex: Tenho a largura de um lote e sua profundidade e gostaria que o campo tamanho do lote fosse calculado automaticamente multiplicando largura por profundidade. atc Divaldo

Autor: Divaldo Almir Antunes


22 comentários

  • 6441733b7a5cce14bff29112138038d6?only path=false&size=50&d=404Divaldo Almir Antunes(usuário não autenticado)
    31 de Julho de 2012, 13:32

     

    ?

    • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
      1 de Agosto de 2012, 22:16

       

      Divaldo,

      voce deve adicionar o evento "onBlur" ( equivalente ao onExit do delphi ) nos campos que receberão o valor digitado. O evento onBlur vai chamar uma função javascript chamada, por exemplo, calcularArea, nela voce tem que verificar se os dois campo possuem valores validos, fazer a multiplicacao e exibir o valor da area no terceiro campo que deve estar com "readOnly". Criar os campos e os evento no Formdin são 3 linhas, no javascript é que a gente pena um pouco.

      Exemplo:

       FormDin
      $frm->addNumberField( 'largura', 'Largurua:', 10, null, 2 )->setEvent( 'onBlur', 'calcularArea()' );
      $frm->addNumberField( 'altura', 'Altura:', 10, null, 2, false )->setEvent( 'onBlur', 'calcularArea()' );
      $frm->addNumberField( 'area', 'Area:', 10, null, 2, false )->setExampleText( 'm2' )->setReadOnly( true );

      Javascript
      <script>
          function calcularArea()
          {
              var largura = jQuery("#largura").val();
              var altura = jQuery("#altura").val();
              var campoArea = jQuery("#area").get(0);
              var area;
              try
              {
                  // aqui precisamos trocar a virgula por ponto para podermos fazer a multiplicacao
                  largura = largura.replace(new RegExp(/\./g), ''); // remove todos os pontos
                  largura = largura.replace(new RegExp(/,/g), '.'); // troca a virgula para ponto

                  altura = altura.replace(new RegExp(/\./g), '');   // remove todos os pontos
                  altura = altura.replace(new RegExp(/,/g), '.');   // troca a virgula para ponto

                  area = fwRoundNumber(largura * altura, 2);        // funcao round para 2 casas decimais
                  area = String(area).replace(new RegExp(/\./g), ',');       // troca o ponto por virgula
              }
              catch (e)
              {
                  area = '0,00';
              }
              campoArea.value = area;
              fwFormatarDecimal(campoArea); // formatar o campo novamente com a virgula nas casas decimais
          }
      </script>

      Abraço.

Essa comunidade não possui posts nesse blog