Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Bloqueio de campos (TDBCombo) Boa tarde! O bloqueio de campos não funciona para o TDBCombo? TEntry::disableField('form_MecOrcamento', 'cliente_id'); TDBCombo::disableField('form_MecOrcamento', 'mec_desconto_id');...
EC
Bloqueio de campos (TDBCombo)  
Boa tarde! O bloqueio de campos não funciona para o TDBCombo?

TEntry::disableField('form_MecOrcamento', 'cliente_id');
TDBCombo::disableField('form_MecOrcamento', 'mec_desconto_id');

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


MG

use

  1. <?php
  2. ?>
MG

ops

use $id->setEditable(false);
EC

Obrigado Marcelo, mas sabe me dizer como referencio um objeto, no caso o TDBCombo em outra function, por exemplo, preciso impedir a edição neste objeto assim que o function onSaveDetail for executada. Funcionou para o TEntry...
  1. <?php
  2. public function onSaveDetail$param )
  3.     {
  4.         try
  5.         {
  6.             TTransaction::open('orcamento');
  7.             $data $this->form->getData();
  8.             
  9.                 
  10.             
  11.             if (empty($data->dtl_produto_id))
  12.             {                
  13.                 throw new Exception('Informe o item!');                
  14.             }
  15.             $items TSession::getValue(__CLASS__.'_items');
  16.             $key = empty($data->dtl_id) ? 'X'.mt_rand(10000000001999999999) : $data->dtl_id;
  17.             
  18.             //Desabilita o cliente e descontos no formulário mestre
  19.             TEntry::disableField($this->form->getName(), 'cliente_id'); //funciona
  20.             TDBCombo::disableField($this->form->getName(),'mec_desconto_id'); //não bloqueia a alteração no objeto
  21.             
  22.             
  23.             $items$key ] = array();
  24.             $items$key ]['id'] = $key;
  25.             $items$key ]['produto_id'] = $data->dtl_produto_id;
  26.             $items$key ]['preco'] = $data->dtl_preco;
  27.             $items$key ]['qtde'] = $data->dtl_qtde;
  28.             $items$key ]['total'] = $data->dtl_total;
  29.             $items$key ]['desc_prod'] = $data->dtl_desc_prod;
  30.             $items$key ]['total_cd'] = $data->dtl_total_cd;
  31.             
  32.             
  33.             TSession::setValue(__CLASS__.'_items'$items);
  34.             
  35.             // clear detail form fields
  36.             $data->dtl_id '';
  37.             $data->dtl_produto_id '';
  38.             $data->dtl_preco '';
  39.             $data->dtl_qtde '';
  40.             $data->dtl_total '';
  41.             $data->dtl_desc_prod '';
  42.             $data->dtl_total_cd '';
  43.             
  44.             TTransaction::close();
  45.             $this->form->setData($data);
  46.             
  47.             $this->onReload$param ); // reload the items
  48.             TScript::create('setTimeout(function() { $("input[name=\'dtl_produto_id\']").focus() }, 500);');
  49.         }
  50.         catch (Exception $e)
  51.         {
  52.             $this->form->setData$this->form->getData());            
  53.             new TMessage('error'$e->getMessage());                        
  54.         }        
  55.     }
  56. ?>
MG

Tenta

  1. <?php
  2.     $data->mec_desconto_id->setEditable(false);
  3. >?
EC

Marcelo, usando a implementação informada, gerou o seguinte erro:
Fatal error: Uncaught Error: Call to a member function setEditable() on string in E:wamp64wwwmultimecappcontrolorcamentoMecOrcamentoForm.class.php on line 243

Estou fazendo algo errado ou existe alguma outra forma?

Agradeço a disposição.
MG

Eduardo,
De fato eu me enganei. O disabeleField funciona em algumas situações, veja abaixo;:

Este combo se não usar "enabledSearch" ele é um select normal.
Quando vc ativa "enableSearch" ele passa ser um "select2", e deixa de ser um select.

Pode ser isso que erteja ocoreendo.

Usando um Comob puro, que no fundo é um simples select, o TDBCombo::disableedField funciona.

Teste os 2 e inspecione e poderá ver a diferença;
EC

Marcelo, realmente... comentei a linha $mec_desconto_id->enableSearch(); e o código funcionou... então com o enableSearch ativado o bloqueio não funciona, de forma alguma? É um recurso tão bom... rs
MG

Eduardo
A questão que o "select2" não é um componente do form, ele é montado a partir de "css".
Eu não tentei, mas tente pegar o "id" do <span> principal do "select2" e injete via javscrit, por exemplo:

TScript::create("$(#id-select).attr('readonly','readonly')");</span>