menu
Fórum Adianti
menu Menu
TBootstrapFormBuilder - Add TDropDown Boas, A algum tempo precisei adicionar num projeto um botão TDropDown, e notei que o mesmo não existia na barra Footer do formulário, resolvi então acrescentar e agora estou repartindo com os senhores. Neste caso foi apenas acrescentado na classe BootstrapFormBuilder. Obs: nesta classe em especifico existe também uma alteração onde Add na linha (71), uma nova Grade ...
MC
TBootstrapFormBuilder - Add TDropDown  
Boas,

A algum tempo precisei adicionar num projeto um botão TDropDown, e notei que o mesmo não existia na barra Footer do formulário,
resolvi então acrescentar e agora estou repartindo com os senhores.

Neste caso foi apenas acrescentado na classe BootstrapFormBuilder.

Obs: nesta classe em especifico existe também uma alteração onde Add na linha (71), uma nova Grade

  1. <?php
  2.         $this->column_classes[5] = ['col-sm-2''col-sm-3','col-sm-2''col-sm-3''col-sm-2']; // by MarcoARCampos
  3. ?>



Entre as linhas 390 e 399 onde foi acrescentado o TDropDown, somente isso.

  1. <?php
  2. //---- BY MarcoARCampos --------------------------------------------------------    
  3.     
  4.     public function addDropDown$DropDown )
  5.     {
  6.         $this->actions[] = $DropDown;
  7.         return $DropDown;
  8.     }
  9.         
  10. //------------------------------------------------------------------------------    
  11. ?>



Uso, muito simples:

  1. <?php
  2.         // DropDown
  3.         $drop_act = new TDropDown(_t('Print'), 'bs:print brown');
  4.         $drop_act->addAction'Gera Arquivo CSV', new TAction( array( $this'onExportCSV' )), 'fa:file-excel-o fa-lg green' );
  5.         $drop_act->addSeparator();
  6.         $drop_act->addAction'Gera Arquivo PDF', new TAction( array( $this'onRelatorio' )), 'fa:list-alt fa-lg red' );
  7.         
  8.         
  9.         // add the search form actions
  10.         $this->form->addAction_t('Find'),  new TAction( array( $this'onSearch' )), 'fa:search' );
  11.         $this->form->addAction_t('New'),   new TAction( array( 'Form_Abc''onReload' )), 'bs:plus-sign green' );
  12.         $this->form->addAction_t('Clear'), new TAction( array( $this'onClear' )), 'bs:retweet blue' );      
  13.         $this->form->addDropDown$drop_act );                 
  14. ?>


Como aqui não permite uma imagem vou criar um post para demonstrar a imagem:


Espero ter contribuido

Abraços;

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


MG

Funcionou perfeitamente.
Obrigado por compartilhar.
HE

Boa noite!

Seguindo e exemplo apresentado, o TDropDown foi criado com sucesso.

Porém o TAction ligado diretamente ao form busca informações através do getData.

  1. <?php 
  2. $this->form->addAction_t('Clear'), new TAction( array( $this'onSearch' )), 'bs:retweet blue' );
  3. ?>


Diferente do TAction vinculado ao DropDown que retorna o getData vazio.

  1. <?php 
  2.  $drop_act->addAction'Gera Arquivo PDF', new TAction( array( $this'onSearch' )), 'fa:list-alt fa-lg red' );
  3. ?>


Como faço para utilizar o getData dentro de um chamada para buscar as informações do formulário através de um botão vinculado ao DropDown .

Desde já obrigado.
HL

Boa tarde!

Marcelo como você soluciono a passagem de parâmetros para os botões do DropDown?
MG

Hellton, não entendi sua dúvida!
HE

Marcelo, quando clico sobre o botão do DropDown quero buscar algumas valores do formulário ou pegar o id ou key passada, para poder realizar a emissão de relatórios e processo daquele determinado registro.

Um exemplo é que ao clicar no botão que foi adicionado no formulário eu posso buscar o $param['id'] ou $object->id

MG

Existe um método no TButton chamado setProperty

$btn->setProperty('id',$id);
MG

Ops,
Não é isso, eu confundi. Desculpe.
Você pode passar um parametro no TAction que são os parametros, por exemp.o:

  1. <?php
  2. $dropdown = new TDropDown('Export''fa:list');
  3. $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  4. $dropdown->addAction'Save as CSV', new TAction([$this'onExportCSV'],
  5. ['register_state' => 'false''static'=>'1',<b>'id' => $id]</b>), 'fa:table blue' );
  6. public static function onExportCSV($param)
  7. {
  8.     $id $oaram['id'];
  9.      .....
  10. }
  11. ?>
HL

Marcelo segui o modelo, mas não consegui obter exito, o valor retorna vazio da mesma forma, tem como dar uma olhada.

Segue o código abaixo.


  1. <?php
  2. /**
  3.  * SystemAlvaraAlvaraView
  4.  *
  5.  * @version    2.0
  6.  * @package    control
  7.  * @subpackage alvara
  8.  * @author     Hellton Lacerda
  9.  */
  10. class SystemAlvaraAlvaraView extends TPage
  11. {
  12.     private $form;
  13.     private $datagridExercicio;
  14.     private $datagridLog;
  15.     private $teste;
  16.    
  17.     public function __construct()
  18.     {
  19.         if(in_array(5TSession::getValue('usermoduloids'))){
  20.             
  21.             TTransaction::open('permission');
  22.             $SystemGlobalModulo = new SystemGlobalModulo(5);
  23.             TTransaction::close();
  24.             // Verifica se o módulo foi adquirido pelo cliente
  25.             if($SystemGlobalModulo->situacao == 0){
  26.                 new TMessage('error''Esse módulo não foi adquirido!');
  27.                 AdiantiCoreApplication::loadPage('SystemError');
  28.             }
  29.         }else{
  30.             new TMessage('error''Você não possui permissão de acessar esse módulo!');
  31.             AdiantiCoreApplication::loadPage('SystemError');
  32.         }
  33.         // Verifica se alterar senha está ativo
  34.         if(TSession::getValue('userchangepassword') == 'Y'){
  35.             AdiantiCoreApplication::loadPage('SystemAlterarSenha');
  36.         }
  37.         
  38.         parent::__construct();
  39.         
  40.         $this->form = new BootstrapFormBuilder('form_SystemAlvaraAlvaraView');
  41.         $this->form->setFormTitle('Alvará');
  42.         $this->form->setFieldSizes('100%');
  43.         
  44.         $id                             = new THidden('id');
  45.         $system_unit_id                 = new THidden('system_unit_id');
  46.         $system_alvara_tipo_id          = new THidden('system_alvara_tipo_id');
  47.         $system_alvara_contribuinte_id  = new THidden('system_alvara_contribuinte_id');
  48.         $system_alvara_veiculo_id       = new THidden('system_alvara_veiculo_id');
  49.         $system_alvara_categoria_id     = new THidden('system_alvara_categoria_id');
  50.         $system_alvara_ponto_veiculo_id = new THidden('system_alvara_ponto_veiculo_id');
  51.         $situacao_anterior              = new THidden('situacao_anterior');
  52.         $tipo_pessoa                    = new THidden('tipo_pessoa');
  53.         $numero_registro                = new TEntry('numero_registro');
  54.         $contribuinte                   = new TEntry('contribuinte');
  55.         $cpf_cnpj                       = new TEntry('cpf_cnpj');
  56.         $tipo                           = new TEntry('tipo');
  57.         $unidade                        = new TEntry('unidade');
  58.         $exercicio                      = new TEntry('exercicio');
  59.         $veiculo                        = new TEntry('veiculo');
  60.         $categoria                      = new TEntry('categoria');
  61.         $ponto                          = new TEntry('ponto');
  62.         $dtabertura                     = new TEntry('dtabertura');
  63.         $dtvencimento                   = new TEntry('dtvencimento');
  64.         $dtencerramento                 = new TEntry('dtencerramento');
  65.         
  66.         $system_alvara_situacao_id      = new TDBCombo('system_alvara_situacao_id''permission''SystemAlvaraSituacao''id''nome''nome asc');
  67.         
  68.         $Criteria = new TCriteria();
  69.         $Criteria->add(new TFilter('id''<>''1'));
  70.         $system_alvara_justificativa_alteracao_id      = new TDBCombo('system_alvara_justificativa_alteracao_id''permission''SystemAlvaraJustificativa''id''nome''nome asc'$Criteria);
  71.         
  72.         $numero_registro->setEditable(false);
  73.         $cpf_cnpj->setEditable(false);
  74.         $contribuinte->setEditable(false);
  75.         $unidade->setEditable(false);
  76.         $tipo->setEditable(false);
  77.         $exercicio->setEditable(false);
  78.         $veiculo->setEditable(false);
  79.         $categoria->setEditable(false);
  80.         $ponto->setEditable(false);
  81.         $dtabertura->setEditable(false);
  82.         $dtvencimento->setEditable(false);
  83.         $dtabertura->setMask('99/99/9999'false);
  84.         $dtvencimento->setMask('99/99/9999'false);
  85.         $dtencerramento->setMask('99/99/9999'false);
  86.         
  87.         $row $this->form->addFields(
  88.             [ $id ], 
  89.             [ $system_unit_id ],
  90.             [ $system_alvara_tipo_id ], 
  91.             [ $system_alvara_contribuinte_id ],
  92.             [ $system_alvara_veiculo_id ], 
  93.             [ $system_alvara_categoria_id ],
  94.             [ $system_alvara_ponto_veiculo_id ],
  95.             [ $situacao_anterior ],
  96.             [ $tipo_pessoa ]);
  97.         $row->layout = ['col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1''col-sm-1'];
  98.         $row $this->form->addFields
  99.             [ new TLabel('Registro'),     $numero_registro ]);
  100.         $row->layout = ['col-sm-4'];
  101.         $row $this->form->addFields
  102.             [ new TLabel('Unidade'),     $unidade ],
  103.             [ new TLabel('Tipo de Alvará'),     $tipo ]);
  104.         $row->layout = ['col-sm-6''col-sm-6'];
  105.         $row $this->form->addFields
  106.             [ new TLabel('CPF/CNPJ'),     $cpf_cnpj ], 
  107.             [ new TLabel('Contribuinte'),     $contribuinte ]);
  108.         $row->layout = ['col-sm-4''col-sm-8'];
  109.         $row $this->form->addFields
  110.             [ new TLabel('Objeto'),     $veiculo ],
  111.             [ new TLabel('Categoria'),     $categoria ],
  112.             [ new TLabel('Ponto'),     $ponto ]);
  113.         $row->layout = ['col-sm-4''col-sm-4''col-sm-4'];
  114.         $row $this->form->addFields
  115.             [ new TLabel('Data da Abertura'),     $dtabertura ],
  116.             [ new TLabel('Data do Vencimento'),     $dtvencimento ],
  117.             [ new TLabel('Data do Encerramento'),     $dtencerramento ]);
  118.         $row->layout = ['col-sm-4''col-sm-4''col-sm-4'];
  119.         $row $this->form->addFields
  120.             [ new TLabel('Justificativa de Alteração'),     $system_alvara_justificativa_alteracao_id ],
  121.             [ new TLabel('Situação do Alvará'),     $system_alvara_situacao_id ]);
  122.         $row->layout = ['col-sm-6''col-sm-6'];
  123.         $dropdown = new TDropDown('Export''fa:list');
  124.         $dropdown->setButtonClass('btn btn-default waves-effect dropdown-toggle');
  125.         $dropdown->addAction'Save as CSV', new TAction([$this'onExportCSV'],['register_state' => 'false''static'=>'1','id' => $id]), 'fa:table blue' );
  126.         $this->form->addDropDown$dropdown );  
  127.         
  128.         $btnAvancar $this->form->addAction('Salvar', new TAction(array($this'onAvancar')), 'bs:ok');
  129.         $btnAvancar->class 'btn btn-success btn-sm-12';
  130.         $btnIncluir $this->form->addHeaderAction('Atualizar', new TAction(array('SystemAlvaraAtualizarExercicioWindow''onLoad')), 'fa:repeat');
  131.         $btnIncluir->class 'btn btn-sm-light-gray btn-sm-12';
  132.         
  133.         $buttonVoltar $this->form->addHeaderAction('Voltar', new TAction(array('SystemAlvaraAlvaraList''onReload')), 'fa:chevron-left');
  134.         $buttonVoltar->class 'btn btn-sm-12';
  135.         $this->form->setDataTSession::getValue('SystemAlvaraAlvaraView_filter_data') );
  136.         $this->datagridExercicio = new BootstrapDatagridWrapper(new TDataGrid);
  137.         $this->datagridExercicio->datatable 'true';
  138.         $this->datagridExercicio->width '100%';
  139.         $this->datagridExercicio->setHeight(320);
  140.         $system_alvara_exercicio_id      = new TDataGridColumn('exercicio->periodo''Exercício''center'null);
  141.         $tipo                            = new TDataGridColumn('tipo''Tipo''center'null);
  142.         $dtinicial                       = new TDataGridColumn('dtinicial''Data de Abertura/Renovação''center'null);
  143.         $dtvencimento                    = new TDataGridColumn('dtvencimento''Data de Vencimento''center'null);
  144.         
  145.         $this->datagridExercicio->addColumn($system_alvara_exercicio_id);
  146.         $this->datagridExercicio->addColumn($tipo);
  147.         $this->datagridExercicio->addColumn($dtinicial);
  148.         $this->datagridExercicio->addColumn($dtvencimento);
  149.         $action1 = new TDataGridAction(array('SystemAlvaraAlvaraView''onDeleteExercicio'));
  150.         $action1->setLabel('Excluir');
  151.         $action1->setImage('fa:trash-o red fa-lg');
  152.         $action1->setField('id');
  153.         
  154.         
  155.         $this->datagridExercicio->addAction($action1);
  156.         
  157.         $this->datagridExercicio->createModel();
  158.         $this->datagridLog = new BootstrapDatagridWrapper(new TDataGrid);
  159.         $this->datagridLog->datatable 'true';
  160.         $this->datagridLog->width '100%';
  161.         $this->datagridLog->setHeight(320);
  162.         $situacao_id                                = new TDataGridColumn('situacaoes->nome''Situação''center'null);
  163.         $situacao_anterior_id                       = new TDataGridColumn('situacaoes_anterior->nome''Situação Anterior''center'null);
  164.         $system_alvara_justificativa_alteracao_id   = new TDataGridColumn('justificativas->nome''Justificativa''center'null);
  165.         $alterado_por                               = new TDataGridColumn('users->name''Alterado por''center'null);
  166.         $alterado_quando                            = new TDataGridColumn('alterado_quando''Alterado quando''center'null);
  167.         
  168.         $this->datagridLog->addColumn($situacao_id);
  169.         $this->datagridLog->addColumn($situacao_anterior_id);
  170.         $this->datagridLog->addColumn($system_alvara_justificativa_alteracao_id);
  171.         $this->datagridLog->addColumn($alterado_por);
  172.         $this->datagridLog->addColumn($alterado_quando);
  173.         $this->datagridLog->createModel();
  174.         $vbox = new TVBox;
  175.         $vbox->style 'width: 100%';
  176.         $vbox->add(new TXMLBreadCrumb('menu.xml','SystemAlvaraAlvaraList'));
  177.         $vbox->add($this->form);
  178.         $vbox->add(TPanelGroup::pack('Exercícios'$this->datagridExercicio));
  179.         $vbox->add(TPanelGroup::pack('Logs'$this->datagridLog));
  180.         parent::add($vbox);
  181.     }
  182.     public static function onExportCSV($param)
  183.     {
  184.         try{
  185.             $id $param['id'];
  186.             var_dump($id);
  187.             
  188.             
  189.         }catch (Exception $e) {
  190.             new TMessage('error'$e->getMessage());
  191.         }
  192.     }
  193.     public static function onAvancar($param)
  194.     {
  195.         try
  196.         {
  197.             $hoje = new DateTime();
  198.             $data $hoje->format('Y-m-d');
  199.             $datahora $hoje->format('Y-m-d H:i:s');
  200.             
  201.             if(empty($param['system_alvara_justificativa_alteracao_id'])){
  202.                 throw new Exception('O campo Justificativa de Alteração é obrigatório.'); 
  203.             }
  204.             
  205.             if(empty($param['system_alvara_situacao_id'])){
  206.                 throw new Exception('O campo Situação é obrigatório.'); 
  207.             }
  208.             if($param['system_alvara_situacao_id'] == $param['situacao_anterior']){
  209.                 throw new Exception('A situação atual não pode ser igual a situação anterior.'); 
  210.             }
  211.             if(!empty($param['dtencerramento'])){
  212.                 $param['dtencerramento'] = str_replace('/''-'$param['dtencerramento']);
  213.                 $date = new DateTime($param['dtencerramento']);
  214.                 $param['dtencerramento'] = $date->format('Y-m-d');
  215.                 $param['dtabertura'] = str_replace('/''-'$param['dtabertura']);
  216.                 $date = new DateTime($param['dtabertura']);
  217.                 $param['dtabertura'] = $date->format('Y-m-d');
  218.                 if($param['dtabertura'] > $param['dtencerramento']){
  219.                     throw new Exception('A Data de Abertura não pode ser maior que a Data de Encerramento.');
  220.                 }
  221.                 if($param['dtencerramento'] > $data){
  222.                     throw new Exception('A Data de Encerramento não pode ser maior que a Data de Atual.');
  223.                 }
  224.             }
  225.             TTransaction::open('permission');
  226.             $SystemAlvaraSituacao = new SystemAlvaraSituacao($param['system_alvara_situacao_id']);
  227.             
  228.             if($SystemAlvaraSituacao->situacaofinal == 'S' AND empty($param['dtencerramento'])){
  229.                 throw new Exception('O campo Data do Encerramento é obrigatório.');  
  230.             }
  231.             if($SystemAlvaraSituacao->situacaofinal == 'N' AND !empty($param['dtencerramento'])){
  232.                 throw new Exception('O campo Data do Encerramento não pode ser preenchido.'); 
  233.             }
  234.             $SystemAlvaraAlvara = new SystemAlvaraAlvara($param['id']);
  235.             $SystemAlvaraAlvara->system_alvara_situacao_id $param['system_alvara_situacao_id'];
  236.             if(!empty($param['dtencerramento'])){
  237.                 $SystemAlvaraAlvara->dtencerramento $param['dtencerramento'];
  238.             }else{
  239.                 $SystemAlvaraAlvara->dtencerramento NULL;   
  240.             }
  241.             $SystemAlvaraAlvara->modificado_por TSession::getValue('userid');
  242.             $SystemAlvaraAlvara->modificado_quando $datahora;
  243.             $SystemAlvaraAlvara->store();
  244.             $SystemAlvaraLogAlvara = new SystemAlvaraLogAlvara();
  245.             $SystemAlvaraLogAlvara->system_alvara_alvara_id $param['id'];
  246.             $SystemAlvaraLogAlvara->situacao_id $param['system_alvara_situacao_id'];
  247.             $SystemAlvaraLogAlvara->situacao_anterior_id $param['situacao_anterior'];
  248.             $SystemAlvaraLogAlvara->system_alvara_justificativa_alteracao_id $param['system_alvara_justificativa_alteracao_id'];
  249.             $SystemAlvaraLogAlvara->alterado_por TSession::getValue('userid');
  250.             $SystemAlvaraLogAlvara->alterado_quando $datahora;
  251.             $SystemAlvaraLogAlvara->criado_por TSession::getValue('userid');
  252.             $SystemAlvaraLogAlvara->modificado_por TSession::getValue('userid');
  253.             $SystemAlvaraLogAlvara->store();
  254.             TTransaction::close();
  255.         
  256.         }
  257.         catch (Exception $e
  258.         {
  259.             new TMessage('error''<b>Error</b> ' $e->getMessage()); 
  260.             TTransaction::rollback(); 
  261.         }
  262.     }
  263.     public function onView($param){
  264.         try{
  265.            if(isset($param['key'])){
  266.                 $key $param['key'];
  267.                 TTransaction::open('permission');
  268.                 $SystemAlvaraAlvaraExercicioView = new SystemAlvaraAlvaraExercicioView($key);
  269.                 if(in_array($SystemAlvaraAlvaraExercicioView->system_unit_idTSession::getValue('userunitids'))){
  270.                     $SystemAlvaraAlvaraExercicioView->cpf_cnpj $SystemAlvaraAlvaraExercicioView->contribuintes->cpf_cnpj;
  271.                     $SystemAlvaraAlvaraExercicioView->contribuinte $SystemAlvaraAlvaraExercicioView->contribuintes->nome;
  272.                     $SystemAlvaraAlvaraExercicioView->tipo_pessoa $SystemAlvaraAlvaraExercicioView->contribuintes->tipo;
  273.                     $SystemAlvaraAlvaraExercicioView->unidade $SystemAlvaraAlvaraExercicioView->unit->name;
  274.                     $SystemAlvaraAlvaraExercicioView->tipo $SystemAlvaraAlvaraExercicioView->tipo->nome;
  275.                     $SystemAlvaraAlvaraExercicioView->veiculo $SystemAlvaraAlvaraExercicioView->veiculos->marca .' - '$SystemAlvaraAlvaraExercicioView->veiculos->modelo .' - '$SystemAlvaraAlvaraExercicioView->veiculos->motorizacao.' - '$SystemAlvaraAlvaraExercicioView->veiculos->placa;
  276.                     $SystemAlvaraAlvaraExercicioView->categoria $SystemAlvaraAlvaraExercicioView->categorias->nome;
  277.                     $SystemAlvaraAlvaraExercicioView->ponto $SystemAlvaraAlvaraExercicioView->pontos->nome;
  278.                     $SystemAlvaraAlvaraExercicioView->situacao_anterior $SystemAlvaraAlvaraExercicioView->system_alvara_situacao_id;
  279.                     if(!empty($SystemAlvaraAlvaraExercicioView->dtabertura)){
  280.                         $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtabertura);
  281.                         $SystemAlvaraAlvaraExercicioView->dtabertura $data->format('d/m/Y');
  282.                     }
  283.                     if(!empty($SystemAlvaraAlvaraExercicioView->dtvencimento)){
  284.                         $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtvencimento);
  285.                         $SystemAlvaraAlvaraExercicioView->dtvencimento $data->format('d/m/Y');
  286.                     }
  287.                     if(!empty($SystemAlvaraAlvaraExercicioView->dtencerramento)){
  288.                         $data = new DateTime($SystemAlvaraAlvaraExercicioView->dtencerramento);
  289.                         $SystemAlvaraAlvaraExercicioView->dtencerramento $data->format('d/m/Y');
  290.                     }
  291.                     $script = new TElement('script'); 
  292.                     $script->type 'text/javascript'
  293.                     $javascript 
  294.                     var tipo_pessoa
  295.                     tipo_pessoa = document.form_SystemAlvaraAlvaraView.tipo_pessoa.value;
  296.                     if(tipo_pessoa == 'F'){
  297.                         $('input[name=\"cpf_cnpj\"]').mask(\"999.999.999-99\");
  298.                     }  
  299.                     if(tipo_pessoa == 'J'){
  300.                      $('input[name=\"cpf_cnpj\"]').mask(\"99.999.999/9999-99\");
  301.                     }  
  302.                     ";
  303.                     $script->add($javascript); 
  304.                     parent::add($script);
  305.                     $this->form->setData($SystemAlvaraAlvaraExercicioView);
  306.                     $this->onReload($key);
  307.                 }else{
  308.                     
  309.                     AdiantiCoreApplication::loadPage('SystemAlvaraGerarAlvara1');  
  310.                 
  311.                 }
  312.                 TTransaction::close();
  313.             }else{
  314.                 
  315.                 AdiantiCoreApplication::loadPage('SystemAlvaraGerarAlvara1');
  316.             
  317.             }
  318.         }
  319.         catch (Exception $e
  320.         {
  321.             new TMessage('error''<b>Error</b> ' $e->getMessage()); 
  322.             TTransaction::rollback();
  323.         }
  324.     }
  325.     function onReload($param)
  326.     {
  327.         try
  328.         {
  329.             
  330.             $Criteria = new TCriteria();
  331.             $Criteria->add(new TFilter('system_alvara_alvara_id''='$param));
  332.             $Criteria->setProperty('order''dtinicial ASC');
  333.             
  334.             $SystemAlvaraAlvaraExercicio = new TRepository('SystemAlvaraAlvaraExercicio');
  335.             $AlvaraExercicios $SystemAlvaraAlvaraExercicio->load($Criteria);
  336.             if($AlvaraExercicios){
  337.                 foreach ($AlvaraExercicios as $AlvaraExercicio) {
  338.                     
  339.                     if($AlvaraExercicio->tipo == 'A'){
  340.                         $AlvaraExercicio->tipo 'ABERTURA';
  341.                     }else{
  342.                         if($AlvaraExercicio->tipo == 'R'){
  343.                             $AlvaraExercicio->tipo 'RENOVAÇÃO';
  344.                         }
  345.                     }
  346.                     $data = new DateTime($AlvaraExercicio->dtinicial);
  347.                     $AlvaraExercicio->dtinicial $data->format('d/m/Y');
  348.                     if($AlvaraExercicio->dtvencimento){
  349.                         $data = new DateTime($AlvaraExercicio->dtvencimento);
  350.                         $AlvaraExercicio->dtvencimento $data->format('d/m/Y');
  351.                     }
  352.                     $this->datagridExercicio->addItem($AlvaraExercicio);
  353.                 
  354.                 }
  355.             }
  356.             $Criteria = new TCriteria();
  357.             $Criteria->add(new TFilter('system_alvara_alvara_id''='$param));
  358.             $Criteria->setProperty('order''alterado_quando ASC');
  359.             
  360.             $SystemAlvaraLogAlvara = new TRepository('SystemAlvaraLogAlvara');
  361.             $AlvaraLogs $SystemAlvaraLogAlvara->load($Criteria);
  362.             if($AlvaraLogs){
  363.                 foreach ($AlvaraLogs as $AlvaraLog) {
  364.                     $data = new DateTime($AlvaraLog->alterado_quando);
  365.                     $AlvaraLog->alterado_quando $data->format('d/m/Y');
  366.                     
  367.                     $this->datagridLog->addItem($AlvaraLog);
  368.                 
  369.                 }
  370.             }
  371.              
  372.         }catch (Exception $e
  373.         {
  374.             new TMessage('error''<b>Error</b> ' $e->getMessage()); 
  375.             TTransaction::rollback();  
  376.         }
  377.     }
  378.     public static function onDeleteExercicio($param)
  379.     {
  380.         
  381.         $key $param['key'];
  382.         $action = new TAction(['SystemAlvaraAlvaraView''DeleteExercicio']);
  383.         $action->setParameter('key'$key);
  384.         new TQuestion('Deseja excluir o registro?'$action);
  385.     }
  386.     public static function DeleteExercicio($param)
  387.     {
  388.         try
  389.         {
  390.             if (isset($param['key']))
  391.             {
  392.                 
  393.                 $key $param['key'];
  394.                 TTransaction::open('permission');
  395.                 $Criteria = new TCriteria();
  396.                 $Criteria->add(new TFilter('id''='$key));
  397.                 $SystemAlvaraAlvaraExercicio = new SystemAlvaraAlvaraExercicio($key);
  398.                 
  399.                 if($SystemAlvaraAlvaraExercicio->tipo == 'A'){
  400.                     throw new Exception('Não é possível excluir o exercício de abertura do alvará.');
  401.                 }
  402.                 
  403.                 $system_alvara_alvara_id $SystemAlvaraAlvaraExercicio->system_alvara_alvara_id;
  404.                 $SystemAlvaraAlvaraExercicio = new TRepository('SystemAlvaraAlvaraExercicio');
  405.                 $SystemAlvaraAlvaraExercicio->delete($Criteria);
  406.                 TTransaction::close();
  407.                 $pos_action = new TAction(['SystemAlvaraAlvaraView''onView']);
  408.                 $pos_action->setParameter('key'$system_alvara_alvara_id);
  409.                 
  410.                 new TMessage('info''Registro excluído.'$pos_action);
  411.             }
  412.         }
  413.         catch (Exception $e
  414.         {
  415.             new TMessage('error'$e->getMessage()); 
  416.             TTransaction::rollback(); 
  417.         }
  418.     }
  419.     public function onCarregarVoltar(){
  420.         $data TSession::getValue('SystemRequerimentoForm_data');
  421.         $this->form->setData($data);
  422.     }
  423.     
  424.     public function onIniciar(){
  425.         
  426.     }
  427.     public static function onSim(){
  428.         AdiantiCoreApplication::loadPage('SystemRequerenteForm''onEdit');
  429.     }
  430. }
  431. ?>
MG

Está vario pelo fato de no momento que está montando o botão o $id ainda não está preenchido.
Como o __construct é chamado sempre em primeiro lugar é preciso certificar que o $id existe.
Caso o botão seja pressionado ante de carregar os dados em tela, vai estar nulo.

inspecione ou use var_dump($id) antes de criar o botão e veja qual o valor que está em $id.
Caso o valor ainda não exista, eu sugiro criar um regra para não exibir o botão até que a tela esteja com dados....
HL

Marcelo, seguindo sua dica alterei o local da passagem de parâmetro, e deu certo.

Muito obrigado.