Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TNumeric desabilitado, fica ativo clicando com o mouse em cima. ...
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.          
  27.         $formlog->addFields( [new TLabel('Id')],[$id]);
  28.         $formlog->addFields( [new TLabel('Documento')], [$documento] );
  29.         $formlog->addFields( [new TLabel('Parcela')], [$parcela] );    
  30.         $formlog->addFields( [new TLabel('Valor')], [$valor] );     
  31.         $formlog->addFields( [new TLabel('Juros')], [$juros] );  
  32.         $formlog->addFields( [new TLabel('Multa')], [$multa] );    
  33.         $formlog->addFields( [new TLabel('Pagar')], [$pagar] );  
  34.         
  35.         // form action
  36.         $formlog->addAction('Confirm', new TAction(array(__CLASS__'onConfirm')), 'fa:save green');
  37.         
  38.         // show input dialot
  39.         new TInputDialog('Alteração de Parcela'$formlog);
  40.     }
  41. ?>

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto 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->setValuenumber_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.             
  18.             if (isset($this->exitFunction))
  19.             {
  20.                 if (strstr($this->getProperty('onBlur'), 'return') == FALSE)
  21.                 {
  22.                     $this->setProperty('onBlur'$this->exitFunctionFALSE);
  23.                 }
  24.                 else
  25.                 {
  26.                     $this->setProperty('onBlur'$this->exitFunctionTRUE);
  27.                 }
  28.             }
  29.             
  30.             if ($this->mask)
  31.             {
  32.                 TScript::create"tentry_new_mask( '{$this->id}', '{$this->mask}'); ");
  33.             }
  34.         }
  35.         else
  36.         {
  37.             $this->tag->{'readonly'} = "1";
  38.             $this->tag->{'class'} .= ' tfield_disabled'// CSS
  39.             $this->tag->{'tabindex'} = '-1';
  40.             $this->tag->{'onmouseover'} = "style.cursor='default'";
  41.         }
  42. ?>

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....