Como criar um formulário genérico com formas dinâmicas

Tradução automática de Deepl

Imagine que a sua base de dados contém várias tabelas de tipos ou categorias. Estas tabelas são muito simples, frequentemente apenas com um identificador e um campo de texto. Para fins de demonstração, digamos que é uma base de dados de gestão de sapatos. Para qualificar os produtos, precisamos de definir o seu tipo, cor, padrão, material, estação do ano e assim por diante.

É incómodo gerir cada uma destas tabelas numa forma de lista e num formulário de entrada e métodos associados. Neste caso, a utilização de um formulário genérico é essencial para evitar duplicações e simplificar a manutenção.

E é aí que os formulários dinâmicos e as indicações JSON são úteis!

Neste post do blogue, verá uma forma possível de construir formulários genéricos.

Exemplo de base de dados

Com esta base de dados, é possível abrir cinco diálogos diferentes, como se mostra abaixo. Mas se voltar ao modo de desenho, notará que não encontra formulários no Explorador 4D…

Então, como são criados estes formulários?

Nos três passos descritos abaixo:

1. Em primeiro lugar, criamos um formulário de lista que guardamos num ficheiro JSON. Para as informações específicas sobre tabela e campos, utilizamos apontadores JSON. Por exemplo, digamos que queremos escrever o nome da tabela no título da janela. No formulário dinâmico, só temos de entrar:

"windowTitle": { "$ref": "#/info/table" }

Aqui está outro exemplo, na caixa de listagem, queremos definir a fonte de dados da coluna, por isso escrevemos:

"dataSource": { "$ref": "#/info/field1" }

2. Depois, em tempo de execução, quando o utilizador clica no item do menu, injectamos um objecto que define a tabela, com os campos que o utilizador escolheu.

C_OBJECT($o;$info)
$info :=New object("table";$table; "field1";"["+$table+"]"+"ID"; "field2";"["+$table+"]"+"Name")
$o :=JSON Parse(Document to text("RESOURCES/Form/CategoryOutputForm.json"))
$o .info:=$info

3. Para abrir o formulário, nada de excepcional é necessário, basta usar o Open form window comando. A única coisa a lembrar é que 4D resolve as indicações do JSON ao chamar o Open form window comando:

$ref:=Open form window($o;Plain form window)

O mesmo pode ser feito com o formulário de entrada. E agora experimente-o por si mesmo!

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.