Habilitar e desabilitar campo Olá amigos, Alguém poderia me orientar como habilitar e desabilitar um campo no formulário de acordo com o código inserido TSeekButton....
ST
Habilitar e desabilitar campo  
Olá amigos,
Alguém poderia me orientar como habilitar e desabilitar um campo no formulário de acordo com o código inserido TSeekButton.

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


ST

Preciso de um exemplo em que tenha um campo TDBSeekButton.
NR

adianti.com.br/framework_files/tutor/index.php?class=FormEnableDisab

A única diferença é que o exemplo utiliza a função setChangeAction para os radios enquanto que para o seek você deve usar a função setExitAction.
ST

Amigo Nataniel,

Estou fazendo da seguinte forma mas não está funcionando:

$OrigemDocumento_id->setExitAction( new TAction( array($this, 'onChangeButtonSeek')) );
self::onChangeButtonSeek('OrigemDocumento_id'->$OrigemDocumento_id);

public static function onChangeButtonSeek($param)
{
if ($param['OrigemDocumento_id'] == 1)
{
TEntry::disableField('form_perdcomp', 'PerdcompOriginal');
}
else
{
TEntry::enableField('form_perdcomp', 'PerdcompOriginal');
}
}


Segue código completo do formulário:

<?php/** * PerdcompForm Registration * @author  <your name here> */class PerdcompForm extends TPage{    protected $form; // form        use Adianti\Base\AdiantiStandardFormTrait; // Standard form methods        /**     * Class constructor     * Creates the page and the registration form     */    function __construct()    {        parent::__construct();                $this->setDatabase('perdcomp');              // defines the database        $this->setActiveRecord('Perdcomp');     // defines the active record                // creates the form        $this->form = new TQuickForm('form_Perdcomp');        $this->form->class = 'tform'; // change CSS class       //  $this->form = new BootstrapFormWrapper($this->form);        $this->form->style = 'display: table;width:100%'; // change style                // define the form title        $this->form->setFormTitle('Perdcomp');             // create the form fields        $perdcomp_id = new TEntry('perdcomp_id');        $DataCriacao = new TDate('DataCriacao');        $DataTransmissao = new TDate('DataTransmissao');        $Sequencial = new TEntry('Sequencial');        $Nr_Perdcomp = new TEntry('Nr_Perdcomp');        $TipoDocumento_id           = new 
">TDBSeekButton('TipoDocumento_id', 'perdcomp',$this->form->getName(),'TipoDocumento', 'TipoDocumentoDescricao','TipoDocumento_id','tipo_documento');        $TipoDocumentoDescricao   = new TEntry('tipo_documento');        $OrigemDocumento_id       = new 
">TDBSeekButton('OrigemDocumento_id', 'perdcomp', $this->form->getName(), 'OrigemDocumento', 'OrigemDocumentoDescricao', 'OrigemDocumento_id', 'origem_documento');        $OrigemDocumentoDescricao = new TEntry('origem_documento');        $TipoCredito_id       = new 
">TDBSeekButton('TipoCredito_id', 'perdcomp', $this->form->getName(), 'TipoCredito', 'TipoCreditoDescricao', 'TipoCredito_id', 'tipo_credito');        $TipoCreditoDescricao = new TEntry('tipo_credito');        //$SaldoDeclarado = new TEntry('SaldoDeclarado');        $Exercicio = new TEntry('Exercicio');        $TipoImposto_id       = new 
">TDBSeekButton('TipoImposto_id', 'perdcomp', $this->form->getName(), 'TipoImposto', 'TipoImpostoDescricao', 'TipoImposto_id', 'tipo_imposto');        $TipoImpostoDescricao = new TEntry('tipo_imposto');        //$ValorCompensado = new TEntry('ValorCompensado');        //$Competencia = new TEntry('Competencia');        $PerdcompOriginal = new TEntry('PerdcompOriginal');                $TipoSituacao_id       = new 
">TDBSeekButton('TipoSituacao_id', 'perdcomp', $this->form->getName(), 'TipoSituacao', 'TipoSituacaoDescricao', 'TipoSituacao_id', 'tipo_situacao');        $TipoSituacaoDescricao = new TEntry('tipo_situacao');                //$Situacao = new TEntry('Situacao');        $Cancelamento = new TEntry('Cancelamento');        $CreditoOriginalInicial = new TEntry('CreditoOriginalInicial');        $CreditoOriginalUtilizadoCompensacoes = new TEntry('CreditoOriginalUtilizadoCompensacoes');        //$CreditoOriginalDisponivel = new TEntry('CreditoOriginalDisponivel');        $CreditoOriginalTransmissao = new TEntry('CreditoOriginalTransmissao');        $SelicAcumulada = new TEntry('SelicAcumulada');        $CreditoAtualizado = new TEntry('CreditoAtualizado');        $DebitosDocumento = new TEntry('DebitosDocumento');        $CreditoOriginalUtilizadoDocumento = new TEntry('CreditoOriginalUtilizadoDocumento');        $SaldoCreditoOriginal = new TEntry('SaldoCreditoOriginal');           // $system_unit_id   = new  TDBSeekButton('system_unit_id', 'permission', $this->form->getName(),'SystemUnit', 'name', 'system_unit_id', 'unit'); //       $system_unit = new TEntry('unit');    //$system_unit_id             = new TDBCombo('system_unit_id','permission','SystemUnit','id','name');        $Ged = new TFile('Ged');                // complete upload action                          $TipoDocumentoDescricao->setEditable(FALSE);        $TipoDocumento_id->setSize('40');        $TipoDocumentoDescricao->setSize('500');        $OrigemDocumentoDescricao->setEditable(FALSE);        $OrigemDocumento_id->setSize('40');        $OrigemDocumentoDescricao->setSize('500');        $TipoCreditoDescricao->setEditable(FALSE);        $TipoCredito_id->setSize('40');        $TipoCreditoDescricao->setSize('500');        $TipoImpostoDescricao->setEditable(FALSE);        $TipoImposto_id->setSize('40');        $TipoImpostoDescricao->setSize('500');        $TipoSituacaoDescricao->setEditable(FALSE);        $TipoSituacao_id->setSize('40');        $TipoSituacaoDescricao->setSize('500');                    //$SaldoDeclarado->setNumericMask(2, ',', '.', TRUE);        //$ValorCompensado->setNumericMask(2, ',', '.', TRUE);        $CreditoOriginalInicial->setNumericMask(2, ',', '.', TRUE);        $CreditoOriginalUtilizadoCompensacoes->setNumericMask(2, ',', '.', TRUE);        //$CreditoOriginalDisponivel->setNumericMask(2, ',', '.', TRUE);        $CreditoOriginalTransmissao->setNumericMask(2, ',', '.', TRUE);        $SelicAcumulada->setNumericMask(2, ',', '.', TRUE);        $CreditoAtualizado->setNumericMask(2, ',', '.', TRUE);        $DebitosDocumento->setNumericMask(2, ',', '.', TRUE);        $CreditoOriginalUtilizadoDocumento->setNumericMask(2, ',', '.', TRUE);        $SaldoCreditoOriginal->setNumericMask(2, ',', '.', TRUE);        $Nr_Perdcomp->setMask('99999.99999.999999.9.9.99-9999');        $PerdcompOriginal->setMask('99999.99999.999999.9.9.99-9999');        $DataCriacao->setMask('dd/mm/yyyy');        $DataTransmissao->setMask('dd/mm/yyyy');        //$Competencia->setMask('dd/mm/yyyy');               // add the fields        $this->form->addQuickField('Código:', $perdcomp_id,  100);        $this->form->addQuickField('Data Criação:', $DataCriacao,  100, new TRequiredValidator );        $this->form->addQuickField('Data Transmissão:', $DataTransmissao,  100,new TRequiredValidator );        $this->form->addQuickField('Sequencial:', $Sequencial,  40,new TRequiredValidator );        $this->form->addQuickField('Nº Perdcomp:', $Nr_Perdcomp,  220,new TRequiredValidator );        $this->form->addQuickFields('Tipo Documento:', [$TipoDocumento_id,$TipoDocumentoDescricao],new TRequiredValidator );             $this->form->addQuickFields('Origem Documento:', [ $OrigemDocumento_id, $OrigemDocumentoDescricao ],new TRequiredValidator );             $this->form->addQuickFields('Tipo Crédito:', [ $TipoCredito_id, $TipoCreditoDescricao],new TRequiredValidator );            // $this->form->addQuickField('Saldo Declarado:', $SaldoDeclarado,  100 );        $this->form->addQuickFields('Imposto:', [ $TipoImposto_id, $TipoImpostoDescricao],new TRequiredValidator );             $this->form->addQuickField('Exercicio:', $Exercicio,  100 );       // $this->form->addQuickField('Valor Compensado:', $ValorCompensado,  100 );       // $this->form->addQuickField('Competência:', $Competencia,  100 );        $this->form->addQuickField('Perdcomp Original:', $PerdcompOriginal,  220 );      //  $this->form->addQuickField('Situação:', $Situacao,  200 );        $this->form->addQuickFields('Situação:', [ $TipoSituacao_id, $TipoSituacaoDescricao],new TRequiredValidator );               $this->form->addQuickField('Cancelamento:', $Cancelamento,  200 );        $this->form->addQuickField('Crédito Original Inicial:', $CreditoOriginalInicial,  100 );        $this->form->addQuickField('Crédito Original Utilizado Compensações:', $CreditoOriginalUtilizadoCompensacoes,  100 );       // $this->form->addQuickField('Crédito Original Disponível:', $CreditoOriginalDisponivel,  100 );        $this->form->addQuickField('Crédito Original na Data da Transmissão:', $CreditoOriginalTransmissao,  100 );        $this->form->addQuickField('Selic Acumulada:', $SelicAcumulada,  100 );        $this->form->addQuickField('Crédito Atualizado:', $CreditoAtualizado,  100 );        $this->form->addQuickField('Débitos Documento:', $DebitosDocumento,  100 );        $this->form->addQuickField('Crédito Original Utilizado Documento:', $CreditoOriginalUtilizadoDocumento,  100 );        $this->form->addQuickField('Saldo Crédito Original:', $SaldoCreditoOriginal,  100);      //  $this->form->addQuickFields('Empresa:', [$system_unit_id,$system_unit], new TRequiredValidator);             $this->form->addQuickField('Ged:', $Ged,  500 );                        if (!empty($perdcomp_id))        {            $perdcomp_id->setEditable(FALSE);        }                  $OrigemDocumento_id->setExitAction( new TAction( array($this, 'onChangeButtonSeek')) );       self::onChangeButtonSeek('OrigemDocumento_id'->$OrigemDocumento_id);                                   $source_path   = 'app/files/documents/'. TSession::getValue('userunitid');                 if (!file_exists($source_path))                {                mkdir($source_path, 0777,true);                }                                if (!file_exists($target_path))                {                mkdir($target_path, 0777,true);                }                       /** samples         $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields         $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation         $fieldX->setSize( 100, 40 ); // set size         **/                 // create the form actions        $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');        $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('PerdcompList', 'onReload')), 'fa:table blue');                  // vertical box container        $container = new TVBox;        $container->style = 'width: 101%';        // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));        $container->add($this->form);        //$container->add(TPanelGroup::pack('Perdcomp', $this->form));        parent::add($container);                               }        /**     * Save form data     * @param $param Request     */    public function onSave( $param )    {        try        {            TTransaction::open('perdcomp'); // open a transaction                       /**            // Enable Debug logger for SQL operations inside the transaction            TTransaction::setLogger(new TLoggerSTD); // standard output            TTransaction::setLogger(new TLoggerTXT('log.txt')); // file            **/                       $this->form->validate(); // validate form data                       $object = new Perdcomp;  // create an empty object            $data = $this->form->getData(); // get form data as array            $object->fromArray( (array) $data); // load the object with data              if (!empty($object->DataCriacao)) {                 $object->DataCriacao = DateTime::createFromFormat('d/m/Y', $object->DataCriacao)->format( 'Y-m-d' );           }           if (!empty($object->DataTransmissao)) {           $object->DataTransmissao = DateTime::createFromFormat('d/m/Y', $object->DataTransmissao)->format( 'Y-m-d' );           }                                          $object->system_user_id = TSession::getvalue('userid');            $user = new SystemUser(TSession::getValue('userid'));            $object->system_unit_id = $user->system_unit_id;                                   $source_file   = 'tmp/'.$object->Ged;            $target_path   = 'app/files/documents/'. TSession::getValue('userunitid');            $target_file   = $target_path . '/'.$object->Ged;            copy($source_file, $target_file);                        if ($handle = opendir('tmp/')):                               /* Esta é a forma correta de varrer o diretório */                while (false !== ($file = readdir($handle))):                    if ($file != '.' && $file != '..' && is_file("tmp/{$file}")):                            unlink("tmp/{$file}");                    endif;                endwhile;                closedir($handle);            endif;                        $target_path   = 'tmp/' . TSession::getValue('userunitid');            rmdir($target_path);            rmdir('tmp');                          $htaccess = 'app/htaccess/.htaccess';            $pasta = 'app/files/.htaccess';            copy($htaccess,$pasta);                       // $uniqueValidator = new TUniqueValidator;           // $uniqueValidator->validate('CPF', $object->cpf, array('database' => 'ieadb', 'model' => 'Member','field' => 'cpf', 'id' => $object->id));                         $object->store(); // save the object                       // get the generated id            $data->id = $object->id;                       $this->form->setData($data); // fill form data            TTransaction::close(); // close the transaction                       new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));        }        catch (Exception $e) // in case of exception        {            new TMessage('error', $e->getMessage()); // shows the exception error message            $this->form->setData( $this->form->getData() ); // keep form data            TTransaction::rollback(); // undo all pending operations        }            }       /**     * Clear form data     * @param $param Request     */         public function onClear( $param )    {        $this->form->clear();    }       /**     * Load object to form data     * @param $param Request     */              public function onEdit( $param )    {        try        {            if (isset($param['key']))            {                $key = $param['key'];  // get the parameter $key                TTransaction::open('perdcomp'); // open a transaction                $object = new Perdcomp($key); // instantiates the Active Record              if (!empty($object->DataCriacao)) {                      $object->DataCriacao = DateTime::createFromFormat('Y-m-d', $object->DataCriacao)->format( 'd/m/Y' );           }                     if (!empty($object->DataTransmissao)) {              $object->DataTransmissao = DateTime::createFromFormat('Y-m-d', $object->DataTransmissao)->format( 'd/m/Y' );            }                                            $this->form->setData($object); // fill the form                TTransaction::close(); // close the transaction            }            else            {                $this->form->clear();            }        }        catch (Exception $e) // in case of exception        {            new TMessage('error', $e->getMessage()); // shows the exception error message            TTransaction::rollback(); // undo all pending operations        }    }        public static function onChangeButtonSeek($param)    {        if ($param['OrigemDocumento_id'] == 1)        {            TEntry::disableField('form_perdcomp', 'PerdcompOriginal');          }        else        {            TEntry::enableField('form_perdcomp', 'PerdcompOriginal');       }    }      }</your>
NR

O nome do formulário informado na função onChangeButtonSeek está diferente do nome informado na função onChangeButtonSeek:
<?php// construct$this->form = new TQuickForm('form_Perdcomp');// funcao onChangeButtonSeekTEntry::disableField('form_perdcomp', 'PerdcompOriginal');?>
ST

Nataniel,
Realizei as alterações conforme suas orientações mas não funcionou.
EB

Funciona perfeitamente. Obrigado pela dica @Nataniel!