A melhor parceira de TI para o seu negócio English version

Framework docs

Apresentação > Designer > Elementos de formulário

Conheça mais sobre com o livro:

  • Instalação e configuração;
  • Modelos, persistência e BD;
  • Componentes de apresentação;
  • Cadastros e listagens;
  • Logins, permissões, relatórios;
  • Desenvolvimento com Studio Pro.
Ver detalhes...

Esse próximo exemplo demonstra uma interface criada utilizando o Adianti Studio Designer. Nesta interface temos um formulário com vários tipos de objetos de entrada de dados.

A classe TUIBuilder é um construtor de interface. Ela recebe um arquivo XML criado pelo Adianti Studio Designer e renderiza o formulário na interface. Uma instância de TUIBuilder pode ser adicionada dentro de qualquer outro container como TNotebook, TTable ou diretamente dentro de um controlador TPage.

Quando colocarmos um TUIBuilder dentro de um objeto TForm, precisamos extrair todos os campos da interface por meio do método getFields(). O resultado pode ser passado como parâmetro para o método setFields() do objeto TForm, definindo quais são os campos do formulário.

Importante: Este exemplo envolve a utilização de uma interface (tela) desenhada pelo Adianti Studio Form Designer. O Adianti Studio Form Designer é uma ferramenta completa que permite ao usuário desenhar formulários e datagrids com uma interface gráfica (clicar e arrastar) utilizando os componentes e containers do framework (TEntry, TCombo, TRadioGroup, TFrame, etc). Esta interface é salva em XML e pode ser utilizada pela classe TUIBuilder, e seu método parseFile() para recriá-la dinamicamente em tempo de execução.

Clique aqui para
demonstração real

Exemplo

  1. <?php
  2. /**
  3.  * DesignFormView Registration
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class DesignFormView extends TPage
  13. {
  14.     private $form;
  15.     
  16.     /**
  17.      * Class constructor
  18.      * Creates the page and the registration form
  19.      */
  20.     function __construct()
  21.     {
  22.         parent::__construct();
  23.         
  24.         // creates the form
  25.         $this->form = new TForm;
  26.         
  27.         try
  28.         {
  29.             // UIBuilder object
  30.             $ui = new TUIBuilder(500,300);
  31.             $ui->setController($this);
  32.             $ui->setForm($this->form);
  33.             
  34.             // reads the xml form
  35.             $ui->parseFile('app/forms/sample.form.xml');
  36.             
  37.             // add the TUIBuilder panel inside the form
  38.             $this->form->add($ui);
  39.             
  40.             // set the form fields from the interface
  41.             $this->form->setFields($ui->getFields());
  42.         }
  43.         catch (Exception $e)
  44.         {
  45.             new TMessage('error'$e->getMessage());
  46.         }
  47.         
  48.         // wrap the page content using vertical box
  49.         $vbox = new TVBox;
  50.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  51.         $vbox->add($this->form);
  52.         parent::add($vbox);
  53.     }
  54.     
  55.     /**
  56.      * method onView()
  57.      * Executed whenever the user clicks at the save button
  58.      */
  59.     function onView()
  60.     {
  61.         try
  62.         {
  63.             $data $this->form->getData(); // optional parameter: active record class
  64.             
  65.             // put the data back to the form
  66.             $this->form->setData($data);
  67.             
  68.             $this->form->validate();
  69.             
  70.             // creates a string with the form element's values
  71.             $message 'ID : ' $data->id '<br>';
  72.             $message.= 'Name : ' $data->name '<br>';
  73.             $message.= 'Birthdate : ' $data->birthdate '<br>';
  74.             $message.= 'Gender : ' $data->gender '<br>';
  75.             $message.= 'Pets : ' $data->pets '<br>';
  76.             $message.= 'Income : ' $data->income '<br>';
  77.             $message.= 'Weight : ' $data->weight '<br>';
  78.             $message.= 'Fashion : ' implode(','$data->fashion) . '<br>';  
  79.             
  80.             // show the message
  81.             new TMessage('info'$message);
  82.         }
  83.         catch(Exception $e)
  84.         {
  85.             new TMessage('error'$e->getMessage());
  86.         }
  87.     }
  88. }
  89. ?>