4D v16.3EXECUTE METHOD IN SUBFORM |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
EXECUTE METHOD IN SUBFORM
|
EXECUTE METHOD IN SUBFORM ( objetoSubForm ; nomeMetodo {; retorno {; param} {; param2 ; ... ; paramN}} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
objetoSubForm | Texto |
![]() |
Nome de objeto subformulário | |||||
nomeMetodo | Texto |
![]() |
Nome do projeto de método a ser executado | |||||
retorno | Operador, Variável |
![]() |
* Se método não retornar um valor | |||||
![]() |
Valor retornado pelo método | |||||||
param | Expression |
![]() |
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)
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.
Produto: 4D
Tema: Linguagem
Número
1085
Criado por: 4D v12
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)