TNumeric desabilitado, fica ativo clicando com o mouse em cima. Não consegui encontrar nenhum post que tratasse desse assunto no fórum, pelas buscas que fiz. Como ainda estou engatinhando no Adianti Framework, solicito mais uma vez a ajuda dos amigos. Problema é que desabilito um TNumeric com o setEditable(false) ou TNumeric::disableField('form','campo'), aparece com a aparência de desabilitado, porém ao clicar com o mouse em cima fica editavel, já n�...
DA
TNumeric desabilitado, fica ativo clicando com o mouse em cima.  
Não consegui encontrar nenhum post que tratasse desse assunto no fórum, pelas buscas que fiz. Como ainda estou engatinhando no Adianti Framework, solicito mais uma vez a ajuda dos amigos.

Problema é que desabilito um TNumeric com o setEditable(false) ou TNumeric::disableField('form','campo'), aparece com a aparência de desabilitado, porém ao clicar com o mouse em cima fica editavel, já não acontece com um TEntry.

Em anexo mostro as telas com o comportamento do campo.

Segue o código-fonte abaixo onde estava trabalhando e encontrei o problema, porém fiz um teste nos outros form e o mesmo problema acontece, basta desabilitar um TNumeric e clicar com o mouse sem cima, alguém já passou por esse problema? Tem alguma solução?

 
  1. <?php
  2. public static function onInputDialog( $param )
  3. {
  4. // input fields
  5. $formlog = new BootstrapFormBuilder('acerta_titulo');
  6. $documento = new TEntry('documento');
  7. $documento->setValue($param['documento']);
  8. $parcela = new TEntry('parcela');
  9. $parcela->setValue($param['parcela']);
  10. $id = new TEntry('id');
  11. $id->setValue($param['key']);
  12. $valor = new TNumeric('valor',2,',','.');
  13. $valor->setValue($param['valor']);
  14. $juros = new TNumeric('juros',2,',','.');
  15. $juros->setValue($param['juros']);
  16. $multa = new TNumeric('multa',2,',','.');
  17. $multa->setValue($param['multa']);
  18. $pagar = new TNumeric('pagar',2,',','.');
  19. $pagar->setValue($param['pagar']);
  20. $id->setEditable(false);
  21. $documento->setEditable(false);
  22. $parcela->setEditable(false);
  23. // $valor->setEditable(false); <-- tentei da primeira forma
  24. TNumeric::disableField('acerta_titulo','valor'); // <-- tentei da segunda forma
  25. $pagar->setEditable(false);
  26. $formlog->addFields( [new TLabel('Id')],[$id]);
  27. $formlog->addFields( [new TLabel('Documento')], [$documento] );
  28. $formlog->addFields( [new TLabel('Parcela')], [$parcela] );
  29. $formlog->addFields( [new TLabel('Valor')], [$valor] );
  30. $formlog->addFields( [new TLabel('Juros')], [$juros] );
  31. $formlog->addFields( [new TLabel('Multa')], [$multa] );
  32. $formlog->addFields( [new TLabel('Pagar')], [$pagar] );
  33. // form action
  34. $formlog->addAction('Confirm', new TAction(array(__CLASS__, 'onConfirm')), 'fa:save green');
  35. // show input dialot
  36. new TInputDialog('Alteração de Parcela', $formlog);
  37. }
  38. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


MC

Damião, passamos pelo mesmo problema, pelo visto é um BUG no TNUMERIC com a opçao Desable, então fizemos o seguinte:

 
  1. <?php
  2. $forma_total = new TEntry('forma-total', '2' , ',' , '.');
  3. $forma_total->setEditable(FALSE);
  4. $forma_total->setMask('999.999.999,99');
  5. $forma_total->style = 'text-align: right;';
  6. ?>
DA

Bom dia, Marcelo valeu pela dica, no meu caso encontrei um problema quando usava o setValue para o campo, a mascara não convertia para o nosso padrão. Assim fiz uma alteração na sua dica, como não vou fazer entrada de valor nesse campo no form, as entradas serão TNumeric mesmo, ficou desta forma:

 
  1. <?php
  2. $valor = new TEntry('valor');
  3. $valor->setEditable(FALSE);
  4. $valor->style = 'text-align: right;';
  5. $valor->setValue( number_format($param['valor'], 2, ',', '.'));
  6. ?>


Como gosto de caçar bits foi verificar o porque do problema, até encontrei onde faz o tratamento na unit TEntry.php, nesse trecho abaixo:

 
  1. <?php
  2. // verify if the widget is non-editable
  3. if (parent::getEditable())
  4. {
  5. if (isset($this->exitAction))
  6. {
  7. // just aggregate onBlur, if the previous one does not have return clause
  8. if (strstr($this->getProperty('onBlur'), 'return') == FALSE)
  9. {
  10. $this->setProperty('onBlur', $this->getProperty('exitaction'), FALSE);
  11. }
  12. else
  13. {
  14. $this->setProperty('onBlur', $this->getProperty('exitaction'), TRUE);
  15. }
  16. }
  17. if (isset($this->exitFunction))
  18. {
  19. if (strstr($this->getProperty('onBlur'), 'return') == FALSE)
  20. {
  21. $this->setProperty('onBlur', $this->exitFunction, FALSE);
  22. }
  23. else
  24. {
  25. $this->setProperty('onBlur', $this->exitFunction, TRUE);
  26. }
  27. }
  28. if ($this->mask)
  29. {
  30. TScript::create( "tentry_new_mask( '{$this->id}', '{$this->mask}'); ");
  31. }
  32. }
  33. else
  34. {
  35. $this->tag->{'readonly'} = "1";
  36. $this->tag->{'class'} .= ' tfield_disabled'; // CSS
  37. $this->tag->{'tabindex'} = '-1';
  38. $this->tag->{'onmouseover'} = "style.cursor='default'";
  39. }
  40. ?>

Quando está FALSE para editar, ele ativa o READONLY , desabilita o campo, tira o tabindex para não passar pelo campo, o TNumeric aparentemente deveria funcionar já que descende do TEntry, mas alguma coisa no onenter dele com o mouse desativa o READONLY, agora como resolver só com os universitários da Adianti. Se fosse o velho Delphi..rsrs

Abraços e obrigado pela ajuda.
MC

Show Damião....