4D v16.3

EXECUTE METHOD IN SUBFORM

Página Inicial

 
4D v16.3
EXECUTE METHOD IN SUBFORM

EXECUTE METHOD IN SUBFORM 


 

EXECUTE METHOD IN SUBFORM ( objetoSubForm ; nomeMetodo {; retorno {; param} {; param2 ; ... ; paramN}} ) 
Parâmetro Tipo   Descrição
objetoSubForm  Texto in Nome de objeto subformulário
nomeMetodo  Texto in Nome do projeto de método a ser executado
retorno  Operador, Variável in * Se método não retornar um valor
in Valor retornado pelo método
param  Expression in Parâmetros a passar ao método

O comando EXECUTE METHOD IN SUBFORM pode ser utilizado para executar o método de projeto nomeMetodo no contexto do sub formulário objetoSubform.

O método de projeto chamado pode receber chamadas 1 a X parâmetros em param e devolver um valor em retorno. Passe * no parâmetro retorno se o método não devolve parâmetros.

Pode passar em nomeMetodo o nome de todo método de projeto acessível desde o banco ou o componente que executa o comando. O contexto de execução é conservado no método chamado, o que significa que o formulário atual e o evento formulário atual seguem definidos. Se o sub formulário provêm de um componente, o método deve pertencer ao componente e ter a propriedade "Compartilhado entre os componentes e o banco local".

Este comando deve ser chamado no contexto do formulário pai (contém o objeto objetoSubForm), por exemplo via o método de formulário.

Nota: O método nomeMetodo não é executado se objetoSubForm não se encontra na página atual ou se não foi instanciado.

Dado o formulário "ContactDetail" utilizado como subformulário no formulário pai "Empresa". O objeto subformulário que contém o formulário ContactDetail é chamada "ContactSubform". Imagine que queremos modificar a aparência de certos elementos do subformulário de acordo ao valor dos campos da empresa (por exemplo, "nomcontact" deve passar a vermelho quando [Empresa]Cidad="Nova York" e a azul quando [Empresa]Cidade="San Diego"). Este mecanismo é implementado através do método SetToColor. Para poder obter este resultado, o método SetToColor não pode ser chamado diretamente desde o processo do evento de formulário "On Load" do formulário pai Empresa porque o objeto "contactname" não pertence ao formulário atual, mas ao formulário mostrado no objeto subformulário "ContactSubform". O método deve portanto ser executado utilizando o comando EXECUTE METHOD IN SUBFORM para que funcione corretamente.

 Case of
    :(Form event=On Load)
       Case of
          :([Empresa]Cidade ="Nova York")
             $Color:=$Red
          :([Empresa]Cidade ="San Diego")
             $Color:=$Blue
          Else
             $Color:=$Black
       End case
       EXECUTE METHOD IN SUBFORM("ContactSubform";"SetToColor";*;$Color)
 End case

Desenvolva um banco que será utilizado como componente. Inclui um formulário projeto compartilhado (chamado, por exemplo Calendar) que contém variáveis dinâmicas além de um método projeto público que permite ajustar o calendário: SetCalendarDate(varDate).
Se este método foi utilizado diretamente no método do formulário Calendar, pode chamar diretamente o evento "On Load":

 SetCalendarDate(Current date)
Mas, no contexto do banco local, imaginemos que um formulário projeto contém os dois subformulários "Calendar", nos objetos subformulário chamados "Cal1" e "Cal2". Deve definir a data de Cal1 em 01/01/10 e a data de Cal2 em 05/05/10. Não pode chamar diretamente a SetCalendarDate porque o método não "sabe" que formulários e variáveis aplicar. Portanto, deve chamá-lo através do seguinte código: 

 EXECUTE METHOD IN SUBFORM("Cal1";"SetCalendarDate";*;!01/01/10!)
 EXECUTE METHOD IN SUBFORM("Cal2";"SetCalendarDate";*;!05/05/10!)

Exemplo avançado: no mesmo contexto anterior, este exemplo oferece um método genérico:

  // Conteúdo do método SetCalendarDate
 C_DATE($1)
 C_TEXT($2)
 Case of
    :(Count parameters=1)
  // Execução normal do método (como se fosse
  // executado desde os mesmos formulários)
       ou
  //especificamente para um contexto (ver caso 2)
 
    :(Count parameters=2)
  // chamada externa, necessita um contexto
  // chamada recursiva com um só parâmetro
       EXECUTE METHOD IN SUBFORM($2;"SetCalendarDate";*;$1)
 End case

Se este comando é executado corretamente, a variável sistema OK toma o valor 1; do contrário toma o valor 0.

 
PROPRIEDADES 

Produto: 4D
Tema: Linguagem
Número 1085

Este comando modifica a variável sistema OK

 
HISTÓRIA 

Criado por: 4D v12

 
ARTICLE USAGE

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)