Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Alterar classe / método dinamicamente de um TButton Boa tarde! Tenho em um TWindow um botão chamado Novo. Nesse TWindow tenho várias abas. Cada aba, corresponde à uma classe, onde são exibidas apenas algumas informações dessas classes. Gostaria de saber, se é possível, quando clicar em novo, ele chamar a tela correspondente limpa. A ideia seria criar o botão Novo no construct, mas de acordo com a aba selecionada, alterar a classe e...
WS
Alterar classe / método dinamicamente de um TButton  
Boa tarde!

Tenho em um TWindow um botão chamado Novo.
Nesse TWindow tenho várias abas. Cada aba, corresponde à uma classe, onde são exibidas apenas algumas informações dessas classes.
Gostaria de saber, se é possível, quando clicar em novo, ele chamar a tela correspondente limpa.

A ideia seria criar o botão Novo no construct, mas de acordo com a aba selecionada, alterar a classe e o metodo que ele chamaria ao ser clicado.

Obrigado!

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


NR

Poste o código para vermos como está criando o botão, se está usando BootstrapFormBuilder, etc
WS

Bom dia Nataniel,
muito obrigado pelo retorno!

vou postar o construct da classe onde estou tentando fazer a coisa funcionar.... Você vai perceber que na linha 405 coloquei o código
  1. <?php
  2. $this->form->setTabAction(new TAction(array($this'onCurrentPage'))); 
  3. ?>

Esse comando me da opção de coletar o número da página clicada quanto aciono alguma aba.
eu criei.

O botão que estou fazendo o teste está na linha 630, que é criado pelo comando

  1. <?php
  2. $btn_new = new TButton('Novo');
  3. ?>


Segue o código:

  1. <?php
  2. class ClienteForm extends TWindow
  3. {
  4.     protected $form// form
  5.     
  6.     /**
  7.      * Form constructor
  8.      * @param $param Request
  9.      */
  10.     public function __construct$param )
  11.     {       
  12.         parent::__construct();
  13.         parent::setSize(0.8null);
  14.         parent::removePadding();
  15.         parent::removeTitleBar();        
  16.          
  17.         $bdixc Utils::getBDIXC();       
  18.         $corlabobr Utils::getColLabObr();         
  19.      
  20. //Coleta dados do Banco - INÍCIO ----------------------------------------------------------------------------------        
  21.         if (isset($param['key']))
  22.         {
  23.           
  24.             $key $param['key']; 
  25.             TTransaction::open($bdixc);
  26.             $object = new Cliente($key);
  27.             $this->id $object->id;
  28.             TTransaction::close();
  29.         }
  30.         else
  31.         {
  32.             TTransaction::open($bdixc);           
  33.             TTransaction::close();
  34.         }       
  35.       
  36. //Coleta dados do Banco - FIM -------------------------------------------------------------------------------------        
  37.        
  38. //Cria Formulário Principal - INÍCIO ----------------------------------------------------------------------------- 
  39.         
  40.         $this->form = new BootstrapFormBuilder('form_Cliente');
  41.         $this->form->generateAria();
  42. // Cria Formulário Principal - FIM --------------------------------------------------------------------------------
  43.         
  44. /* OBSERVAÇÃO
  45.     Foi criado um recurso de criar campos "repetidos" para alternar estes campos com label diferente
  46.     no método onChangeRadio. No model, foi alterado os atributos dos objetos para que eles enviem os dados
  47.     do campo original.
  48. */
  49.         
  50. // Aba Cliente - INÍCIO -------------------------------------------------------------------------------------------        
  51.         
  52.         $id                    = new TEntry('id');
  53.         $razao                 = new TEntry('razao');
  54.         $razao_2               = new TEntry('razao_2');
  55.         $nome_fantasia         = new TEntry('fantasia');
  56.         $tipo                  = new TCombo('tipo_pessoa');       
  57.         $cnpj_cpf              = new TEntry('cnpj_cpf');
  58.         $cnpj_cpf_2            = new TEntry('cnpj_cpf_2');
  59.         $cnpj_cpf_tmp          = new THidden('cnpj_cpf_tmp');
  60.         $ie_identidade         = new TEntry('ie_identidade');   
  61.         $ie_identidade_2       = new TEntry('ie_identidade_2');    
  62.         $inscricao_municipal   = new TEntry('inscricao_municipal');
  63.         $inscricao_municipal_2 = new TEntry('inscricao_municipal_2');        
  64.         $contribuinte_icms     = new TRadioGroup('radio1');
  65.         $data_nascimento       = new TDate('data_nascimento');         
  66.         $data_nascimento_2     = new TDate('data_nascimento_2');       
  67.         $ativo                 = new TRadioGroup('ativo');
  68.         $filial_id             = new THidden('filial_id'); 
  69.         $complemento           = new TEntry('complemento');
  70.         $data_cadastro         = new TDate('data_cadastro');
  71.         $data_cadastro_2       = new TDate('data_cadastro_2');
  72.         $sexo                  = new TRadioGroup('Sexo');       
  73.         $grau_satisfacao       = new TRadioGroup('grau_satisfacao');
  74.         
  75. // Aba Cliente - FIM -----------------------------------------------------------------------------------------------        
  76. // Aba Endereço - INICIO -------------------------------------------------------------------------------------------
  77.         
  78.         $condominio   = new TDBCombo('condominio'$bdixc'Condominio''id''condominio''condominio');      
  79.         $cep          = new TEntry('cep');
  80.         $endereco     = new TEntry('endereco');
  81.         $numero       = new TEntry('numero');
  82.         $complemento  = new TEntry('complemento');
  83.         $uf           = new TDBCombo('uf'$bdixc'Estado''id''nome''nome');          
  84.         $cidade       = new TDBCombo('cidade'$bdixc'Cidade''id''nome''nome');
  85.         $bairro       = new TEntry('bairro');
  86. // Aba Endereço - FIM ----------------------------------------------------------------------------------------------
  87. // Aba Contato - INICIO --------------------------------------------------------------------------------------------
  88.                
  89.         $telefone_residencial = new TEntry('fone');      
  90.         $telefone_comercial   = new TEntry('telefone_comercial');
  91.         $telefone_celular     = new TEntry('telefone_celular');
  92.         $telefone_celular2    = new TEntry('whatsapp');
  93.      
  94.       /*Criado campo $email tipo THidden para receber os emails separados por ';'.
  95.         Ao coletar dos dados no model do Cliente no campo email, o campo de email retorna
  96.         um warning e nao preenchia corretamente o campo. Os dados são passados para o campo
  97.         $email_mul.
  98.       */
  99.       
  100.         $email                = new THidden('email'); 
  101.         $email_mul            = new TMultiEntry('email_mul');                      
  102.         $contato              = new TEntry('contato');
  103.         $contato_2            = new TEntry('contato_2');           
  104.         $hotsite_email        = new TEntry('hotsite_email');
  105.         $senha                = new TPassword('senha');        
  106. // Aba Contato - FIM -----------------------------------------------------------------------------------------------     
  107. // Aba CRM - INICIO ------------------------------------------------------------------------------------------------
  108.                
  109.         $prospeccao        = new TRadioGroup('crm');      
  110.         $indicado_atraves  = new TDBCombo('id_candato_tipo'$bdixc'CRM_Tipo_Candidato''id''tipo''id');
  111.         $concorrente       = new TDBCombo('id_concorrente'$bdixc'CRM_Concorrente''id''nome''id'); 
  112.         $responsavel       = new TEntry('responsavel');
  113.         $status_prospeccao = new TCombo('status_prospeccao');  
  114.         $enviar_lembrete   = new TRadioGroup('participa_pre_cobranca');
  115.         $enviar_email      = new TRadioGroup('cob_envia_email');
  116.         $enviar_sms        = new TRadioGroup('cob_envia_sms'); 
  117. // Aba CRM - FIM ----------------------------------------------------------------------------------------------------
  118. // Aba Outros - INICIO --------------------------------------------------------------------------------------------
  119.         $vendedor_padrao   = new TDBCombo('id_vendedor'$bdixc'Vendedor''id''nome''id');
  120.          
  121. // Aba Outros - FIM -----------------------------------------------------------------------------------------------
  122. // Aba Contratos - INÍCIO -----------------------------------------------------------------------------------
  123.         
  124.                 
  125.         $this->datagrid_con = new BootstrapDatagridWrapper(new TDataGrid);
  126.         $this->datagrid_con->style 'width: 100%';
  127.         
  128.          // creates the datagrid columns
  129.         $col_id = new TDataGridColumn('id''ID''left');
  130.         $col_status_contrato = new TDataGridColumn('status''Status Contrato''left');
  131.         $col_status_acesso = new TDataGridColumn('status_internet''Status Acesso''left');
  132.         $col_dt_ativa = new TDataGridColumn('ultima_atualizacao''Dt Ativação''left');
  133.         $col_renov = new TDataGridColumn('data_renovacao''Dt Renovação''left');
  134.         $col_pla_ven = new TDataGridColumn('id_vd_contrato''Id''left');
  135.         $col_pgt_ate = new TDataGridColumn('pago_ate_data''Pago Até''left');
  136.         $col_endereco = new TDataGridColumn('cont_endereco''Endereço''left');
  137.         
  138.         $col_status_contrato->setTransformer( [ 'Utils''format_status' ] );
  139.         $col_status_acesso->setTransformer( [ 'Utils''format_status_acesso' ] );
  140.         
  141.         $this->datagrid_con->addColumn($col_id);
  142.         $this->datagrid_con->addColumn($col_status_contrato);
  143.         $this->datagrid_con->addColumn($col_status_acesso);
  144.         $this->datagrid_con->addColumn($col_dt_ativa);
  145.         $this->datagrid_con->addColumn($col_renov);
  146.         $this->datagrid_con->addColumn($col_pla_ven);
  147.         $this->datagrid_con->addColumn($col_pgt_ate);
  148.         $this->datagrid_con->addColumn($col_endereco);
  149.         
  150.        $action1 = new TDataGridAction(['ContratoForm''onEdit'], ['id'=>'{id}''register_state' => 'false']);      
  151.        $this->datagrid_con->addAction($action1'View',   'fa:search gray');
  152.         
  153.         // create the datagrid model
  154.        $this->datagrid_con->createModel();
  155. // Aba Contratos - FIM --------------------------------------------------------------------------------------
  156. // Aba Login - INÍCIO -----------------------------------------------------------------------------------
  157.         
  158.         $this->datagrid_log = new BootstrapDatagridWrapper(new TDataGrid);       
  159.         $this->datagrid_log->style 'min-width: 1210px'
  160.         
  161.          // creates the datagrid columns
  162.         $log_id = new TDataGridColumn('log_id''ID''left');
  163.         $log_ativo = new TDataGridColumn('log_ativo''Ativo''left');
  164.         $log_online = new TDataGridColumn('log_online''On-line''left');
  165.         $log_conexao = new TDataGridColumn('log_conexao''Tecnologia''left');
  166.         $log_contrato = new TDataGridColumn('log_contrato''Contrato''left',220);
  167.         $log_status_contrato = new TDataGridColumn('log_status_contrato''Status Contrato''left');
  168.         $log_status_acesso = new TDataGridColumn('log_status_acesso''Status Acesso''left');
  169.         $log_plano = new TDataGridColumn('log_plano''Plano Cliente''left');
  170.         $log_mac = new TDataGridColumn('log_mac''MAC''left',130);
  171.         $log_ipv4 = new TDataGridColumn('log_ipv4''IPV4''left');
  172.         $log_ipv6 = new TDataGridColumn('log_ipv6''IPV6''left');        
  173.         
  174.         $log_status_contrato->setTransformer( [ 'Utils''format_status' ] );
  175.         $log_status_acesso->setTransformer( [ 'Utils''format_status_acesso' ] );
  176.         $log_online->setTransformer( [ 'Utils''format_online' ] );
  177.         
  178.         $this->datagrid_log->addColumn($log_id);
  179.         $this->datagrid_log->addColumn($log_ativo);
  180.         $this->datagrid_log->addColumn($log_online);
  181.         $this->datagrid_log->addColumn($log_conexao);
  182.         $this->datagrid_log->addColumn($log_contrato);
  183.         $this->datagrid_log->addColumn($log_status_contrato);
  184.         $this->datagrid_log->addColumn($log_status_acesso);
  185.         $this->datagrid_log->addColumn($log_plano);
  186.         $this->datagrid_log->addColumn($log_mac);
  187.         $this->datagrid_log->addColumn($log_ipv4);
  188.         $this->datagrid_log->addColumn($log_ipv6);
  189.         
  190.         $action2 = new TDataGridAction(['Contrato_LoginForm''onEdit'], ['id'=>'{id}''register_state' => 'false']);
  191.         
  192.         $this->datagrid_log->addAction($action2'View',   'fa:search gray');
  193.         
  194.         // create the datagrid model
  195.         $this->datagrid_log->createModel();  
  196. // Aba Login - FIM --------------------------------------------------------------------------------------       
  197.         
  198. // Aba Anexo - INÍCIO --------------------------------------------------------------------------------------------
  199.         $this->datagrid_ane = new BootstrapDatagridWrapper(new TDataGrid);
  200.        
  201.         $this->datagrid_ane->style 'min-width: 1210px'
  202.          
  203.          // creates the datagrid columns
  204.         $ane_id           = new TDataGridColumn('ane_id''ID''left');
  205.         $ane_tipo         = new TDataGridColumn('ane_tipo''Tipo''left');
  206.         $ane_id_cliente   = new TDataGridColumn('ane_id_cliente''ID_Cliente''left');     
  207.         
  208.         $this->datagrid_ane->addColumn($ane_id);        
  209.         $this->datagrid_ane->addColumn($ane_tipo);
  210.         $ane_id->setVisibility(false); 
  211.         $ane_id_cliente->setVisibility(false);
  212.         
  213.         $action1 = new TDataGridAction(['ArquivoClienteForm''onEdit'] , ['id_tipo '=>'{ane_id}''register_state' => 'false''id_cliente'=>'{ane_id_cliente}''register_state' => 'false']);
  214.         $this->datagrid_ane->addAction($action1_t('Edit'), 'far:edit blue'); 
  215.         $action2 = new TDataGridAction([$this'onNewWindow2'], ['id'=>'{ane_id_cliente}''register_state' => 'false''id_tipo'=>'{ane_id}''register_state' => 'false']);
  216.         $this->datagrid_ane->addAction($action2'View',   'fa:search gray');
  217.         
  218.       
  219.         // create the datagrid model
  220.         $this->datagrid_ane->createModel();
  221. // Aba Anexo - FIM -----------------------------------------------------------------------------------------------
  222.       
  223.         //$bairro = new TEntry('bairro');
  224.         $tipo->addItems( ['F' => 'Física''J' => 'Jurídica' ] );
  225.         $status_prospeccao->addItems( ['C' => 'Novo'
  226.                                        'S' => 'Sondagem',
  227.                                        'A' => 'Apresentando',
  228.                                        'N' => 'Negociando',
  229.                                        'V' => 'Vencemos',
  230.                                        'P' => 'Perdemos',
  231.                                        'AB' => 'Abortamos',
  232.                                        'SV' => 'Sem viabilidade',
  233.                                        'SP' => 'Sem porta disponível'] ); 
  234.       
  235.        
  236.         $tipo->setChangeAction( new TAction( array($this'onChangeRadio')) );
  237.         self::onChangeRadio( array('tipo_pessoa'=>'F') ); 
  238.         
  239.         $cnpj_cpf->setExitAction( new TAction([ $this'onExitCPFCNPJ']) );       
  240.         $cnpj_cpf_2->setExitAction( new TAction([ $this'onExitCPFCNPJ']) ); 
  241.         $cep->setExitAction( new TAction([ $this'onExitCEP']) ); 
  242.   
  243.         $condominio->setChangeAction( new TAction([ $this'onExitCondominio']) ); 
  244.         $uf->setChangeAction( new TAction([ $this'onChangeEstado']) ); 
  245. // Seta Valores Padrões nos campos - INÍCIO ----------------------------------------------------------------------
  246.         $contribuinte_icms->setValue('N'); 
  247.         $tipo->setValue('F');
  248.         $status_prospeccao->setValue('V'); 
  249.         $data_cadastro->setValue(date('d-m-Y'));
  250.         $data_cadastro_2->setValue(date('d-m-Y'));
  251.         $contribuinte_icms->setValue('N');  
  252.         
  253. // Seta Valores Padrões nos campos - INÍCIO ----------------------------------------------------------------------  
  254.         
  255. // Remove defaultoption - INÍCIO ---------------------------------------------------------------------
  256.         
  257.         $tipo->setDefaultOption(false);  
  258.         $uf->setDefaultOption(false);  
  259.         $cidade->setDefaultOption(false);        
  260.         $status_prospeccao->setDefaultOption(false);
  261.         $indicado_atraves->setDefaultOption(false);
  262.         $concorrente->setDefaultOption(false);
  263.         $vendedor_padrao->setDefaultOption(false);       
  264. // Remove defaultoption - FIM ------------------------------------------------------------------------        
  265.                
  266.        // $uf->setValue(17);
  267.         
  268.         $complemento->setMask('AAAAAAAAAA');
  269. // Habilita pesquisa no combo - INÍCIO -----------------------------------------------------------------        
  270.        
  271.         $condominio->enableSearch();
  272.         $cidade->enableSearch();
  273.         $uf->enableSearch();
  274.         
  275. // Habilita pesquisa no combo - FIM --------------------------------------------------------------------
  276.         
  277. // Opções de Radio Group - INÍCIO ----------------------------------------------------------------------------------        
  278.        
  279.         $contribuinte_icms->setLayout('horizontal');
  280.         $ativo->setLayout('horizontal');
  281.         $sexo->setLayout('horizontal');        
  282.         $grau_satisfacao->setLayout('horizontal');
  283.         $prospeccao->setLayout('horizontal');
  284.         $enviar_lembrete->setLayout('horizontal');
  285.         $enviar_email->setLayout('horizontal');
  286.         $enviar_sms->setLayout('horizontal');
  287.         
  288.         $items = ['S'=>'Sim''N'=>'Não'];
  289.         $contribuinte_icms->addItems($items);
  290.         $ativo->addItems($items); 
  291.         $prospeccao->addItems($items); 
  292.         $enviar_lembrete->addItems($items); 
  293.         $enviar_email->addItems($items); 
  294.         $enviar_sms->addItems($items); 
  295.         
  296.         $items = ['M'=>'Masculino''F'=>'Feminino'];
  297.         $sexo->addItems($items);      
  298.         
  299.         $items = ['1'=>'Nada Satisfeito''2'=>'Pouco Satisfeito''3'=>'Satisfeito''4'=>'Muito Satisfeito''5'=>'Completamente Satisfeito'];
  300.         $grau_satisfacao->addItems($items);
  301.      
  302.         if($ativo->getValue() == null)
  303.         {
  304.             $ativo->setValue('S');
  305.         }
  306.         if($prospeccao->getValue() == null)
  307.         {
  308.             $prospeccao->setValue('S');
  309.         } 
  310.         if($enviar_lembrete->getValue() == null)
  311.         {
  312.             $enviar_lembrete->setValue('S');
  313.         } 
  314.         if($enviar_email->getValue() == null)
  315.         {
  316.             $enviar_email->setValue('S');
  317.         } 
  318.         if($enviar_sms->getValue() == null)
  319.         {
  320.             $enviar_sms->setValue('S');
  321.         }         
  322.         if($sexo->getValue() == null)
  323.         {
  324.             $sexo->setValue('M');
  325.         }        
  326.         if($grau_satisfacao->getValue() == null)
  327.         {
  328.             $grau_satisfacao->setValue('3');
  329.         }        
  330.         
  331.          
  332. // Opções de Radio Group - FIM -------------------------------------------------------------------------------------             
  333.         
  334. //Insere abas na página - INÍCIO ----------------------------------------------------------------------
  335.        
  336.         
  337.         $filter = new TCriteria;
  338.         $filter->add(new TFilter('id''<''0'));
  339.         $ativo->setSize('100%'60);
  340. //Insere abas na página - FIM -------------------------------------------------------------------------        
  341.         
  342. // Cria Botão Search - INÍCIO -------------------------------------------------------------------------------------
  343.          
  344.        $btn_pes TButton::create('Buscar', array($this,'ConsultaCNPJCPF'), 'Buscar''fa:search white');
  345.        $btn_pes->class 'btn btn-sm btn-primary';
  346.        
  347.        $btn_pes_2 TButton::create('Buscar_2', array($this,'ConsultaCNPJCPF'), 'Buscar''fa:search white');
  348.        $btn_pes_2->class 'btn btn-sm btn-primary';
  349.        
  350.        TButton::disableField('form_Cliente''Buscar'); 
  351.        TButton::disableField('form_Cliente''Buscar_2'); 
  352. //Cria Botão Search - FIM -----------------------------------------------------------------------------------------
  353.         
  354. // adiciona campos no formulário Cliente - INÍCIO ----------------------------------------------------------------- 
  355.        
  356.         
  357.         $this->form->appendPage('Cliente');
  358.         $this->form->setTabAction(new TAction(array($this'onCurrentPage')));       
  359.         
  360.         $this->form->addFields( [ new TLabel('Id') ], [ $id ], [$cnpj_cpf_tmp] );
  361.         $this->form->addFields( [ $lab_tip = new TLabel('Tipo') ], [ $tipo ] );
  362.         $this->form->addFields( [ $lab_CPF =new TLabel('CPF') ], [ $cnpj_cpf ], [$btn_pes] );
  363.         $this->form->addFields( [ $lab_CNP =new TLabel('CNPJ') ], [ $cnpj_cpf_2], [$btn_pes_2] );
  364.         $this->form->addFields( [ $lab_raz = new TLabel('Nome') ], [ $razao ] );
  365.         $this->form->addFields( [ $lab_ras = new TLabel('Razão Social') ], [ $razao_2 ] );
  366.         $this->form->addFields( [ $lab_nfa = new TLabel('Nome Fantasia') ], [ $nome_fantasia ] );  
  367.         $this->form->addFields( [ $lab_RG  = new TLabel('RG') ], [ $ie_identidade ] );
  368.         $this->form->addFields( [ new TLabel('Inscrição Estadual') ], [ $ie_identidade_2 ], [ new TLabel('Inscrição Municipal') ], [ $inscricao_municipal ] );
  369.         $this->form->addFields( [ $lab_ati = new TLabel('Ativo') ], [ $ativo ], [ $lab_sex = new TLabel('Sexo') ], [ $sexo ]  );   
  370.         $this->form->addFields([ $lab_dan = new TLabel('Data Nascimento') ], [ $data_nascimento ], [ new TLabel('Data Cadastro') ], [ $data_cadastro ]  ); 
  371.         $this->form->addFields([ $lab_daa = new TLabel('Data Abertura') ], [ $data_nascimento_2 ],[ new TLabel('Data Cadastro') ], [ $data_cadastro_2 ] );
  372. // Grau de Sasitfação - RadioGroup - INÍCIO ------------------------------------------------------------------------
  373.         $grau_satisfacao  = new TRadioGroup('grau_satisfacao');
  374.         $grau_satisfacao->setLayout('horizontal');
  375.         $grau_satisfacao->setSize('100%');
  376.         $items = ['1'=>'Nada Satisfeito''2'=>'Pouco Satisfeito''3'=>'Satisfeito''4'=>'Muito Satisfeito''5'=>'Completamente Satisfeito'];
  377.         $grau_satisfacao->addItems($items);                
  378.         $this->form->addFields(  [ $lab_gsa = new TLabel('Grau Satisfação') ], [ $grau_satisfacao ]); 
  379.         TQuickForm::hideField('form_Cliente''grau_satisfacao'); 
  380. // seta cor para campo obrigatório                
  381.         $lab_gsa->setFontColor($corlabobr);
  382.                 
  383. // Grau de Sasitfação - RadioGroup - FIM ---------------------------------------------------------------------------
  384. // adiciona campos no formulário Cliente - FIM --------------------------------------------------------------------- 
  385. // adiciona campos no formulário Endereço - INÍCIO ----------------------------------------------------------------- 
  386.         $this->form->appendPage('Endereço');
  387.         
  388.         $this->form->addFields( [ new TLabel('Condomínio') ], [ $condominio ],[ $lab_cep = new TLabel('CEP') ], [ $cep ] );        
  389.         $this->form->addFields( [ new TLabel('UF') ], [ $uf ], [ $lab_cid = new TLabel('Cidade') ], [ $cidade ] );
  390.         $this->form->addFields( [ $lab_bai = new TLabel('Bairro') ], [ $bairro ] );  
  391.         $this->form->addFields( [ $lab_end = new TLabel('Logradouro') ], [ $endereco ]  );
  392.         $this->form->addFields( [ $lab_num = new TLabel('Número') ], [ $numero ], [ new TLabel('Complemento') ], [ $complemento ] );
  393. // adiciona campos no formulário Endereço - FIM --------------------------------------------------------------------
  394. // adiciona campos no formulário Contato - INÍCIO ------------------------------------------------------------------ 
  395.         $this->form->appendPage('Contato');         
  396.         $this->form->addFields( [ new TLabel('Tel. Residencial') ], [ $telefone_residencial ], [ new TLabel('Contato') ], [ $contato ]);
  397.         $this->form->addFields( [ new TLabel('Tel. Comercial') ], [ $telefone_comercial ], [ new TLabel('Contato') ], [ $contato_2 ]);
  398.         $this->form->addFields( [ new TLabel('Tel. Celular') ], [ $telefone_celular ], [ new TLabel('Tel. Celular 2') ], [ $telefone_celular2 ] );
  399.         $this->form->addFields( [ new TLabel('Email') ], [ $email_mul ] );          
  400.        
  401. // Campos Hotsite - RadioGroup - INÍCIO ----------------------------------------------------------------------------                
  402.                
  403.         $this->separator_hotsite = new TFormSeparator('HotSite');  
  404.         $this->form->addContent( [$this->separator_hotsite]); 
  405.         $this->form->addFields( [ new TLabel('Email') ], [ $hotsite_email ], [ new TLabel('Senha') ], [ $senha ]  );
  406.        
  407. // Campos Hotsite - RadioGroup - FIM -------------------------------------------------------------------------------
  408. // adiciona campos no formulário Contato - FIM ---------------------------------------------------------------------
  409.        
  410. // adiciona campos no formulário CRM - INÍCIO ---------------------------------------------------------------------- 
  411.         $this->form->appendPage('CRM');
  412.         
  413.         $this->form->addFields( [ new TLabel('Prospecção') ], [ $prospeccao ], [ new TLabel('Enviar Lembrete') ], [ $enviar_lembrete ]);
  414.         $this->form->addFields( [ new TLabel('Envia Emails') ], [ $enviar_email ], [ new TLabel('Envia SMS') ], [ $enviar_sms ]);
  415.         $this->form->addFields( [ $lab_ind = new TLabel('Indicado Através') ], [ $indicado_atraves ], [ $lab_con = new TLabel('Concorrente') ], [ $concorrente ] );        
  416.         $this->form->addFields( [ new TLabel('Responsável') ], [ $responsavel ], [ new TLabel('Status') ], [ $status_prospeccao ] );
  417.  
  418. // adiciona campos no formulário CRM - FIM -------------------------------------------------------------------------       
  419. // adiciona campos no formulário Vendedor - INÍCIO ----------------------------------------------------------------- 
  420.         $this->form->appendPage('Vendedor');
  421.         $this->form->addFields( [ $lab_ven = new TLabel('Vendedor Padrão') ], [ $vendedor_padrao ]);
  422.         
  423.  
  424. // adiciona campos no formulário Vendedor - FIM --------------------------------------------------------------------
  425. // PageNavigation - Contrato - INÍCIO ----------------------------------------------------------------------------
  426.         // creates the page navigation
  427.         $this->PN_Contrato = new TPageNavigation;
  428.               
  429.         $this->PN_Contrato->setAction(new TAction([$this'onReload']));
  430.         $this->form->appendPage('Contrato');
  431.         $this->form->addContent([$this->datagrid_con]);
  432.         $this->form->addContent([$this->PN_Contrato]);
  433. // PageNavigation - Contrato - FIM ------------------------------------------------------------------------------
  434. // PageNavigation - Login - INÍCIO ------------------------------------------------------------------------------
  435.         // creates the page navigation
  436.         $this->PN_Login = new TPageNavigation;
  437.               
  438.         $this->PN_Login->setAction(new TAction([$this'onReload']));
  439.        
  440.         $panel_log = new TPanelGroup((''));
  441.        
  442.         $panel_log->getBody()->style "overflow-x:auto;";
  443.         $panel_log ->add($this->datagrid_log);
  444.        
  445.        
  446.         $this->form->appendPage('Login');
  447.         $this->form->addContent([$panel_log]);
  448.         $this->form->addContent([$this->PN_Login]);
  449. // PageNavigation - Login - FIM ------------------------------------------------------------------------------
  450. // PageNavigation - Anexo - INÍCIO ---------------------------------------------------------------------------
  451.         // creates the page navigation
  452.         $this->PN_Anexo = new TPageNavigation;
  453.               
  454.         $this->PN_Anexo->setAction(new TAction([$this'onReload']));
  455.        
  456.         $panel_ane = new TPanelGroup((''));
  457.        
  458.         $panel_ane->getBody()->style "overflow-x:auto;";
  459.         $panel_ane->add($this->datagrid_ane);       
  460.        
  461.         $this->form->appendPage('Anexo');
  462.         $this->form->addContent([$panel_ane]);
  463.         $this->form->addContent([$this->PN_Anexo]);
  464. // PageNavigation - Anexo - FIM ------------------------------------------------------------------------------
  465. // Seta tamanhos dos campos - INICIO ------------------------------------------------------------------       
  466.        
  467.         // set sizes
  468.         $id->setSize('100%');
  469.         $razao->setSize('100%');
  470.         $nome_fantasia->setSize('100%');
  471.         $tipo->setSize('38%');
  472.         $cnpj_cpf->setSize('100%');
  473.         $cnpj_cpf_2->setSize('100%');
  474.         $ie_identidade->setSize('38%');
  475.         $ie_identidade_2->setSize('100%');
  476.         $inscricao_municipal->setSize('100%');       
  477.         $data_nascimento->setSize('100%');
  478.         $data_nascimento_2->setSize('100%');
  479.         $ativo->setSize('100%');
  480.         $filial_id->setSize('100%');
  481.         $sexo->setSize('100%');       
  482.         $grau_satisfacao->setSize('100%');
  483.         $complemento->setSize('100%');
  484.         $data_cadastro->setSize('100%');
  485.         $data_cadastro_2->setSize('100%');
  486.         
  487.         $condominio->setSize('100%');
  488.         $cep->setSize('100%');
  489.         $endereco->setSize('100%');
  490.         $numero->setSize('100%');
  491.         $complemento->setSize('100%');
  492.         $uf->setSize('100%');
  493.         $cidade->setSize('100%');
  494.         $bairro->setSize('100%');        
  495.         
  496.         $vendedor_padrao->setSize('50%');
  497.         
  498. // Seta tamanhos dos campos - FIM ---------------------------------------------------------------------
  499. // Seta máscaras nos campos - INÍCIO ------------------------------------------------------------------
  500.         
  501.         $cep->setMask('99999-999');
  502.         $data_nascimento->setMask('dd/mm/yyyy');
  503.         $data_nascimento->setDatabaseMask('yyyy-mm-dd');
  504.         $data_nascimento_2->setMask('dd/mm/yyyy');
  505.         $data_nascimento_2->setDatabaseMask('yyyy-mm-dd');
  506.         $data_cadastro->setMask('dd/mm/yyyy');
  507.         $data_cadastro->setDatabaseMask('yyyy-mm-dd');
  508.         $data_cadastro_2->setMask('dd/mm/yyyy');
  509.         $data_cadastro_2->setDatabaseMask('yyyy-mm-dd');
  510.         
  511.         $telefone_residencial->setMask('(99) 9999-9999');
  512.         $telefone_comercial->setMask('(99) 9999-9999');
  513.         $telefone_celular->setMask('(99) 9999-9999');
  514.         $telefone_celular2->setMask('(99) 9999-9999');
  515.         
  516.         $cnpj_cpf->setMask('999.999.999-99');
  517.         $cnpj_cpf_2->setMask('99.999.999/9999-99');
  518.         
  519.         $ie_identidade->setMask('99.999.999-9');
  520.         $ie_identidade_2->setMask('999.999.999/9999-SS');
  521.  
  522. // Seta máscaras nos campos - FIM ---------------------------------------------------------------------       
  523.         
  524. // Seta campos editable False - INÍCIO ----------------------------------------------------------------
  525.         
  526.         $id->setEditable(FALSE);
  527.         $data_cadastro->setEditable(FALSE);
  528.         $data_cadastro_2->setEditable(FALSE);
  529.         
  530.         $hotsite_email->setEditable(FALSE);
  531.         $senha->setEditable(FALSE);
  532.         
  533. // Seta campos editable False - FIM -------------------------------------------------------------------        
  534. // Seta campos como obrigatórios - INÍCIO -------------------------------------------------------------
  535.        
  536.         $lab_raz->setFontColor($corlabobr);        
  537.         $lab_tip->setFontColor($corlabobr);
  538.         $lab_CPF->setFontColor($corlabobr);
  539.         $lab_CNP->setFontColor($corlabobr);
  540.         $lab_dan->setFontColor($corlabobr);
  541.         $lab_sex->setFontColor($corlabobr);
  542.         $lab_ati->setFontColor($corlabobr);
  543.         $lab_ind->setFontColor($corlabobr);
  544.         $lab_con->setFontColor($corlabobr);
  545.         $lab_ven->setFontColor($corlabobr);
  546.         $lab_ras->setFontColor($corlabobr);
  547.         $lab_RG->setFontColor($corlabobr);
  548.         $lab_daa->setFontColor($corlabobr);
  549.         $lab_cep->setFontColor($corlabobr);
  550.         $lab_end->setFontColor($corlabobr);
  551.         $lab_num->setFontColor($corlabobr);
  552.         $lab_bai->setFontColor($corlabobr);
  553.         $lab_cid->setFontColor($corlabobr);
  554.         
  555. // Seta campos como obrigatórios - FIM -----------------------------------------------------------------       
  556.  
  557.         $act_btn $this->onStartNew();
  558.        
  559.         $btn_new = new TButton('Novo');
  560.         $btn_new->setLabel('Novo');
  561.         $btn_new->setImage('far:plus green');      
  562.         $btn_new->setAction($act_btn'Novo');       
  563.        echo '<br>create---------';
  564.        
  565.         $btn_sav $this->form->addAction('Salvar', new TAction([$this'onSave']), 'fa:save');
  566.         $btn_sav->class 'btn btn-sm btn-primary';
  567.           
  568. // Adiciona elementos no Form - INÍCIO ---------------------------------------------------------------------------
  569.      
  570.         $this->form->setFields([$id$razao$razao_2$nome_fantasia$tipo$cnpj_cpf$cnpj_cpf_2$cnpj_cpf_tmp,  
  571.                                 $ie_identidade$ie_identidade_2$inscricao_municipal$inscricao_municipal_2
  572.                                 $contribuinte_icms$data_nascimento$data_nascimento_2$ativo$filial_id
  573.                                 $complemento$data_cadastro$data_cadastro_2$sexo$grau_satisfacao,
  574.                                 
  575.                                 $condominio$cep$endereco$numero$uf$cidade$bairro,
  576.                                 $telefone_residencial$telefone_comercial$telefone_celular$telefone_celular2,
  577.                                 $contato$contato_2$hotsite_email$senha$email$email_mul,
  578.                                 
  579.                                 $prospeccao$indicado_atraves$concorrente$responsavel$enviar_lembrete,  
  580.                                 $enviar_email$enviar_sms,$status_prospeccao,      
  581.                                 
  582.                                 $vendedor_padrao$btn_new,                     
  583.                                 
  584.                                 ]);                               
  585.                            
  586. // Adiciona elemoentos no Form - FIM -----------------------------------------------------------------------------  
  587.           
  588.         $panel = new TPanelGroup('Clientes''white'); 
  589.                
  590.         $panel->addHeaderActionLink(_t('Close'), new TAction([$this'onClose']), 'fa:times red');     
  591.        
  592.         
  593.         $this->form->add($btn_new);
  594.         $panel->add($this->form);
  595.         $panel->getBody()->style "overflow-x:auto;"
  596.         
  597.         // vertical box container
  598.         $container = new TVBox;
  599.         $container->style 'width: 100%';
  600.        
  601.         $container->add($panel);       
  602.         parent::add($container);         
  603.     }
  604.     public  function onCurrentPage($param)
  605.     {  
  606.         echo '<br>param: ' $param['current_page'];
  607.         
  608.         if($param['current_page'] <= '4' or !isset($param['current_page']))
  609.         {
  610.             TSession::setValue('CurrentPage''0');
  611.         }
  612.         elseif($param['current_page'] == '5')
  613.         {
  614.             TSession::setValue('CurrentPage''5'); 
  615.         }
  616.         elseif($param['current_page'] == '6')
  617.         {
  618.             TSession::setValue('CurrentPage''6'); 
  619.         }
  620.         elseif($param['current_page'] == '7')
  621.         {
  622.             TSession::setValue('CurrentPage''7'); 
  623.         } 
  624.         
  625.          
  626.     }
  627. ?>
NR

Se entendi corretamente, na função onStartNew você precisa verificar a aba selecionada e chamar a ação correspondente usando a função loadPage:
  1. <?php
  2. if ($aba == 1) {
  3.       TApplication::loadPage('Classe1Form','onClear',$params);
  4. } elseif ($aba == 2) {
  5.       TApplication::loadPage('Classe2Form','onClear',$params);
  6. } ...
  7. ?>
WS

Funciona assim: o botão chamado "Novo" é único. Ele serve para chamar um novo formulário que dependerá de qual aba está selecionada. Teoricamente, eu preciso mudar o botão ao trocar de aba...

Tenho 8 abas. As abas de 0 a 4 abriram uma nova tela de clientes, a aba 5 de contrato, a 6 de login e a 7 de anexos....

Consegui colocar uma ação na aba e pegar a current_page conforme o usuário interage.

Nessa hora é que preciso alterar a classe e o método que o botão novo irá chamar...

Até tentei fazer
  1. <?php
  2. $btn $this->form->getField('nome do botao');
  3.  $btn->setAction(new TAction(...));
  4. ?>

mas não funcionou...
WS

Nataniel, entendi o que você explicou...
Fiz e funcionnou em partes. Ele chama a tela que eu coloquei no loadPage, mas antes ele abre o formulário em branco da aba de Clientes... Ele carrega essa aba em branco e depois chama a aba do loadPage.

Se eu chamar uma nova aba de Clientes, ele chega a carregá-la 2 vezes...


NR

Acho que você vai precisar trabalhar com o conceito de "target_container", que permite recarregar partes específicas da tela, mantendo o restante. Veja:
https://adianti.com.br/framework_files/tutor/index.php?class=InboxView