Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20.6
DIALOG
|
DIALOG ( {tabela ;} formulario {; dataForm}{; *} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
tabela | Tabela |
![]() |
Tabela a qual pertence o formulário ou se omitida: tabela por padrão ou uso do formulário de projeto | |||||
formulario | String, Objeto |
![]() |
Nome de tabela ou formulário de projeto a mostrar como diálogo | |||||
dataForm | Objeto |
![]() |
Dados a associar ao formulário | |||||
* | Operador |
![]() |
Utilizar o mesmo processo | |||||
O comandoDIALOG apresenta o formulário formulario ao usuário. Este comando se designa para trabalhar com interfaces de usuário avançadas e personalizadas baseadas em formulários. Pode utilizá-lo para mostrar informação do banco de dados ou de outras localizações, ou para oferecer funcionalidades de entrada de dados. Diferente de ADD RECORD o u MODIFY RECORD, DIALOG lhe dá controle total sobre o formulário, seu conteúdo e os botões de navegação e validação.
Este comando geralmente se chama junto com Open form window para mostrar formulários sofisticados, como é mostrado no exemplo abaixo:
Utilize DIALOG ao invés de ALERT, CONFIRM ou Request quando a informação que deve ser apresentada ou reunida é mais complexa do que esses comandos podem manejar.
Nota: em bancos de dados convertidos, é possível proibir a entrada de dados em campos ou caixas de diálogo (e limitar a entrada de dados a variáveis unicamente) utilizando uma opção nas Preferências de 4D (página Compatibilidade). Esta restrição corresponde ao funcionamento de versões anteriores de 4D.
No parâmetro formulario, pode passar
o nome de um formulário;
a rota (em sintaxe POSIX) para um arquivo json válido contendo uma descrição doe formulário a usar. Veja Form file path;
um objeto que contenha a descrição do formulário.
Opcionalmente, pode passar parâmetros ao formulário mediante o objeto formData. Toda propriedade de objeto formData estará disponível desde o contexto de formulário mediante o comando Form. Por exemplo, se passar um objeto que contenha {"version","12"} em formData, poderá obter o valor da propriedade "Version" no formulário chamando:
$v:=Form.version //"12"
O diálogo é aceito se o usuário clicar no botão Aceitar ou pressionar a tecla Enter (teclado numérico) ou se é executado o comando ACCEPT.
Lembre que a validação não faz com que os dados modificados sejam guardados. Se o diálogo inclui campos, deve chamar explicitamente ao comando SAVE RECORD para guardar os dados que tenham sido modificados.
O diálogo é cancelado se o usuário clicar no botão Cancelar ou pressionar a tecla de anulação Esc ou se são executa o comando CANCEL.
Se passar o parâmetro opcional *, o formulário é carregado e mostra na última janela do processo atual e o comando termina sua execução enquanto deixa o formulário ativo em tela.
Este formulário logo reage "normalmente" as ações do usuário e é fechado quando o código 4D relacionado com o formulário (método de objeto ou método de formulário) chama ao comando CANCEL ou ACCEPT Se o processo atual termina, os formulários criados desta forma são fechados automaticamente da mesma forma que se tivesse chamado o comando CANCEL. Este modo de abertura é particularmente útil para mostrar uma palheta flutuante com um documento, sem necessidade de outro processo.
Notas:
O exemplo a seguir pode ser usado para criar uma palheta de ferramentas
`Mostra a palheta de ferramentas
$palette_window:=Open form window("tools";Palette form window)
DIALOG("tools";*) `Devolva o controle imediatamente
`Mostra janela do documento principal
$document_window:=Open form window("doc";Standard form window)
DIALOG("doc")
Em um formulário exibindo o registro de uma pessoa, um botão "Check children" abre um diálogo para verificar/modificar os nomes e idades dos filhos:
Nota: O campo objeto "Children" é representado apenas para mostrar sua estrutura para esse exemplo.
No formulário de verificação, se tiver atribuido algumas propriedades de objeto a variáveis Form:
Abaixo o código para o botão "Check children":
C_LONGINT($win;$n;$i)
C_BOOLEAN($save)
ARRAY OBJECT($children;0)
OB GET ARRAY([Person]Children;"children";$children) //obtém a coleção children
$save:=False //initializa a variável save
$n:=Size of array($children)
If($n>0)
$win:=Open form window("Edit_Children";Movable form dialog box)
SET WINDOW TITLE("Check children for "+[Person]Name)
For($i;1;$n) //para cada child
DIALOG("Edit_Children";$children{$i}) //exibe diálogo preenchido com valores
If(OK=1) //o usuário clica OK
$save:=True
End if
End for
If($save=True)
[Person]Children:=[Person]Children //força a atualização do campo objeto
End if
CLOSE WINDOW($win)
Else
ALERT("No child to check.")
End if
Nota: Esse exemplo exige que a notação de objeto esteja ativada no banco de dados (ver Página Compatibilidade).
O formulário exibe informação para cada campo:
Se os valores forem editados e o botão OK button for clicaod, o campo é atualizado (o registro pai deve ser salvo depois).
O exemplo abaixo usa a rota a um formulário json para exibir os registros em uma lista de empregados:
Open form window("/RESOURCES/OutputPersonnel.json";Plain form window)
ALL RECORDS([Personnel])
DIALOG("/RESOURCES/OutputPersonnel.json";*)
o que retorna:
O exemplo abaixo utiliza um aquivo .json como um objeto e modifica algumas propriedades:
C_OBJECT($form)
$form:=JSON Parse(Document to text(Get 4D folder(Current resources folder)+"OutputPersonnel.json"))
$form.windowTitle:="The Avengers"
$form.pages[1].objects.logo.picture:="/RESOURCES/Images/Avengers.png"
$form.pages[1].objects.myListBox.borderStyle:="double"
Open form window($form;Plain form window)
DIALOG($form;*)
O formulário modificado é devolvido com o título, o logotipo e a borda modificados:
Depois de chamar a DIALOG, se o diálogo é aceito, a variável sistema OK toma o valor 1; se for cancelado toma o valor 0.
Produto: 4D
Tema: Entrada de Dados
Número
40
Modificado: 4D v11 SQL
Modificado: 4D v16 R5
Modificado: 4D v16 R6
Manual de linguagem 4D ( 4D v20)
Manual de linguagem 4D ( 4D v20.1)
Manual de linguagem 4D ( 4D v20.2)
Manual de linguagem 4D ( 4D v20.3)
Manual de linguagem 4D ( 4D v20.4)
Manual de linguagem 4D ( 4D v20.5)
Manual de linguagem 4D ( 4D v20.6)