Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
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 "+$2
Em 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 R7)