4D v16.3CALL FORM |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
CALL FORM
|
CALL FORM ( janela ; metodo {; param}{; param2 ; ... ; paramN} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
janela | refJan |
![]() |
Número de referência da janela | |||||
metodo | Texto |
![]() |
Nome do método de projeto a chamar | |||||
param |
![]() |
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 metodo, passe o nome de método de projeto que se executará no contexto de processo pai da janela.
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 Passando Parâmetros para Métodos). 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:
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")
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")
CALL FORM($win;"configure";param1;param2)
DIALOG("form")
Produto: 4D
Tema: Formulários
Número
1391
Criado por: 4D v15 R5
Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)