4D v14.3Interacción entre componentes y bases locales |
||
|
4D v14.3
Interacción entre componentes y bases locales
Interacción entre componentes y bases locales
Cuando un componente se instala en una base local, su nombre aparece en la Current form table del Explorador de la base local, en el tema Métodos componente. Los métodos proyecto compartidos se listan como listas jerárquicas y si el componente es interpretado, su contenido se muestra en el área de previsualización. Para mayor información sobre la definición de los métodos compartidos, consulte Compartir métodos proyecto. Ciertos tipos de objetos definidos por un componente se desarrollan en un espacio de ejecución propio, el cual elimina las posibilidades de conflictos con los objetos existentes de la base local y con otros componentes. Estos objetos se llaman “no compartidos” o “particionados.” Por ejemplo, las variables están particionadas, lo cual significa que una variable <>Mivar de tipo Entero largo creada y manipulada por un componente puede coexistir con una variable <>Mivar variable de tipo Texto creada y utilizada por la base local (o por otro componente). Otros objetos comparten el mismo espacio de ejecución entre la base local y los componentes. El empleo de estos objetos requiere tomar más precauciones pero permite a la base local y a los componentes comunicarse mutuamente. Estos objetos se llaman “compartidos” o “no-particionados”. Por ejemplo, los conjuntos son no particionados, lo cual significa que si un componente crea el conjunto miConjunto, se borrará si la base local ejecuta la instrucción: CLEAR SET(mySet) Los objetos no compartidos (particionados) entre los componentes y las bases locales son los siguientes:
Los objetos compartidos (no particionados) entre los componentes y las bases locales son los siguientes:
Nota: por supuesto, los objetos no utilizables presentes en una base matriz son ignorados por la base local (ver Objetos utilizables y no utilizables). Todos los métodos proyecto de una base matriz se incluyen por definición en el componente (la base es el componente), lo cual significa que pueden ser llamados y ejecutados por el componente. Por otra parte, por defecto estos métodos de proyecto no serán visibles, ni pueden ser llamados por la base local. En la base matriz debe designar explícitamente los métodos que quiere compartir con la base local. Estos métodos de proyecto serán visibles en la Current form table del Explorador y pueden llamarse en el código de la base local (pero no pueden ser modificados en el editor de métodos de la base local). Estos métodos constituyen los puntos de entrada en el componente. Por el contrario, por razones de seguridad, por defecto un componente no puede ejecutar métodos proyecto que pertenezcan a la base local. En algunos casos, podría necesitar autorizar a un componente a acceder a los métodos de proyecto de su base local. Para hacerlo, debe designar explícitamente los métodos proyecto de la base local que quiere que sean accesibles a los componentes. Esta configuración se efectúa vía la propiedad Compartido por componentes y base principal en la caja de diálogo de propiedades de los métodos: También es posible aplicar esta propiedad a los diferentes métodos a la vez vía la caja de diálogo de atributos globales (accesible desde el menú contextual del Explorador) (ver Cambio global de atributos de métodos). El efecto de esta opción está definido por el contexto de utilización de la base: si la base se utiliza como un componente, el método será accesible en la base local y visible en el Explorador. Si la base es una base local, el método será utilizable por los componentes. Puede compartir los formularios de la base matriz y utilizarlos como subformularios en la base local. Del lado del componente (base matriz), sólo los subformularios proyecto pueden especificarse como subformularios publicados.
Del lado de la base principal, es imperativo que los subformularios provenientes de componentes se utilicen en modo página: en el editor de formularios, cuando el objeto subformulario se selecciona en el formulario padre, deselecciona la opción Subformulario listado en el tema "Subformulario" de la Lista de Propiedades. Luego elija, <Ninguno> en el menú "Tabla". Los formularios publicados por los componentes se listan en el menú "Formulario detallado". Su nombre es seguido por el del componente entre paréntesis. Puede seleccionar de esta lista el formulario a utilizar en la lista "Formulario detallado". Una nueva instancia del objeto seleccionado se crea inmediatamente en el formulario. Los componentes y las bases locales no comparten las variables locales proceso o interproceso. La única forma de acceder a las variables del componente desde la base local y viceversa es utilizando punteros. Ejemplo utilizando un array:
Ejemplos utilizando variables: El uso de punteros para permitir la comunicación de los componentes y la base local requiere que se tengan en cuenta las siguientes especificaciones:
Aunque los componentes no pueden utilizar tablas, los siguientes comandos pueden llamarse dentro de un componente: DEFAULT TABLE En efecto, estos comandos son útiles cuando un componente debe utilizar tablas de la base local. En este caso los punteros permitirán a la base local y al componente comunicarse entre sí. Por ejemplo, este es un método que puede ser llamado desde un componente: C_LONGINT($1) //Número de tabla en la base local Excepto por Comandos no utilizables, un componente puede utilizar todo comando del lenguaje 4D. Cuando se llaman los comandos desde un componente, se ejecutan en el contexto del componente, excepto por el comando EXECUTE METHOD que utiliza el contexto del método especificado por el Los comandos SET DATABASE PARAMETER y Get database parameter son la excepción a este principios: su alcance es global a la base. Cuando estos comandos son llamados desde un componente, se aplican a la base local. Además, se han definido medidas específicas para los comandos Structure file y Get 4D folder cuando se utilizan en el marco de componentes (ver el manual de Lenguaje). El comando COMPONENT LIST permite conocer la lista de los componentes cargados por la base local. Cuando utiliza componentes no compilados, su código aparece en el depurador estándar de la base local. El depurador respeta los espacios de ejecución de los objetos particionados. Si muestra el valor de la variable var1 de la base local en la ventana de evaluación luego ejecute el código que pertenece al componente que contiene igualmente una variable var1, el valor mostrado no se actualizará. Debe mostrar otra instancia de la variable en la ventana de evaluación para obtener su valor en el contexto actual. |
PROPIEDADES
Producto: 4D ARTICLE USAGE
Manual de Diseño ( 4D v14 R2) |