Lançado Adianti Framework 8.1!
Clique aqui para saber mais
Trabalhando com TRadioGroup Bom dia pessoal. Estou tendo um problema com um formulário em que tenho um campo TRadioGroup. Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo. E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica ...
RC
Trabalhando com TRadioGroup  
Bom dia pessoal. Estou tendo um problema com um formulário em que tenho um campo TRadioGroup.
Quando eu clico no botão novo para cadastrar um novo fornecedor o TRadioGroup não vem marcado como segue em anexo.

E um outro porém é quando cadastro um fornecedor do tipo pessoa jurídica e depois vou editar alterando pra pessoa física, o mesmo não apaga o campo pessoa jurídica. O mesmo fica não editável, mas não limpa o campo!

Podem me dar um help quanto a esses dois problemas?

Código da classe control FornecedorFormView:
  1. <?php
  2. /**
  3.  * FornecedorFormView Control
  4.  * @author  <Ricelli Carvalho>
  5.  */
  6. class FornecedorFormView extends TStandardForm {
  7.     protected $form;
  8.     function __construct() {
  9.         parent::__construct();
  10.         $this->form = new TQuickForm('form_Fornecedor');
  11.         $this->form->setFormTitle('Fornecedores');
  12.         $this->form->class 'tform';
  13.       
  14.         parent::setDatabase('permission');
  15.       
  16.         parent::setActiveRecord('Fornecedor');
  17.         $id = new TEntry('id');
  18.         $id->setEditable(false);
  19.         
  20.         $tipopessoa = new Adianti\\Widget\\Form\\TRadioGroup('tipo');
  21.         $tipopessoa->addItems(array('1'=>'Pessoa fisíca''2'=>'Pessoa jurídica'));
  22.         $tipopessoa->setLayout('horizontal');
  23.         $tipopessoa->setValue(2);
  24.         
  25.        $nomerazaosocial = new Adianti\\Widget\\Form\\TEntry('nomerazaosocial');
  26.        
  27.        $cnpj  = new  Adianti\\Widget\\Form\\TEntry('cnpj');
  28.        $cnpj->setMask('99.999.999/9999-99');
  29.        
  30.        $cpf  = new  Adianti\\Widget\\Form\\TEntry('cpf');
  31.        $cpf->setMask('999.999.999-99');
  32.        
  33.        $inscricaoestadual  = new  Adianti\\Widget\\Form\\TEntry('inscricaoestadual');
  34.        
  35.        $endereco = new  Adianti\\Widget\\Form\\TEntry('endereco');
  36.        
  37.        $cidade = new  Adianti\\Widget\\Form\\TEntry('cidade');
  38.        
  39.        $bairro = new  Adianti\\Widget\\Form\\TEntry('bairro');
  40.        
  41.        $uf = new TCombo('uf');
  42.        $uf->addItems( array("AC"=>"AC - Acre""AL"=>"AL - Alagoas""AM"=>"AM - Amazonas""AP"=>"AP - Amapá","BA"=>"BA - Bahia","CE"=>"CE - Ceará","DF"=>"DF - Distrito Federal","ES"=>"ES - Espírito Santo","GO"=>"GO - Goiás","MA"=>"MA - Maranhão","MT"=>"MT - Mato Grosso","MS"=>"MS - Mato Grosso do Sul","MG"=>"MG - Minas Gerais","PA"=>"PA - Pará","PB"=>"PB - Paraíba","PR"=>"PR - Paraná","PE"=>"PE - Pernambuco","PI"=>"PI - Piauí","RJ"=>"RJ - Rio de Janeiro","RN"=>"RN - Rio Grande do Norte","RO"=>"RO - Rondônia","RS"=>"RS - Rio Grande do Sul","RR"=>"RR - Roraima","SC"=>"SC - Santa Catarina","SE"=>"SE - Sergipe","SP"=>"SP - São Paulo","TO"=>"TO - Tocantins"));
  43.        
  44.        $cep = new  Adianti\\Widget\\Form\\TEntry('cep');
  45.        $cep->setMask('99999-999');
  46.        
  47.        $telefone = new  Adianti\\Widget\\Form\\TEntry('telefone');
  48.        
  49.        $observacoes= new Adianti\\Widget\\Form\\TText('observacoes');
  50.       
  51.         // add the fields
  52.         $this->form->addQuickField('ID'$id50);
  53.         $this->form->addQuickField('Tipo de pessoa' ': '$tipopessoa200);
  54.         $this->form->addQuickField('Nome/Razão social' ': '$nomerazaosocial400);
  55.         $this->form->addQuickField('CNPJ' ': '$cnpj200);
  56.         $this->form->addQuickField('CPF' ': '$cpf200);
  57.         $this->form->addQuickField('Inscrição estadual' ': '$inscricaoestadual200);
  58.         $this->form->addQuickField('Endereço' ': '$endereco200);
  59.         $this->form->addQuickField('Cidade' ': '$cidade200);
  60.         $this->form->addQuickField('Bairro' ': '$bairro200);
  61.         $this->form->addQuickField('UF' ': '$uf200);
  62.         $this->form->addQuickField('CEP' ': '$cep200);
  63.         $this->form->addQuickField('Telefone' ': '$telefone200);
  64.         $this->form->addQuickField('Observações' ': '$observacoes,200);
  65.          $observacoes->setSize(40090);
  66.         
  67.         $tipopessoa->setChangeAction( new TAction( array($this'onChangeRadio')) );
  68.         self::onChangeRadio( array('enable'=>2) );
  69.        
  70.         // validations
  71.         
  72.         // add form actions
  73.         $this->form->addQuickAction(_t('Save'), new TAction(array($this'onSave')), 'ico_save.png');
  74.         $this->form->addQuickAction(_t('New'), new TAction(array($this'onEdit')), 'ico_new.png');
  75.         $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('CategoriaDataGrid''onReload')), 'ico_datagrid.png');
  76.         $container = new TTable;
  77.         $container->style 'width: 80%';
  78.         $container->addRow()->addCell(new TXMLBreadCrumb('menu.xml''FornecedorFormView'));
  79.         $container->addRow()->addCell($this->form);
  80.         // add the form to the page
  81.         parent::add($container);
  82.     }
  83.     
  84.         /**
  85.      * on ChangeRadio change
  86.      * @param $param Action parameters
  87.      */
  88.     public static function onChangeRadio($param)
  89.     {
  90.         if ($param['tipo'] == 1)
  91.         {
  92.             TEntry::enableField('form_Fornecedor''cpf');
  93.                         
  94.             TEntry::disableField('form_Fornecedor''cnpj');
  95.             TEntry::disableField('form_Fornecedor''inscricaoestadual');
  96.         }
  97.         else
  98.         {
  99.             TEntry::disableField('form_Fornecedor''cpf');            
  100.            
  101.             TEntry::enableField('form_Fornecedor''cnpj');
  102.             TEntry::enableField('form_Fornecedor''inscricaoestadual');
  103.         }
  104.     }
  105. }
  106. ?>

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


FC

É preciso fazer essas alterações no onEdit no seu caso é preciso criar o onEdit dentro dessa classe pois ela está pegando o onEdit da classe TStandardForm.
RC

Ok. E como se faz para limpar somente um determinado campo input do formulário?

Tem o comando $this->form->clear(); mas o mesmo limpar todo o formulário! Preciso limpar só determinado campo.
FC

  1. <?php
  2. TEntry::clearField('seuform''seucampo');
  3. ?>

RC

Ok Felipe, fiz dessa forma ai e deu certo limpar os campos. Só não consegui colocar pra funcionar no método onEdit como vc sugeriu que eu fizesse. Quando clico pra editar um registro do tipo 2 (pessoa jurídica) funciona normalmente, mas quando é do tipo 1 (pessoa física) não traz o CPF!

Fiz assim no onEdit:
  1. <?php
  2.         function onEdit($param) {
  3.         try {
  4.             if (isset($param['key'])) {
  5.                 
  6.                 $key $param['key'];
  7.                 TTransaction::open('permission');
  8.           
  9.                 $object = new Fornecedor($key);     
  10.                 
  11.                 self::onChangeRadio( array('tipo'=>$object->tipo) );
  12.                
  13.                 $this->form->setData($object);
  14.                
  15.                 TTransaction::close();
  16.             } else {
  17.                 $this->form->clear();
  18.             }
  19.         } catch (Exception $e) { 
  20.            
  21.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  22.           
  23.             TTransaction::rollback();
  24.         }
  25.     }
  26. ?>


E o método onChangeRadio ficou assim:
  1. <?php
  2.     public static function onChangeRadio($param)
  3.     {
  4.         if ($param['tipo'] == 1)
  5.         {        
  6.             TEntry::enableField('form_Fornecedor''cpf');
  7.                         
  8.             TEntry::disableField('form_Fornecedor''cnpj');
  9.             TEntry::disableField('form_Fornecedor''inscricaoestadual');
  10.             
  11.            TEntry::clearField('form_Fornecedor''cnpj');
  12.             TEntry::clearField('form_Fornecedor''inscricaoestadual');
  13.         }
  14.         else
  15.         {
  16.             TEntry::disableField('form_Fornecedor''cpf');            
  17.            
  18.             TEntry::enableField('form_Fornecedor''cnpj');
  19.             TEntry::enableField('form_Fornecedor''inscricaoestadual');
  20.             
  21.             TEntry::clearField('form_Fornecedor''cpf');
  22.         }
  23.     }
  24. ?>


Alguma sugestão pessoal?
FC

O erro com certeza é na passagem do parâmetro nessa linha:

self::onChangeRadio( array('tipo'=>$object->tipo) );

Pode testa como está chegando o $param['tipo'] dentro da função onChangeRadio ou pode simplesmente fazer essa checagem dentro do próprio onEdit

  1. <?php
  2.             function onEdit($param) {
  3.             try {
  4.                 if (isset($param['key'])) {
  5.                     
  6.                     $key $param['key'];
  7.                     TTransaction::open('permission');
  8.               
  9.                     $object = new Fornecedor($key);     
  10.    
  11.                   if ($object->tipo == 1)
  12.         {        
  13.             TEntry::enableField('form_Fornecedor''cpf');
  14.                         
  15.             TEntry::disableField('form_Fornecedor''cnpj');
  16.             TEntry::disableField('form_Fornecedor''inscricaoestadual');
  17.             
  18.            TEntry::clearField('form_Fornecedor''cnpj');
  19.             TEntry::clearField('form_Fornecedor''inscricaoestadual');
  20.         }
  21.         else
  22.         {
  23.             TEntry::disableField('form_Fornecedor''cpf');            
  24.            
  25.             TEntry::enableField('form_Fornecedor''cnpj');
  26.             TEntry::enableField('form_Fornecedor''inscricaoestadual');
  27.             
  28.             TEntry::clearField('form_Fornecedor''cpf');
  29.         } 
  30.                    
  31.                     $this->form->setData($object);
  32.                    
  33.                     TTransaction::close();
  34.                 } else {
  35.                     $this->form->clear();
  36.                 }
  37.             } catch (Exception $e) { 
  38.                
  39.                 new TMessage('error''<b>Error</b> ' $e->getMessage());
  40.               
  41.                 TTransaction::rollback();
  42.             }
  43.         }
  44.     ?>


Tenta descobrir o erro na passagem, mas se ficar muito apertado é só um if a mais... não vai influenciar :)