Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
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  Objeto, 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 código desigando por formula en el contexto del subformulario objetoSubform.

El código 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 código no devuelve parámetros.

En formula, usted designa el código 4D que se ejecutará en el contexto del objetoSubform. Puede pasar:

  • un objeto fórmula (ver Objetos Fórmula). Los objetos fórmula pueden encapsular cualquier expresión ejecutable, incluyendo funciones y métodos proyecto;
  • una cadena que contenga el nombre de un método proyecto.

El contexto de ejecución se conserva en el código 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 o función llamado 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: la formula 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 code=On Load)
       Case of
          :([Company]City="New York")
             $Color:=$Red
          :([Company]City="San Diego")
             $Color:=$Blue
          Else
             $Color:=$Black
       End case
       EXECUTE METHOD IN SUBFORM("ContactSubform";Formula(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";Formula(SetCalendarDate);*;!01/01/20!)
 EXECUTE METHOD IN SUBFORM("Cal2";Formula(SetCalendarDate);*;!05/05/20!)

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: Eventos de formulario
Número 1085

Este comando modifica la variable sistema OK

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v12
Modificado: 4D v19 R6

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)