Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Erro - TCombo setChangeAction Boas, Estou com um problema (nossa novidade :)), a qual ao setar o evento setChangeAction me da um erro a qual não achei a solução se puderem me ajudar agradeço; ...
MC
Erro - TCombo setChangeAction  
Boas,

Estou com um problema (nossa novidade :)), a qual ao setar o evento setChangeAction me da um erro a qual não achei a solução
se puderem me ajudar agradeço;

  1. <?php
  2.    // TPanelGroup
  3.         $linha = new TCombo('LINHAS');
  4.         $linha->setSize('120');
  5.         $linha->addItemsTGeral::Linhas());
  6.         $linha->enableSearch();    
  7.         $linha->setTip('Máximo de Linhas da Grid');
  8.         $linha->setValueTSession::getValue('GridLin'));   
  9.         $linha->setChangeAction( new TAction( array( $this'onLimit')));     // Erro acontece aqui.
  10.      
  11.         
  12.         $panel = new TPanelGroup$linhawhite );
  13.         $panel->add$this->datagrid );
  14.         $panel->addFooter$this->pageNavigation );
  15.         // vertical box container
  16.         $container = new TVBox;
  17.         $container->style 'width: 80%';
  18.         $container->add( new TXMLBreadCrumb'menu.xml'__CLASS__ ));
  19.         $container->add$this->form );
  20.         $container->add$panel );
  21.         
  22.         parent::add$container );
  23. ?>

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)


WP

tu tem que adicionar o Combo ao seu formulario

  1. <?php $this->form->add(TCombo); ?>


ou fazer setFields ao form indicando seu combo
MC

Willian, boas.

Mas ele não pertence ao TForm e sim ao TpanelGroup a qual já foi adicionado.
MG

É preciso adicionar $linha em Tform

$this->form->addFields($linha);
MC

Marcelo, boas

Eu não posso fazer isso, e mesmo que o fizesse continua o erro.

tenho duas telas, uma TForm e outra TPanelGroup, ele esta na segunda.

Se eu fizer o que vcs me pedem (ja fiz kkk) ele aparece na primeira e mesmo assim reclama da segunda.

Funciona bem, até... fazer a chamada do setChangeAction.

MG

Todos o objeto deve fazer parte de um "form" para submissão.
O seu panel não faz parte do form, portanto o campo "linha" não será submetido. e o erro é bem claro, o campo $linha deve ser inserido no form ($this->form->addFields($linha).
Tenta adicionar o panel no form,
MC

Marcelo, boas

Infelizmente eu não posso colocar na parte superior ou seja no TForm, uma vez que nada tem a ver com
as informações acima.

O TCombo esta relacionado com a DataGrid ou seja ele determina a quantidade de linha da Grid.

Mas como o TDatagrid e o TPageNavigation funcionan ??

Tenetei colocar $this para ver se funcionava, mas da o mesmo erro:

  1. <?php
  2.         // TPanelGroup
  3.         $this->linha = new TCombo('LINHAS');
  4.         $this->linha->setSize('120');
  5.         $this->linha->addItemsTGeral::Linhas());
  6.         $this->linha->enableSearch();    
  7.         $this->linha->setTip('Máximo de Linhas da Grid');
  8.         $this->linha->setValueTSession::getValue('GridLin'));   
  9.         $this->linha->setChangeAction( new TAction( array( $this'onLimit')));      // Aqui e que da o Erro
  10.         $this->panel = new TPanelGroup();
  11.         $this->panel->add$this->linha );                           // desabilita aqui
  12.         $this->panel->add$this->datagrid );
  13.         $this->panel->addFooter$this->pageNavigation );
  14. //        $this->form->addFields( [$linha] );                    // Habilita aqui   ai funciona. ???
  15.         // vertical box container
  16.         $container = new TVBox;
  17.         $container->style 'width: 100%';
  18.         $container->add( new TXMLBreadCrumb'menu.xml'__CLASS__ ));
  19.         $container->add$this->form );
  20.         $container->add$this->panel );
  21. ?>
MC

Senhores, boas

Segue abaixo a solução, mas não me perguntem o porque... :))

Apenas verifiquei umas classe que o form era construído manualmente, e la estava a declaração:


  1. <?php
  2.         // TPanelGroup
  3.         $this->linha = new TCombo('LINHAS');
  4.         $this->linha->setSize('120');
  5.         $this->linha->addItemsTGeral::Linhas());
  6.         $this->linha->enableSearch();    
  7.         $this->linha->setTip('Máximo de Linhas da Grid');
  8.         $this->linha->setValueTSession::getValue('GridLin'));   
  9.         $this->linha->setChangeAction( new TAction( array( $this'onLimit')));
  10.         $panel = new TPanelGroup$this->linhawhite );   
  11.         $panel->add$this->datagrid );
  12.         $panel->addFooter$this->pageNavigation );
  13.         $this->form->setFields( array( $this->linha ));      // aqui esta a soluçao  ooooohhhhhh... ;))
  14.         // vertical box container
  15.         $container = new TVBox;
  16.         $container->style 'width: 100%';
  17.         $container->add( new TXMLBreadCrumb'menu.xml'__CLASS__ ));
  18.         $container->add$this->form );
  19.         $container->add$panel );
  20.         
  21.         parent::add$container );
  22.  ?>
WP

Marcelo mas foi o que eu disse na minha primeira resposta


ou fazer setFields ao form indicando seu combo
MC

Willian, boas

Realmente, você tem toda razão.....

No entanto vou fazer um adendo, se usarmos o setFields iremos substituir o que já existe,
assim no meu caso em especifico, onde ja existe um Formulário anterior (TForm e outra TPanelGroup)
o comando correto seria:

$this->form->addField( $linha );

Assim estarei adicionando aos já existente:

Então no meu caso a solução correta fica assim:

  1. <?php
  2.         // TPanelGroup
  3.         $linha = new TCombo('LINHAS');
  4.         $linha->setSize('140');
  5.         $linha->addItemsTGeral::Linhas());
  6.         $linha->enableSearch();    
  7.         $linha->setTip('Máximo de Linhas da Grid');
  8.         $linha->setValueTSession::getValue__CLASS__.'GridLin' ));   
  9.         $linha->setChangeAction( new TAction( array( $this'onLimit' )));
  10.         $panel = new TPanelGroup$linhawhite );   
  11.         $panel->add$this->datagrid );
  12.         $panel->addFooter$this->pageNavigation );
  13.         $this->form->addField$linha );
  14.         // vertical box container
  15.         $container = new TVBox;
  16.         $container->style 'width: 100%';
  17.         $container->add( new TXMLBreadCrumb'menu.xml'__CLASS__ ));
  18.         $container->add$this->form );
  19.         $container->add$panel );
  20.         
  21.         parent::add$container );
  22. ?>



WP

Correto, esqueci de explanar essa parte maa é por aí mesmo o caminho 😎