4D v16.3

EXECUTE METHOD IN SUBFORM

Inicio

 
4D v16.3
EXECUTE METHOD IN SUBFORM

EXECUTE METHOD IN SUBFORM 


 

EXECUTE METHOD IN SUBFORM ( objetoSubForm ; nomMetodo {; retorno {; param} {; param2 ; ... ; paramN}} ) 
Parámetro Tipo   Descripción
objetoSubForm  Texto in Nombre del objeto subformulario
nomMetodo  Texto in Nombre del método proyecto a ejecutar
retorno  Operador, Variable in * si el método no devuelve un valor
in Valor devuelto por el método
param  Expresión in Parámetro(s)a pasar al método

El comando EXECUTE METHOD IN SUBFORM permite ejecutar el método proyecto nomMetodo en el contexto del subformulario objetoSubform.

El método de proyecto llamado puede recibir llamadas 1 a X parámetros en param y devolver un valor en retorno. Pase * en el parámetro retorno si el método no devuelve parámetros.

Puede pasar en nomMetodo el nombre de todo método de proyecto accesible desde la base o el componente que ejecuta el comando. El contexto de ejecución se conserva en el método llamado, lo que significa que el formulario actual y el evento formulario actual siguen definidos. Si el subformulario proviene de un componente, el método debe pertenecer al componente y tener la propiedad "Compartido entre los componentes y la base local".

Este comando debe llamarse en el contexto del formulario padre (contiene el objeto objetoSubForm), por ejemplo vía el método de formulario.

Nota: el método nomMetodo no se ejecuta si objetoSubForm no se encuentra en la página actual o si no ha sido instanciado.

Dado el formulario "ContactDetail" utilizado como subformulario en el formulario padre "Empresa". El objeto subformulario que contiene el formulario ContactDetail se llama "ContactSubform". Imagine que queremos modificar la apariencia de ciertos elementos del subformulario de acuerdo al valor de los campos de la empresa (por ejemplo, "nomcontact" debe pasar a rojo cuando [Empresa]Ciudad="Nueva York" y a azul cuando [Empresa]Ciudad="San Diego"). Este mecanismo se implementa vía el método SetToColor. Para poder obtener este resultado, el método SetToColor no puede llamarse directamente desde el proceso del evento de formulario "On Load" del formulario padre Empresa porque el objeto "contactname" no pertenece al formulario actual, sino al formulario mostrado en el objeto subformulario "ContactSubform". El método debe por lo tanto ejecutarse utilizando el comando EXECUTE METHOD IN SUBFORM para que funcione correctamente.

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

Desarrolle una base que se utilizará como componente. Incluye un formulario proyecto compartido (llamado por ejemplo Calendar) que contiene variables dinámicas así como también un método proyecto público que permite ajustar el calendario: SetCalendarDate(varDate).
Si este método se utilizó directamente en el método del formulario Calendar, puede llamar directamente el evento "On Load":

 SetCalendarDate(Current date)
Pero, en el contexto de la base local, imaginemos que un formulario proyecto contiene los dos subformularios "Calendar", en los objetos subformulario llamados "Cal1" y "Cal2". Debe definir la fecha de Cal1 en 01/01/10 y la fecha de Cal2 en 05/05/10. No puede llamar directamente a SetCalendarDate porque el método no "sabrá" que formularios y variables aplicar. Por lo tanto, debe llamarlo vía el siguiente código: 

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

Ejemplo avanzado: en el mismo contexto anterior, este ejemplo ofrece un método genérico:

  // Contenido del método SetCalendarDate
 C_DATE($1)
 C_TEXT($2)
 Case of
    :(Count parameters=1)
  // Ejecución estándar del método (como si se hubiera
  // ejecutado desde el formularios mismo)
       o
  //especificamente para un contexto (ver caso 2)
 
    :(Count parameters=2)
  // Llamada externa, necesita un contexto
  // Llamada recursiva con un solo parámetro
       EXECUTE METHOD IN SUBFORM($2;"SetCalendarDate";*;$1)
 End case

Si este comando se ejecuta correctamente, la variable sistema OK toma el valor 1; de lo contrario toma el valor 0.

 
PROPIEDADES 

Producto: 4D
Tema: Lenguaje
Número 1085

Este comando modifica la variable sistema OK

 
HISTORIA 

Creado por: 4D v12

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)