Em 4D, os desenvolvedores podem oferecer aos usuários a possibilidade de criar ou modificar formulários personalizados. Esses "formulários de usuário" podem ser usados como qualquer outro formulário de 4D.
Os formulários de usuário estão baseados em formulários 4D padrão criados pelo desenvolvedor em modo Desenho (chamados formulários “fonte” ou “desenvolvedor”) onde se aplica a propriedade Modificável pelo usuário no editor de formulários. Um editor de formulários simplificado (chamado utilizando o comando EDIT FORM) permite aos usuários modificar a aparência do formulário, adicionar objetos gráficos (utilizando uma biblioteca de objetos específicos), ocultar elementos, etc.- o desenvolvedor pode controlar as acões autorizadas.
Os formulários de usuário podem ser utilizados de duas maneiras diferentes:
- O usuário modifica o formulário “fonte” para adaptá-lo a suas necessidades com a ajuda do comando EDIT FORM. O formulário de usuário é conservado localmente e é utilizado automaticamente ao invés do formulário original.
Este funcionamento responde às necessidades do desenvolvedor de definir parâmetros para caixas de diálogo on site; por exemplo, para adicionar o logo da empresa nos formulários, ocultar campos desnecessários, etc.
- O formulário “fonte” atua como um modelo de banco que os usuários possam duplicar livremente e gerar tantas cópias quantas sejam necessárias utilizando o comando CREATE USER FORM. É possível definir os parâmetros livremente a cada cópia (conteúdo, nome, etc.) utilizando o comando EDIT FORM. Entretanto, o nome de cada formulário de usuário deve ser único. Os comandos INPUT FORM e OUTPUT FORM permitem especificar o formulário de usuário a ser utilizado em cada processo.
Este funcionamento permite aos desenvolvedores criar, por exemplo, relatórios personalizados.
Os mecanismos dos formulários de usuário funcionam com os bancos compilados e interpretados, com 4D em modo local, 4D Server ou 4D Desktop. Em modo cliente/servidor, os formulários modificados pelo usuário estão disponíveis em todas as máquinas.
4D gerencia automaticamente a gestão de mudanças nos formulários. Quando um formulário está declarado como Modificável pelo usuário, está bloqueado no ambiente Desenho. O desenvolvedor deve clicar explicitamente no ícone para desbloqueá-lo para poder acessar aos objetos do formulário. Esta operação torna obsoletos os formulários de usuário relacionados, os quais devem ser gerados novamente. Quando um formulário “fonte” for apagado, os formulários de usuário relacionados também são apagados.
Os formulários de usuário são armazenados em um arquivo independente com uma extensão .4DA, do lado do arquivo de estrutura principal (.4DB/.4DC). Este arquivo é chamado “arquivo de estrutura do usuário”. O funcionamento deste arquivo é transparente: 4D utiliza um formulário de usuário quando ele existir (o novo comando LIST USER FORMS permite conhecer os formulários de usuário válidos a qualquer momento). É neste arquivo também que os comandos INPUT FORM e OUTPUT FORM procuram os formulários de usuário. Quando um formulário de usuário for obsoleto, ele é apagado e 4D utiliza o formulário fonte por padrão.
Em cliente/servidor, o arquivo .4DA é distribuóido nas máquinas cliente seguindo as mesmas regras que o arquivo de estrutura principal.
Este principio permite conservar os formulários de usuário não obsoletos no caso de uma atualização da estrutura pelo desenvolvedor.
Os códigos de erros específicos podem ser devolvidos durante a utilização dos comandos de gestão de formulários de usuário. Estes códigos, localizados no intervalo de -9750 a -9759, estão descritos na seção de Erros do Motor de banco de dados (-10600 -> 4004).
Os mecanismos dos formulários de usuário não são compatíveis com os formulários de projeto. Os comandos do tema "formulários de usuário" não podem ser usados com os formulários de projeto.