Problemas com Numeric Mask e disableField Tenho um campo (TEntry) com um NumericMask adicionado. Tenho também um método que realiza um TField::disableField para desabilitar esse campo, de acordo com uma ação que o usuário executa é chamado outro método que executa um TField::enableField nesse campo, porém no momento do enableField, ele aparece pra mim como habilitado porém não consigo digitar nada nesse campo. Será que esto...
LM
Problemas com Numeric Mask e disableField  
Tenho um campo (TEntry) com um NumericMask adicionado.
Tenho também um método que realiza um TField::disableField para desabilitar esse campo, de acordo com uma ação que o usuário executa é chamado outro método que executa um TField::enableField nesse campo, porém no momento do enableField, ele aparece pra mim como habilitado porém não consigo digitar nada nesse campo.

Será que estou fazendo algo de errado ?

Estou executando o disable e o enable em dois metodos distintos na mesma classe.

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 (7)


AM

Bom dia Luy,
favor posta o código para dar uma analisada, bem provavel que possa existir algum erro.
no aguardo.
LM

Estas são as minhas duas funções que bloqueiam e desbloqueiam os campos.

 
  1. <?php
  2. public function lockFields(){
  3. TDate::disableField(self::FORM_NAME, 'brd_dt_operacao');
  4. TField::disableField(self::FORM_NAME, 'brd_tx_juros');
  5. TField::disableField(self::FORM_NAME, 'brd_tx_duplicata');
  6. TField::disableField(self::FORM_NAME, 'brd_tx_operacao');
  7. }
  8. public function unlockFields(){
  9. TDate::enableField(self::FORM_NAME, 'brd_dt_operacao');
  10. TField::enableField(self::FORM_NAME, 'brd_tx_juros');
  11. TField::enableField(self::FORM_NAME, 'brd_tx_duplicata');
  12. TField::enableField(self::FORM_NAME, 'brd_tx_operacao');
  13. }
  14. ?>


E este é a parte do meu construct, onde eu crio os campos e adiciono a máscara, depois que eu crio eu só adiciono a table que vai dentro do form.
E passo esse "form_fields" no setFields do meu form no final.

 
  1. <?php
  2. //campos
  3. $form_fields[] = $dt_operacao = new TDateBr('brd_dt_operacao');
  4. $form_fields[] = $tx_juros = new TEntry('brd_tx_juros');
  5. $form_fields[] = $tx_operacao = new TEntry('brd_tx_operacao');
  6. $form_fields[] = $tx_duplicata = new TEntry('brd_tx_duplicata');
  7. $form_fields[] = $id_cliente = new ">TDBSeekButton('brd_cli_id', 'permission', self::FORM_NAME, 'TbCliente', 'cli_nome', 'brd_cli_id', 'brd_cli_nome');
  8. $form_fields[] = $cliente = new TEntry('brd_cli_nome');
  9. $form_fields[] = $tt_operacao = new TEntry('brd_tt_operacao');
  10. $form_fields[] = $tt_emprestado = new TEntry('brd_tt_emprestado');
  11. $form_fields[] = $tt_juros = new TEntry('brd_tt_juros');
  12. $form_fields[] = $tt_imposto = new TEntry('brd_tt_imposto');
  13. $form_fields[] = $tt_taxas = new TEntry('brd_tt_taxas');
  14. //modifica os campos --MASCARA
  15. $tx_juros ->setNumericMask(2, ',', '.', TRUE);
  16. $tx_operacao ->setNumericMask(2, ',', '.', TRUE);
  17. $tx_duplicata ->setNumericMask(2, ',', '.', TRUE);
  18. $tt_operacao ->setNumericMask(2, ',', '.', TRUE);
  19. $tt_emprestado->setNumericMask(2, ',', '.', TRUE);
  20. $tt_juros ->setNumericMask(2, ',', '.', TRUE);
  21. $tt_imposto ->setNumericMask(2, ',', '.', TRUE);
  22. $tt_taxas ->setNumericMask(2, ',', '.', TRUE);
  23. ?>


E por fim o pedaço do meu método reload que avalia se deve chamar a função que bloqueia ou que desbloqueia.

 
  1. <?php
  2. $bordero = TSession::getValue(self::FORM_NAME);
  3. $this->form->setData($bordero);
  4. //preenche a grid
  5. $duplicatas = $bordero->getDuplicatas();
  6. $count = count($duplicatas);
  7. if($count > 0){
  8. $this->lockFields();
  9. }else{
  10. $this->unlockFields();
  11. }
  12. ?>
AM

Luy boa noite

a principio estive verificando o código e você esta usando API Reference , alterei o teu codigo para você testar segue abaixo:

 
  1. <?php
  2. public function lockFields(){
  3. $dt_operacao->setEditable(FALSE);
  4. $tx_juros->setEditable(FALSE);
  5. $tx_operacao ->setEditable(FALSE);
  6. $tx_duplicata->setEditable(FALSE);
  7. }
  8. public function unlockFields(){
  9. $dt_operacao->setEditable(True);
  10. $tx_juros->setEditable(True);
  11. $tx_operacao ->setEditable(True);
  12. $tx_duplicata->setEditable(True);
  13. }
  14. ?>


na segunda parte experimenta colocar $form_fields[] antes da variavel, senão tira todos os $form_fields que funciona corretamente :

$form_fields[] = $tx_juros ->setNumericMask(2, ',', '.', TRUE);



este é meu exemplo :
class Cadastro extends TPage
{
protected $form; // form

use AdiantiBaseAdiantiStandardFormTrait; // metodos


function __construct()
{
parent::__construct();

$this->setDatabase('sample'); // define o banco
$this->setActiveRecord('TblDuplicata'); // define tabela

// creates the form
$this->form = new TQuickForm('form_TblDuplicata');
$this->form->class = 'tform';
$this->form = new BootstrapFormWrapper($this->form);
$this->form->style = 'display: table;width:100%';

// define the form title
$this->form->setFormTitle('TblDuplicata');



// create the form fields
$idtbl_duplicata = new TEntry('idtbl_duplicata');
$tbl_duplicata_data = new TDate('tbl_duplicata_data');
$tbl_duplicata_nome = new TEntry('tbl_duplicata_nome');
$tbl_duplicata_valor = new TEntry('tbl_duplicata_valor');


// add the fields
$this->form->addQuickField('Idtbl Duplicata', $idtbl_duplicata, 100 );
$this->form->addQuickField('Tbl Duplicata Data', $tbl_duplicata_data, 100 );
$this->form->addQuickField('Tbl Duplicata Nome', $tbl_duplicata_nome, 200 );
$this->form->addQuickField('Tbl Duplicata Valor', $tbl_duplicata_valor, 100 );




if (!empty($idtbl_duplicata))
{
$idtbl_duplicata->setEditable(False);
}



// Ação
$this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
$this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'bs:plus-sign green');

// vertical container
$container = new TVBox;
$container->style = 'width: 90%';
$container->add(TPanelGroup::pack('Title', $this->form));

parent::add($container);
}
}


AM

na Segunda parte experimenta Colocar $ form_fields [] Antes da variavel, senão tira todos OS $ form_fields Que Funciona corretamente: $ form_fields [] = $ tx_juros -> setNumericMask ( '.' 2 ',', TRUE);

este E meu Exemplo:
 
  1. <?php
  2. classe Cadastro estende TPage { formulário $ protegidos; // Formulário uso AdiantiBaseAdiantiStandardFormTrait; // Metodos função __construct () { parent :: __ construct (); $ this-> setdatabase ( 'sample'); // Definir o banco $ this-> setActiveRecord ( 'TblDuplicata'); // Definir Tabela // cria o formulário $ this-> form = new TQuickForm ( 'form_TblDuplicata'); $ this-> form-> class = 'TForm'; $ this-> form = new BootstrapFormWrapper ($ this-> form ); $ this-> form-> style = "display: table; width: 100% '; // definir o título do formulário $ this-> form-> setFormTitle (' TblDuplicata '); // cria os campos do formulário $ idtbl_duplicata = new Tentry ( 'idtbl_duplicata'); $ tbl_duplicata_data = new TDate ( 'tbl_duplicata_data'); $ tbl_duplicata_nome = new Tentry ( 'tbl_duplicata_nome'); $ tbl_duplicata_valor = new Tentry ( 'tbl_duplicata_valor'); // adicionar os campos $ this- > form-> addQuickField ( 'Idtbl Duplicate', $ idtbl_duplicata, 100); $ this-> form-> addQuickField ( "Tbl Duplicate Data ', $ tbl_duplicata_data, 100); $ this-> form-> addQuickField (" Tbl Duplicate Nome ', $ tbl_duplicata_nome, 200); $ this-> form-> addQuickField ( "Tbl Duplicate Valor', $ tbl_duplicata_valor, 100); if (empty ($ idtbl_duplicata!)) { $ idtbl_duplicata-> setEditable (Falso); } // Ação $ this-> form-> addQuickAction (_t ( 'Save'), novo TAction (array ($ this, 'onSave')), 'fa: floppy-o'); $ this-> form-> addQuickAction (_t ( 'New'), novo TAction (array ($ this, 'onedit')), 'bs: verde sinal de mais'); // verticais recipiente $ recipiente = new TVBox; $ contentores> style = "width : 90% '; $ contentores> add (TPanelGroup :: pacote (' Título ', $ this-> form)); parent :: add ($ container); } }
  3. ?>
LM

Olá boa noite.

Não entendi muito bem. Como posso usar $tx_juros->setEditable, se a minha variavel $tx_juros não existe no meu metodo lockFields? Ela pertence somente ao meu metodo construtor.
AM

Bom dia Luy ,
pelo que eu entendi na tua programação é para bloquear no formulario ? Então partindo que esta tua chamada ocorreria no final, montei aquele script .

<?Php
$count = count($duplicatas);
if($count > 0){
$this->lockFields();
}else{
$this->unlockFields();
}
?>
AF

Olá Luy Motta! Como vai?
Conseguiu resolver este problema? Estou tendo o mesmo aqui.
Obrigado!