| 4D v20.1CALL FORM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v20.1
 CALL FORM 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| CALL FORM ( janela ; metodo {; param}{; param2 ; ... ; paramN} ) | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| janela | refJan |   | Número de referência da janela | |||||
| metodo | Objeto, Texto |   | Nome do método de projeto a chamar | |||||
| param | Expression |   | Parâmetros passados ao método | |||||
O comando CALL FORM executa o método de projeto cujo nome passou em metodo com um ou vários param(s) no contexto de um formulário que se mostra em uma janela, independentemente do processo ao que pertence a janela.
Da mesma forma que na comunicação entre processos baseada nos workers (ver Sobre Workers), um quadro de mensagem está associado a janela e pode ser utilizado quando a janela mostra um formulário (depois do evento On Load). CALL FORM encapsula o nome de método e seus argumentos em uma mensagem que tenha sido enviada no quadro de mensagens da janela. O formulário abaixo, executa a mensagem em seu próprio processo. O processo de chamada pode ser cooperativo o preemptivo, portanto, esta funcionalidade permite a um processo preemptivo intercambiar informação com os formulários.
Em janela, passe o número de referência da janela que mostra o formulário chamado.
Em formula, designe o código 4D que se executará no contexto do processo pai de janela. Pode passar:
Também pode passar parâmetros ao método que utilizam um ou mais parámetros param. Passe os parâmetros da mesma maneira que os passaria a uma subrotina (ver ). Ao iniciar a execução no contexto do formulário, o método recebe os valores parâmetro em $1, $2, etc. Lembre que os arrays não podem ser passados como parâmetros a um método. Além disso, no contexto de comando CALL FORM, as seguintes considerações adicionais devem ser levadas em conta:
Pode utilizar o comando CALL FORM para passar configurações personalizadas a um formulário, por exemplo valores de configuração, sem precisar utilizar variáveis processo:
 $win:=Open form window("form")
 </span>CALL FORM($win;Formula(configure);param1;param2)
 DIALOG("form")
Se quiser abrir duas janelas de diálogo diferentes no mesmo formulário, mas com diferentes cores de fundo e diferentes mensagens. Também deseja enviar mensagens despois e mostrar as mensagens em cada janela de diálogo.
No formulário principal, um botão abre os dois diálogos:
  //Criar método objeto formulários
  // primeira janela
 formRef1:=Open form window("FormMessage";Palette form window;On the left)
 SET WINDOW TITLE("MyForm1";formRef1)
 DIALOG("FormMessage";*)
 SHOW WINDOW(formRef1)
 
  //segunda janela
 formRef2:=Open form window("FormMessage";Palette form window;On the left+500)
 SET WINDOW TITLE("MyForm2";formRef2)
 DIALOG("FormMessage";*)
 SHOW WINDOW(formRef2)
 
  //Enviar cores
 CALL FORM(formRef1;"doSetColor";0x00E6F2FF)
 CALL FORM(formRef2;"doSetColor";0x00F2E6FF)
  //criar  mensagens
 CALL FORM(formRef1;"doAddMessage";Current process name;"Hello Form 1")
 CALL FORM(formRef2;"doAddMessage";Current process name;"Hello Form 2")O método doAddMessage só adiciona uma linha num list box no formulario "FormMessage":
 C_TEXT($1) // nome do chamador
 C_TEXT($2) // mensagem a mostrar
  // reciber mensagem desde $2 e log a mensagem em list box
 $p:=OBJECT Get pointer(Object named;"Column1")
 INSERT IN ARRAY($p->;1)
 $p->{1}:=$1+" sends "+$2Em execução, obtém o seguinte resultado:

Depois pode adicionar outras mensagens executando o comando CALL FORM novamente:
 CALL FORM(formRef1;"doAddMessage";Current process name;"Hello 2 Form 1")
 CALL FORM(formRef2;"doAddMessage";Current process name;"Hello 2 Form 2")
	Produto: 4D
	Tema: Eventos de formulário
	Número 
        1391
        
        
        
	
	Criado por: 4D v15 R5
	Modificado: 4D v16 R4
	Modificado: 4D v19 R6
	
	
	
	Manual de linguagem 4D ( 4D v20)
	
	Manual de linguagem 4D ( 4D v20.1)
	
	
 Adicionar um comentário
Adicionar um comentário