Já nos disse o quanto quer uma funcionalidade para construir formulários dinâmicos totalmente adaptados às necessidades dos seus utilizadores finais . Bem, nós ouvimo-lo, e 4D v16 R6 now abre novas oportunidades com formulários dinâmicos! Fornecidos como pré-visualização em 4D v16 R6, os formulários dinâmicos permitem-lhe programar a construção dos seus formulários num objecto ou carregá-los a partir de um ficheiro de texto. Mas isto apenas risca a superfície do que cozinhámos para si.
Formulários dinâmicos – Exemplo de base de dados
forma dinâmica Benefícios
Nas formas dinâmicas, todo o conteúdo da forma – páginas, objectos de forma, e as propriedades de cada objecto – são descritos num formato de texto (formato JSON). Assim, as formas dinâmicas podem ser armazenadas num objecto ou num ficheiro. Para uma migração suave, é possível ter ambos os tipos de formulários numa base de dados, ou seja, tanto formulários regulares (armazenados num formato binário no ficheiro .4DB) como formulários dinâmicos(armazenados como texto em qualquer parte do disco).
Os formulários dinâmicos podem ser utilizados com aplicações compiladas ou isoladas. A vantagem dos novos formulários versus formulários binários regulares é que se pode modificá-los apenas actualizando o ficheiro JSON … sem ter de recompilar o pedido. Isto dá-lhe uma grande flexibilidade na implementação.
A utilização de formulários dinâmicos tem também outros grandes benefícios. Já teve um cliente que solicitou a alteração da fonte para todos os objectos dos formulários? Com formulários dinâmicos, é tão simples como fazer uma “Pesquisa e Substituição” num ficheiro de texto!
Agora digamos que quer enviar um determinado formulário por e-mail a um colega de trabalho, só tem de enviar um único ficheiro de texto em vez de todo o pacote da base de dados. Os formulários dinâmicos também simplificam a reutilização de um formulário noutra aplicação sem o incómodo de o mover para outra base de dados … basta copiar/colar um único ficheiro e está feito!
comandos que suportam formulários dinâmicos
Doravante, todos os comandos 4D que utilizam um nome de formulário foram melhorados para aceitar também uma descrição de formulário como um objecto ou um caminho de ficheiro:.
- DIALOG
- FORM SET INPUT
- FORM SET OUTPUT
- OBJECT SET SUBFORM
- OBJECT GET SUBFORM
- FORM LOAD
- Print form
- Current form name
“Exemplo “HELLO WORLD
descrição do formulário a partir de um ficheiro de texto
Vamos dar um exemplo simples com apenas um texto e um botão:
A descrição textual do formulário é a seguinte:
{ ... list of form parameters ... "pages": [ ... list of form pages ... null, ... page 0 ... { ... page 1 ... "objects": { ... list of form objects in page 1 ... "text": { "type": "text", "text": "Hello World !", "left": 20, "top": 20, "width": 200, "height": 20 }, "button": { "type": "button", "text": "OK", "left": 120, "top": 40, "width": 100, "height": 20 } }}] }
E aqui está o código para carregar este formulário num diálogo:
DIALOG ("/RESOURCES/helloWorld.json")
A gramática é definida por um esquema JSON. A documentação também fornece a lista completa de atributos que podem ser utilizados em formulários dinâmicos, com detalhes sobre que atributos são suportados por cada objecto de formulário. Não se esqueça que pode utilizar o JSON Validate comando para verificar se o JSON na descrição do seu formulário está de acordo com o esquema do JSON.
Construir uma forma num objecto
Agora, vamos tornar esta forma totalmente dinâmica, construindo-a apenas com código!
// Build form description
$label:=New object("tipo"; "texto"; "texto"; "Olá Mundo!";"top";20;"left";20;"width";200;"height";20)
$button :=New object("type";"button";"text";"OK";"top";40;"left";120;"width";100;"height";20)
$page :=New object("objectos";New object("etiqueta";$label; "botão";$button))
$form :=New object("páginas";New collection(Null;$page); "windowTitle"; "A minha primeira forma dinâmica"; "rightMargin";20; "bottomMargin";20)
// Load the form in a dialog
$w:=Open form window($form)
DIALOG (
$form)
Como pode ver, dá-lhe a flexibilidade de construir os seus formulários de acordo com as suas necessidades. Depois de ter escrito os seus formulários num ficheiro ou num objecto, pode utilizá-los da mesma forma que utilizaria formulários normais.
E quanto à edição de formulários?
De momento, não há nenhum mecanismo disponível para editar os seus formulários dinâmicos a não ser a utilização de um editor de texto. Mas isto não vai durar! Está a caminho um editor de formulários dedicado especificamente a formulários dinâmicos. Quando? Fique atento.