Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
classe dentro de classe Amigo Nataniel, salvador da pátria, o meu código de uma classe está muito extenso, eu posso dividí-la em outra classe e fazer tipo o include? no caso é um mestre detalhe e os detalhes ficaram em uma das abas do notebook e eu só irei ativá-la, quando for gerado o código do mestre, que aliás o mestre contém muitos campos, bom não sei se deu para entender!...
MO
classe dentro de classe  
Fechado
Amigo Nataniel, salvador da pátria, o meu código de uma classe está muito extenso, eu posso dividí-la em outra classe e fazer tipo o include?
no caso é um mestre detalhe e os detalhes ficaram em uma das abas do notebook e eu só irei ativá-la, quando for gerado o código do mestre,
que aliás o mestre contém muitos campos, bom não sei se deu para entender!

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


NR

Dê uma olhada no exemplo do link abaixo, é possível separar o código em 2 partes, view e control:
adianti.com.br/framework_files/tutor/index.php?class=FormReusableCon
MO

Natiniel amigo, até entendi a idéia, mas o chamado dos campos que criei não está dando certo, fica dando erro setfields, o sr. poderia por favor exemplificar pra mim? vou postar meu código como está e se der me mostrar o erro?

  1. <?php
  2. /**
  3.  * TitularMestreDetalheForm Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class TitularMestreDetalheForm extends TPage
  7. {
  8.   private $notebook;
  9.   private $form;
  10.   
  11.  /**
  12.      * Class constructor
  13.      * Creates the page
  14.      */
  15.     function __construct$param )
  16.     {
  17.         parent::__construct();
  18.         
  19.         //criando notebook
  20.         $this->notebook = new BootstrapNotebookWrapper( new TNotebook(1100,500) );
  21.         //$this->notebook = new TNotebook(1100,500);
  22.         
  23.         //criando formulario
  24.         
  25.         //$this->form = new TForm;
  26.         $this->form = new ComposicaoFamiliarForm;
  27.         
  28.         //adicionando o notebook dentro do form
  29.         $this->form->add($this->notebook);
  30.         
  31.         //Criando o componente HTML
  32.         $html  = new THtmlEditor('observacao');
  33.         $html->setSize(900400);
  34.         //adicionando uma tabela ao notebook
  35.         $page1 = new TTable;
  36.         $page2 = new TTable;
  37.         $page3 = new TTable;
  38.               
  39.         $page1-> width '99%';
  40.         
  41.         //criando um Panel
  42.         $panel1 = new TPanel(1000,400);
  43.         $page1->addRowSet($panel1);
  44.         
  45.         $panel2 = new TPanel(1000,400);
  46.         $page3->addRowSet($panel2);
  47.         
  48.         //adicionando duas páginas ao notebook
  49.         $this->notebook->appendPage('Dados Pessoais'$page1);
  50.         $this->notebook->appendPage('Observação'$page2);
  51.         $this->notebook->appendPage('Composição Familiar'$page3);
  52.         
  53.         //desligando as abas do notebook
  54.         //$this->notebook->setTabsVisibility(False);
  55.         // create the form fields
  56.         $id                 = new TEntry('id');                  //40
  57.         $nome               = new TEntry('nome');                //225
  58.         $apelido            = new TEntry('apelido');             //86
  59.         $cpf                = new TEntry('cpf');                 //111
  60.         $nis                = new TEntry('nis');                 //119
  61.         $celular1           = new TEntry('celular1');            //115
  62.         $celular2           = new TEntry('celular2');            //115
  63.         $telefone           = new TEntry('telefone');            //105
  64.         $contato            = new TEntry('contato');             //123   
  65.         $sexo               = new TCombo('sexo');                //44
  66.         $pai                = new TEntry('pai');                 //225
  67.         $mae                = new TEntry('mae');                 //225
  68.         $rg                 = new TEntry('rg');                  //110
  69.         $viarg              = new TEntry('viarg');               //55
  70.         $datemisrg          = new TDate('datemisrg');            //80 
  71.         $ufrg               = new TCombo('ufrg');                //55
  72.         $orgexprg           = new TEntry('orgexprg');            //95
  73.         $datnasc            = new TDate('datnasc');              //80
  74.         $naturalidade       = new TEntry('naturalidade');        //230
  75.         $endereco           = new TEntry('endereco');            //213
  76.         $numero             = new TEntry('numero');              //80  
  77.         $complemento        = new TEntry('complemento');         //100
  78.         $pontoref           = new TEntry('pontoref');            //195
  79.         $cep                = new TEntry('cep');                 //80
  80.         $localtrabalho      = new TEntry('localtrabalho');       //303 
  81.         $qualnecespecial    = new TEntry('qualnecespecial');     //151 
  82.         $necadap            = new TCombo('necadap');             //58
  83.         $qtdpesres          = new TSpinner('qtdpesres');         //62 
  84.         $valorbeneficio     = new TEntry('valorbeneficio');      //73
  85.         $desistente         = new TCombo('desistente');          //67  
  86.         $declaracao         = new TCombo('declaracao');          //67
  87.         $situacaoderua      = new TCombo('situacaoderua');       //67 
  88.         $assocmorador       = new TEntry('assocmorador');        //382
  89.         $participa          = new TCombo('participa');           //67
  90.         $situacao_trab_id   = new TDBCombo('situacao_trab_id','permission','SituacaoTrab','id','situacaotrab');     //260
  91.         $escolaridade_id    = new TDBCombo('escolaridade_id','permission','Escolaridade','id','escolaridade');//260
  92.         $ocupacaoprof_id    = new TDBCombo('ocupacaoprof_id','permission','Ocupacaoprof','id','descricao');       //260
  93.         $tipo_nec_esp_id    = new TDBCombo('tipo_nec_esp_id','permission','TipoNecEsp','id','necespecial');       //260
  94.         $tempo_trabalho_id  = new TDBCombo('tempo_trabalho_id','permission','TempoTrabalho','id','TempoTrab');      //200 
  95.         $renda_mensal_id    = new TDBCombo('renda_mensal_id','permission','RendaMensal','id','renda');           //180
  96.         $estado_civil_id    = new TDBCombo('estado_civil_id','permission','EstadoCivil','id','estadocivil');      //180
  97.         $beneficio_id       = new TDBCombo('beneficio_id','permission','Beneficio','id','beneficio');         //180
  98.         $sitconjugal_id     = new TDBCombo('sitconjugal_id','permission','Sitconjugal','id','sitconjugal');     //180
  99.         $bairro_id          = new TDBCombo('bairro_id','permission','Bairro','id','bairro');                  //200 
  100.         $logradouro_id      = new TDBCombo('logradouro_id','permission','Logradouro','id','descricao');       //180 
  101.         $rendatotal         = new TEntry('rendatotal');          //185
  102.         $renda_comp_id      = new TDBCombo('renda_comp_id','permission','RendaCompl','id','tipoderenda');       //180 
  103.         $observacao         $html;    //new TText('observacao');          //500
  104.         //$field3 =  $this->form->field3;    //new TEntry('field3');
  105.         //$field4 = $this->form->field4;     //new TEntry('field4');
  106.         
  107.         //desabilitando o campo código
  108.         $id->setEditable(False);
  109.         
  110.         //adicionando itens ao combo sexo
  111.         $combosexo_items = array(1=>"M",2=>"F");
  112.         $sexo->addItems($combosexo_items);
  113.         //adicionando itens ao combo UF
  114.         $comboufrg_items = array(1=>"SP",2=>"RJ",3=>"AC",4=>"AL",5=>"AM",
  115.                                  6=>"AP",7=>"BA",8=>"CE",9=>"DF",10=>"ES",
  116.                                  11=>"GO",12=>"MA",13=>"MG",14=>"MS",15=>"MT",
  117.                                  16=>"PA",17=>"PB",18=>"PE",19=>"PI",20=>"PR",
  118.                                  21=>"RN",22=>"RO",23=>"RR",24=>"RS",25=>"SC",
  119.                                  26=>"SE");
  120.         $ufrg->addItems($comboufrg_items);                          
  121.         //adicionando opções de sim/nao ao combo
  122.         $combo_items = array(1=>"Sim",2=>"Não");
  123.         
  124.         //adicionando itens ao combo nec.adap/declaração/desistente/situação de rua/participa
  125.         $necadap->addItems($combo_items);
  126.         $declaracao->addItems($combo_items);
  127.         $desistente->addItems($combo_items);
  128.         $situacaoderua->addItems($combo_items);
  129.         $participa->addItems($combo_items);
  130.         
  131.         
  132.         //valores para o spinner Qt. Pessoas Resid.
  133.         $qtdpesres->setRange(0,20,1);
  134.         // change the size for some fields
  135.         $id->setSize(70);                                        //ok
  136.         $nome->setSize(260);                                     //ok   
  137.         $apelido->setSize(140);                                  //ok  
  138.         $cpf->setSize(111);                                      //ok  
  139.         $nis->setSize(111);                                      //ok
  140.         $celular1->setSize(115);                                 //ok
  141.         $celular2->setSize(115);                                 //ok
  142.         $telefone->setSize(105);                                 //ok
  143.         $contato->setSize(145);                                  //ok   
  144.         $sexo->setSize(44);                                      //ok
  145.         $pai->setSize(260);                                      //ok
  146.         $mae->setSize(260);                                      //ok
  147.         $rg->setSize(140);                                       //ok
  148.         $viarg->setSize(55);                                     //ok
  149.         $datemisrg->setSize(80);                                 //ok 
  150.         $ufrg->setSize(55);                                      //ok
  151.         $orgexprg->setSize(95);                                  //ok
  152.         $datnasc->setSize(80);                                   //ok
  153.         $naturalidade->setSize(175);                             //ok
  154.         $endereco->setSize(205);                                 //ok
  155.         $numero->setSize(80);                                    //ok 
  156.         $complemento->setSize(90);                               //ok
  157.         $pontoref->setSize(290);                                 //ok
  158.         $cep->setSize(80);                                       //ok
  159.         $localtrabalho->setSize(250);                            //ok 
  160.         $tipo_nec_esp_id->setSize(180);                          //ok 
  161.         $qualnecespecial->setSize(180);                          //ok 
  162.         $necadap->setSize(58);                                   //ok   
  163.         $qtdpesres->setSize(62);                                 //ok 
  164.         $valorbeneficio->setSize(73);                            //ok
  165.         $declaracao->setSize(67);                                //ok
  166.         $situacaoderua->setSize(67);                             //ok 
  167.         $desistente->setSize(67);                                //ok  
  168.         $assocmorador->setSize(382);
  169.         $participa->setSize(67);
  170.         $situacao_trab_id->setSize(195);                         //ok
  171.         $escolaridade_id->setSize(260);                          //ok
  172.         $ocupacaoprof_id->setSize(340);                          //ok
  173.         $tempo_trabalho_id->setSize(147);                        //ok 
  174.         $renda_mensal_id->setSize(180);                          //ok
  175.         $estado_civil_id->setSize(100);                          //ok
  176.         $sitconjugal_id->setSize(100);                           //ok
  177.         $beneficio_id->setSize(185);                             //ok
  178.         $bairro_id->setSize(150);                                //ok 
  179.         $logradouro_id->setSize(180);                            //ok 
  180.         $rendatotal->setSize(105);                               //ok
  181.         $renda_comp_id->setSize(180);                            //ok 
  182.         
  183.         //adicionando os campos no Panel da tabela1
  184.         $panel1->put(new TLabel('Codigo'),                    20,   16);
  185.         $panel1->put(new TLabel('Nome do Titular'),           95,   16);     // (col,lin)
  186.         $panel1->put(new TLabel('Apelido'),                  360,   16);     // (col,lin)
  187.         $panel1->put(new TLabel('Sexo'),                     505,   16);     // (col,lin)
  188.         $panel1->put(new TLabel('Escolaridade'),             555,   16);     // (col,lin)
  189.         $panel1->put(new TLabel('C.P.F'),                    820,   16);     // (col,lin)
  190.         $panel1->put(new TLabel('Nis'),                      937,   16);     // (col,lin)
  191.         $panel1->put(new TLabel('Celular-1'),                 20,   71);     // (col,lin)
  192.         $panel1->put(new TLabel('Celular-2'),                140,   71);     // (col,lin)
  193.         $panel1->put(new TLabel('Telefone'),                 260,   71);     // (col,lin)
  194.         $panel1->put(new TLabel('Contato'),                  370,   71);     // (col,lin)
  195.         $panel1->put(new TLabel('Pai'),                      520,   71);     // (col,lin)
  196.         $panel1->put(new TLabel('Mãe'),                      785,   71);     // (col,lin)
  197.         $panel1->put(new TLabel('Nº.Ident.'),                 20,  126);     // (col,lin)
  198.         $panel1->put(new TLabel('Via RG'),                   165126);      // (col,lin)
  199.         $panel1->put(new TLabel('Data Emis.'),               225126);      // (col,lin)
  200.         $panel1->put(new TLabel('Órgão Exp.'),               335126);      // (col,lin)
  201.         $panel1->put(new TLabel('UF.RG'),                    435126);      // (col,lin)
  202.         $panel1->put(new TLabel('Data Nasc.'),               495126);      // (col,lin)
  203.         $panel1->put(new TLabel('Naturalidade'),             600126);      // (col,lin)
  204.         $panel1->put(new TLabel('CEP'),                      780126);      // (col,lin)
  205.         $panel1->put(new TLabel('Logradouro'),               865126);      // (col,lin)
  206.         $panel1->put(new TLabel('Endereco'),                  20181);     // (col,lin)
  207.         $panel1->put(new TLabel('Bairro'),                   230181);     // (col,lin)
  208.         $panel1->put(new TLabel('Número'),                   385181);      // (col,lin)
  209.         $panel1->put(new TLabel('Complemento'),              470181);      // (col,lin)
  210.         $panel1->put(new TLabel('Ponto de Referencia'),      565181);      // (col,lin)
  211.         $panel1->put(new TLabel('Portador de Nec.Esp'),      860181);      // (col,lin)
  212.         $panel1->put(new TLabel('Qual Nec.Esp.'),             20236);      // (col,lin)
  213.         $panel1->put(new TLabel('Nec.Adap'),                 200236);      // (col,lin)
  214.         $panel1->put(new TLabel('Estado Civil'),             268236);      // (col,lin)
  215.         $panel1->put(new TLabel('Sit. Conjugal'),            372236);      // (col,lin)
  216.         $panel1->put(new TLabel('Qt.P.Resid'),               477236);      // (col,lin)
  217.         $panel1->put(new TLabel('Ocupação / Profissão'),     548236);      // (col,lin)
  218.         $panel1->put(new TLabel('Tempo de Trab.'),           893236);      // (col,lin)
  219.         $panel1->put(new TLabel('Situação Trabalhista'),      20291);      // (col,lin)
  220.         $panel1->put(new TLabel('Local Trabalho'),           220291);      // (col,lin)
  221.         $panel1->put(new TLabel('Renda Mensal'),             475291);      // (col,lin)
  222.         $panel1->put(new TLabel('Renda Complem'),            660291);      // (col,lin)
  223.         $panel1->put(new TLabel('Beneficio'),                845291);      // (col,lin)
  224.         $panel1->put(new TLabel('Val.Benef'),                20346);      // (col,lin)
  225.         $panel1->put(new TLabel('Renda.Tot'),                135346);      // (col,lin)
  226.         $panel1->put(new TLabel('Declaração'),               210346);      // (col,lin)
  227.         $panel1->put(new TLabel('Sit.Rua'),                  285346);      // (col,lin)
  228.         $panel1->put(new TLabel('Desist.'),                  360346);      // (col,lin)
  229.         $panel1->put(new TLabel('Associação de Moradores'),  432346);      // (col,lin)
  230.         $panel1->put(new TLabel('Participa'),                820346);      // (col,lin)
  231.         
  232.         ## inserindo campos na pagina 1
  233.         $panel1->put($id,                20,  35);
  234.         $panel1->put($nome,              95,  35);
  235.         $panel1->put($apelido,          360,  35);
  236.         $panel1->put($sexo,             505,  35);
  237.         $panel1->put($escolaridade_id,  555,  35);
  238.         $panel1->put($cpf,              820,  35);
  239.         $panel1->put($nis,              937,  35);
  240.         $panel1->put($celular1,          20,  90);
  241.         $panel1->put($celular2,         140,  90);
  242.         $panel1->put($telefone,         260,  90);
  243.         $panel1->put($contato,          370,  90);
  244.         $panel1->put($pai,              520,  90);
  245.         $panel1->put($mae,              785,  90);
  246.         $panel1->put($rg,                20145);
  247.         $panel1->put($viarg,            165145);
  248.         $panel1->put($datemisrg,        225145);
  249.         $panel1->put($orgexprg,         335145);
  250.         $panel1->put($ufrg,             435145);
  251.         $panel1->put($datnasc,          495145);
  252.         $panel1->put($naturalidade,     600145);
  253.         $panel1->put($cep,              780145);
  254.         $panel1->put($logradouro_id,    865145);
  255.         $panel1->put($endereco,          20200);
  256.         $panel1->put($bairro_id,        230200);
  257.         $panel1->put($numero,           385200);
  258.         $panel1->put($complemento,      470200);
  259.         $panel1->put($pontoref,         565200);
  260.         $panel1->put($tipo_nec_esp_id,  860200);
  261.         $panel1->put($qualnecespecial,   20255);
  262.         $panel1->put($necadap,          205255);
  263.         $panel1->put($estado_civil_id,  268255);
  264.         $panel1->put($sitconjugal_id,   372255);
  265.         $panel1->put($qtdpesres,        477255);
  266.         $panel1->put($ocupacaoprof_id,  548255);
  267.         $panel1->put($tempo_trabalho_id,893255);
  268.         $panel1->put($situacao_trab_id,  20310);
  269.         $panel1->put($localtrabalho,    220310);
  270.         $panel1->put($renda_mensal_id,  475310);
  271.         $panel1->put($renda_comp_id,    660310);
  272.         $panel1->put($beneficio_id,     845310);
  273.         $panel1->put($valorbeneficio,   20365);
  274.         $panel1->put($rendatotal,       100365);
  275.         $panel1->put($declaracao,       210365);
  276.         $panel1->put($situacaoderua,    285365);
  277.         $panel1->put($desistente,       360365);
  278.         $panel1->put($assocmorador,     432365);
  279.         $panel1->put($participa,        820365);
  280.         //adicionando campos na aba2
  281.         $page2->addRowSet($html);
  282.         
  283.         
  284.         $button1 = new TButton('action1');
  285.         $button1->setAction( new TAction( array($this,'onStep2')),'Avançar');
  286.         $button1->setImage('fa:save.png');
  287.         $button2 = new TButton('action2');
  288.         $button2->setAction( new TAction( array($this,'onStep1')),'Voltar');
  289.         $button3 = new TButton('action3');
  290.         $button3->setAction( new TAction( array($this,'onSave')),'Salvar');
  291.         
  292.         
  293.         $page1->addRowSet$button1 );
  294.         $page2->addRowSet$button2$button3 );
  295.         
  296.         //capturando os campos do formulário 
  297.         $this->form->setFields(array($id,$nome,$apelido,$sexo,$escolaridade_id,$cpf,$nis,$celular1,$celular2,$telefone,$contato,$pai,$mae,
  298.                                      $rg,$viarg,$datemisrg,$orgexprg,$ufrg,$datnasc,$naturalidade,$logradouro_id,$cep,$endereco,$bairro_id,
  299.                                      $numero,$complemento,$pontoref,$tipo_nec_esp_id,$qualnecespecial,$necadap,$estado_civil_id,$sitconjugal_id,
  300.                                      $qtdpesres,$ocupacaoprof_id,$tempo_trabalho_id,$situacao_trab_id,$localtrabalho,$renda_mensal_id,
  301.                                      $renda_comp_id,$beneficio_id,$valorbeneficio,$rendatotal,$declaracao,$situacaoderua,$desistente,
  302.                                      $assocmorador,$participa,$field3,$field4,$button1,$button2,$button3,$html,$field3,$field4));
  303.         
  304.         
  305.         parent::add($this->form);
  306.     }
  307.     
  308.     public function onStep2()
  309.     {
  310.         $data $this->form->getData();
  311.         $this->form->setData($data);
  312.         $this->notebook->setCurrentPage);
  313.     }
  314.     
  315.     public function onStep1()
  316.     {
  317.         $this->notebook->setCurrentPage);
  318.         $this->form->setData($this->form->getData());
  319.     
  320.     }
  321.     
  322.     public function onSave($param)
  323.     {
  324.         $this->notebook->setCurrentPage);  //página atual de salvamento
  325.         try
  326.         {
  327.             TTransaction::open('permission'); // open a transaction
  328.             
  329.             /**
  330.             // Enable Debug logger for SQL operations inside the transaction
  331.             TTransaction::setLogger(new TLoggerSTD); // standard output
  332.             TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  333.             **/
  334.             
  335.             $this->form->validate();                // valida dados do form
  336.             
  337.             $object = new Titular;                  // cria os objetos em branco
  338.             $data $this->form->getData();         // pega dados do form como array
  339.             $object->fromArray( (array) $data);     // lê os objetos do array
  340.             $object->store();                       // salva os objetos
  341.             
  342.             // get the generated id
  343.             $data->id $object->id;
  344.             
  345.             $this->form->setData($data);             // preenche o formulário
  346.             TTransaction::close();                   // fecha a transação
  347.             
  348.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  349.         }
  350.         catch (Exception $e)                                     // in case of exception
  351.         {
  352.             new TMessage('error'$e->getMessage());             // mostra os erros de exceção
  353.             $this->form->setData$this->form->getData() );      // continua com os dados
  354.             TTransaction::rollback();                            // undo all pending operations
  355.         }
  356.     }
  357.     
  358.     /**
  359.      * Load object to form data
  360.      * @param $param Request
  361.      */
  362.     public function onEdit$param )
  363.     {
  364.         try
  365.         {
  366.             if (isset($param['key']))
  367.             {
  368.                 $key $param['key'];                      // pega a chave do parametro
  369.                 TTransaction::open('permission');          // abre a transação
  370.                 $object = new Titular($key);               // instancia o registro
  371.                 $this->form->setData($object);             // preenche o formulário
  372.                 TTransaction::close();                     // fecha a transação
  373.             }
  374.             else
  375.             {
  376.                 $this->form->clear();
  377.             }
  378.         }
  379.         catch (Exception $e// in case of exception
  380.         {
  381.             new TMessage('error'$e->getMessage()); // shows the exception error message
  382.             TTransaction::rollback(); // undo all pending operations
  383.         }
  384.     }
  385.     
  386.     
  387. }        </your>
MO

  1. <?php
  2. /**
  3.  * TitularMestreDetalheForm Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class ComposicaoFamiliarForm extends TPage
  7. {
  8.     function __construct()
  9.     {
  10.         parent::__construct();
  11.         
  12.         $this->form = new TForm;
  13.         // create the form fields
  14.         $field3 = new TEntry('field3');
  15.         $field4 = new TEntry('field4');
  16.         //capturando os campos do formulário 
  17.         $this->form->setFields(array($field3,$field4));
  18.         
  19.         
  20.         parent::add($this->form);
  21.         
  22.         
  23.     }
  24.     
  25. }        </your>
MO

O Erro:
Fatal error: Call to undefined method ComposicaoFamiliarForm::setFields() in D:VertrigoServwwwsisbsappcontrolapresentacaoTitularMestreDetalheForm.class.php on line 310
NR

Marcos, a classe View(ComposicaoFamiliarForm) deve ser filha de TForm e não de TPage. No link que te passei só aparece o código da control, por isso segue código da view:
  1. <?php
  2. /**
  3.  * FormReusableView
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006-2014 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class FormReusableView extends TForm
  13. {
  14.     public function __construct()
  15.     {
  16.         parent::__construct();
  17.         
  18.         // create the notebook
  19.         $notebook = new TNotebook(400280);
  20.         parent::add($notebook);
  21.         
  22.         // creates the notebook page
  23.         $this->table = new TTable;
  24.         
  25.         // adds the notebook page
  26.         $notebook->appendPage('Reusable view'$this->table);
  27.         
  28.         // create the form fields
  29.         $fields[] = new TEntry('field1');
  30.         $fields[] = $date = new TDate('field2');
  31.         $fields[] = $text = new TText('field3');
  32.         $fields[] = $combo = new TCombo('field4');
  33.         $fields[] = new TPassword('field5');
  34.         
  35.         $date->setSize(100);
  36.         $text->setSize(200,100);
  37.         $combo->addItems(array('1'=>'One''2'=>'Two'));
  38.         for ($n=0$n<5$n++)
  39.         {
  40.             // add a row for one field
  41.             $row=$this->table->addRow();
  42.             $row->addCell(new TLabel('Field '.($n+1)));
  43.             $row->addCell$fields[$n] );
  44.         }
  45.         
  46.         // define wich are the form fields
  47.         parent::setFields($fields);
  48.     }
  49.     
  50.     /**
  51.      * Add a form action
  52.      * @param $name Action name
  53.      * @param $callback Action callback
  54.      * @param $label Action label
  55.      * @param $icon Action icon 
  56.      */
  57.     public function addAction($name$callback$label$icon)
  58.     {
  59.         // creates the action button
  60.         $button1=new TButton($name);
  61.         $button1->setAction($callback$label);
  62.         $button1->setImage($icon);
  63.         
  64.         // add the field to the form
  65.         parent::addField($button1);
  66.         
  67.         // add a row for the button
  68.         $row=$this->table->addRow();
  69.         $row->addCell($button1);
  70.     }
  71. }
  72. ?>

A ideia é que tudo que esteja vinculado ao form seja criado/instanciado na View e não na Control.