| 4D v20.1DIALOG | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v20.1
 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 ifNota: 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)
	
	
	
 Adicionar um comentário
Adicionar um comentário