Saltar al contenido principal

Usar un componente en otra aplicación

Objetivo​

Dibujó una tarjeta en la aplicación Productos. Quiere la misma tarjeta en Pedidos: la misma, de modo que arreglarla una vez arregle las dos.

Hay una cosa que configurar, una vez por aplicación: marque «Compartir los componentes de esta aplicación» en la aplicación que los dibuja. Todo lo que dibuja se ofrece entonces a todas las demás aplicaciones del entorno, en su panel Componentes, bajo De otras aplicaciones.

La casilla está desactivada de forma predeterminada, y es deliberado: la mayoría de las aplicaciones no son bibliotecas de componentes, y una aplicación que los publicara por accidente pondría sus formas a medio dibujar en la paleta de todos los demás. La encontrará en Aplicaciones de Studio → Nuevo, o seleccionando una aplicación y pulsando Editar; la lista tiene una columna que muestra qué aplicaciones comparten.

Antes hacía falta un paso más, y ya no

Había una lista Componentes de Studio aparte en el portal del creador, y un botón Mover a compartidos que sacaba un componente de la aplicación en la que se dibujó y lo llevaba a un registro propio. Ambos han desaparecido. Un componente vive donde se dibujó; si busca la página, lo que quiere es el lienzo de la aplicación.

Crear uno​

En la aplicación que contendrá sus componentes, marque Compartir los componentes de esta aplicación, en el cuadro de diálogo Nuevo o en Editar. Después dibuje la pieza en su lienzo —junto a la pantalla, o sobre ella— exactamente como dibujaría cualquier otra cosa. Y luego el paso que importa:

Seleccione lo que dibujó y elija Crear componente.

El componente toma el nombre del objeto a partir del cual lo creó, y ese nombre es lo que ven las demás aplicaciones. Cambie el nombre de la capa y el componente cambia de nombre con ella. Guarde.

Eso es todo lo que hace falta para crear uno. Ya está en la paleta de todas las demás aplicaciones.

Colocarlo en otra aplicación​

Abra el diseñador de la otra aplicación y mire el panel Componentes. Bajo De otras aplicaciones encontrará todos los componentes que han dibujado las demás aplicaciones de la solución, cada uno con la aplicación de la que procede junto a su nombre, porque dos aplicaciones pueden tener una «Tarjeta», y una lista que mostrara dos veces el mismo nombre sería una lista en la que no se podría elegir.

Arrastre uno al lienzo, o seleccione la fila y pulse Intro. Lo que llega es una instancia: una instancia de componente normal, que puede colocar, redimensionar y sobrescribir exactamente igual que una que haya dibujado usted.

Guarde.

Cambiarlo una vez​

Abra la aplicación que dibujó el componente, cámbielo y guarde.

Ahora abra la aplicación que lo colocó. Le indica que la copia se ha actualizado, y el cambio está ahí. Guarde esa aplicación para conservarlo. Ese segundo guardado es deliberado: escribir en el dibujo de alguien porque lo ha abierto no es algo que un diseñador pueda hacer.

Por qué su aplicación guarda una copia​

Abra el documento de la aplicación que lo coloca y encontrará en él los nodos del componente, con identificadores que empiezan por sc_, además de una definición que indica de qué aplicación procede, cómo se llama allí y una revisión.

Esa copia no es un error, y usted nunca la mantiene. Aporta dos cosas:

  • Su aplicación es autosuficiente. Se valida, se empaqueta, se importa y se compila por sí sola. Un componente que no consiguió viajar deja una aplicación atrasada, no una que no se representa.
  • Lo que se entregó es lo que se representa. Una aplicación que obtuviera sus componentes cuando alguien la abre no podría prometer eso.

La copia del original está a la izquierda de su dibujo, en una «estantería», y nunca aparece en una pantalla: es una definición, no contenido. Solo se representan las instancias que usted colocó.

Desactivar el uso compartido​

Desmarque la casilla y los componentes de la aplicación dejan de ofrecerse. Las aplicaciones que ya habían colocado uno lo conservan: su copia vinculada se queda exactamente como estaba, congelada en la revisión que copiaron. Es lo mismo que ocurre cuando se desinstala una aplicación, y por el mismo motivo: una aplicación no debe perder parte de su pantalla porque otra persona haya cambiado un ajuste.

Lo que pierden esas aplicaciones son las actualizaciones: ya nada lleva su copia hacia delante, porque la paleta ya no tiene nada con lo que compararla.

El único componente que no puede usar en otro sitio​

Un componente que lee el estado de pantalla de su propia aplicación. La fila aparece en el panel de la otra aplicación, atenuada, indicando la expresión; por ejemplo, state.showCard.

No es una regla arbitraria. Su componente acabaría en pantallas que no tienen ese campo de estado, así que la expresión sería una dependencia de algo que puede no existir, y fallaría en cualquier pantalla que no lo tuviera. Exponga lo que necesita como una propiedad, y la aplicación que lo coloca la rellena; consulte Reutilizar un diseño con componentes.

Dentro de la aplicación que lo dibujó, el mismo componente funciona exactamente como siempre. La restricción tiene que ver con cruzar el límite, y se nota exactamente una vez, donde se puede explicar.

Eliminar uno​

Elimine el componente en el lienzo de la aplicación que lo dibujó y pulse Guardar.

Si otras aplicaciones lo colocan, se le pregunta antes, y la pregunta las nombra. Eliminarlo también lo quita de esas aplicaciones; la alternativa sería dejarlas dibujando una tarjeta que nadie puede abrir, ya que la paleta no volverá a ofrecerla y ningún diseñador puede llegar a ella.

Cancelar no escribe nada, en ninguno de los dos lados. Su lienzo queda exactamente como está, eliminación incluida, así que la forma de volver atrás es Deshacer.

Pruébelo​

Importe el ejemplo studio-shared-components. Incluye dos aplicaciones: Productos, que dibuja una tarjeta de estadística, y Pedidos, que la coloca. Cambie la tarjeta en Productos, guarde y abra Pedidos.

Relacionado​