¡Esta es una revisión vieja del documento!


XOne ha implementado un atributo a nivel de Colección que permite heredar Grupos, Frames, Propiedades y Nodos. Esta herencia nos permite agilizar la programación de la Aplicación, pero es importante conocer que al heredar de una colección lo que hacemos es simular como una mezcla entre Colección PADRE y Colección HIJO, pues siempre van a prevalecer las definiciones y funicones del HIJO. El atributo que se utiliza inherits y se define en la declaración de la colección.

ATRIBUTOS
file define el nombre del xml donde están definidos los props que se agregaran a la colección.
group define en que grupo se quiere agregar el conjunto de props.
frame define en que frame se quiere agregar el conjunto de props.


Ejemplo:

   Definición en la colección
   <inflate file="MiBarraDeBotonesGuay.xml" />
 
   Estructura del fichero MiBarraDeBotonesGuay.xml
   <xml>
                <frame name=”FrameBotonera” width=”100%” height=”10%” />
   <prop name=”MAP_OK”     frame=”FrameBotonera” type=”B” width=”25%” height=”100%” method=”ExecuteNode(ok)/>
  <prop name=”MAP_SALIR” frame=”FrameBotonera” type=”B” width=”25%” height=”100%” method=”ExecuteNode(salir)/>
  </xml>


CARACTERÍSTICAS
Tendría en cuenta el orden en el que se “inflan” los ficheros, es decir, si FrameBotonera tuviese newline=”false” lo tendría en cuenta con respecto a el prop que este definido antes del inflate.
Si al nodo inflate se le pone atributo group y o frame, estos atributos los podemos heredar a las propiedades de dentro que no los tengan ya definidos.
Sería recursivo, un inflate puede contener otro.
Si que sería un problema tener propiedades con el mismo nombre en un inflate y dentro de la colección real al estilo del problema de la herencia múltiple en C++ y otros.


*/


Permite agregar nodos definidos en otro XML externo.

Ejemplo:

Se pone el siguiente nodo en la colección en la parte donde queramos incluir los controles.
En este nodo se puede definir frame y group para si en el fichero existen props que no tengan definido esto, se les pone lo que se le defina en el nodo Include-Layout.

    <include-layout file=<nowiki>"MisBotones.xml"</nowiki> group="1" frame="todo" />


Colección de ejemplo donde usamos el include-layout.

   <coll name="MenuEntrada" special="true" notab="true">
      	<group name="General" id="1" />
      	<frame name="todo" width="100%" height="100%" scroll="true" />
  <prop group="1" frame="todo" name="MAP_TEXTO_01" type="T" title="Texto #1" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_02" type="T" title="Texto #2" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_03" type="T" title="Texto #3" visible="1" labelwidth="10" width="100%" />
  <include-layout file="MisBotones.xml" group="1" frame="todo" />
  <prop group="1" frame="todo" name="MAP_TEXTO_04" type="T" title="Texto #4" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_05" type="T" title="Texto #5" visible="1" labelwidth="10" width="100%" />
  </coll>


Definición del fichero "MisBotones.xml@, la estructura de estos ficheros debe ser de forma no jerárquica.

  <?xml version="1.0" encoding="iso-8859-1"?>
  <xml>
  <prop name="MAP_SALIR" type="B" title="Salir" visible="1" method="ExecuteNode(salir)" width="100%" height="20%" labelwidth="10" tmargin="0" />
  	<salir refresh="false">
    		<action name="runscript" type="runscript">
      			<script language="javascript">
				appData.failWithMessage(-11888, "##EXITAPP##");
			</script>
    		</action>
  	</salir>
   </xml>