Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
wiki:2.-desarrollo-app:2.3.-codigo:i.-herencia:start [2018/01/31 16:21] – [Nodo Include-Layout] patriciawiki:2.-desarrollo-app:2.3.-codigo:i.-herencia:start [2023/06/09 12:42] (actual) ary
Línea 1: Línea 1:
 +===== Herencia entre Colecciones =====
 +
 +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 funciones del HIJO. 
 +\\
 +El atributo que se utiliza **inherits** y se define en la declaración de la Colección.
 +\\
 +<code xml>
 +<coll name="EspecialHerencia" title="" filter="" sort="" notab="false" special="true" inherits="groupsFixed" group-swipe="true">
 +</code>
 +\\
 +<note important>Al heredar de una colección la colección HIJO resultante tendrá todos los elementos de Colección PADRE e HIJO, pero en caso de existir duplicidad de algún elemento (group, frame, prop, etc) va a primar lo que esté definido en la colección HIJO</note>
 +\\
 +{{ :wiki:2.-desarrollo-app:2.3.-codigo:i.-herencia:herencia.png?500 |}}
 +\\
 +\\
 +=== Ejemplo: ===
 +\\
 +
 +=== Colección PADRE ===
 +
 +<code xml>
 +<coll name="groupsFixed" title="" filter="" sort="" special="true">
 +    <group name="HEADER" id="999" class="groupfixed_header">
 +        <frame name="frmtitulo" class="frmsuperior">
 +            <prop name="SALIR" type="B" class="btvolversuper" />
 +            <prop name="MENU" type="TL" class="tlsuper" title="Herencia" />
 +            <prop name="MAP_COLORACTIVO" type="T" visible="0" />
 +        </frame>
 +    </group>   
 +    <group name="FOOTER" id="0" class="groupfixed_footer">
 +        <prop name="MAP_GROUP" type="N" visible="0" />
 +        <prop name="MAP_TOTAL_PAGES" type="N" visible="0" />
 +        <frame name="FLOAT_FOOTER_FRAME" class="frmsuperior">
 +            <prop name="MAP_LAST" type="B" img="last.png" title="Anterior" onclick="javascript:prev(self,'ir'); ui.refresh('MAP_LAST', 'MAP_NEXT', 'MAP_LAST_EMPTY');" forecolor="#FFFFFF" width="45%" height="80%" labelwidth="1" imgsel="last-sel.png" disablevisible="MAP_GROUP=1" />
 +            <prop name="MAP_LAST_EMPTY" type="B" bgcolor="#00000000" width="45%" height="80%" labelwidth="1" newline="false" disablevisible="MAP_GROUP&gt;1" />
 +            <prop name="MAP_NEXT" type="B" img="next.png" title="Siguiente " onclick="javascript:next(self,'ir'); ui.refresh('MAP_LAST', 'MAP_NEXT', 'MAP_LAST_EMPTY');" forecolor="#FFFFFF" width="45%" height="80%" labelwidth="1" newline="false" lmargin="6%" imgsel="next-sel.png" disablevisible="MAP_GROUP=MAP_TOTAL_PAGES" />
 +        </frame>
 +    </group>
 +    <group name="Group1" id="1">
 +        <prop name="MENU2" type="TL" class="classtl" title="Este grupo está heredado de una coleccion , junto con los grupos fijos , de arriba y abajo." label-wrap="true" />
 +    </group>
 +    <onback show-wait-dialog="false">
 +        <action name="runscript">
 +            <script language="javascript">
 +           appData.failWithMessage(-11888,"##EXIT##");
 +         </script>
 +        </action>
 +    </onback>
 +</coll>
 +</code>
 +
 +
 +
 +\\
 +<note tip>Nótese el uso del atributo **inherits** en la declaración de la colección HIJO</note>
 +\\
 +=== Colección HIJO ===
 +<code xml>
 +<coll name="EspecialHerencia" title="" filter="" sort="" notab="false" special="true" inherits="groupsFixed" group-swipe="true">
 +    <group name="HEADER" id="999" >
 +        <frame name="frmtitulo" class="frmsuperior">
 +            <prop name="MENU" type="TL" class="tlsuper" title="Herencia" />
 +        </frame>
 +    </group>   
 +    
 +    <group name="Group1" id="1" >
 +    
 +    </group>
 +    
 +    <group name="Group2" id="2">
 +        <include-layout file="EjemploIncludeLayout.xml" group="2" />
 +    </group>
 +    
 +    <before-edit>
 +        <action name="runscript">
 +            <script language="javascript">
 +     self.MAP_GROUP = 1;
 +     self.MAP_TOTAL_PAGES = 2;
 +     self.MAP_COLOR1 = "#FFFFFF";
 +     self.MAP_COLOR2 = "#000000";
 +     
 +     </script>
 +        </action>
 +    </before-edit>
 +</coll>
 +</code>
 +
 +=====Nodo Include-Layout=====
 +\\
 +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**.\\
 +\\
 +<code xml>
 +    <include-layout file=<nowiki>"MisBotones.xml"</nowiki> group="1" frame="todo" />
 +</code>    
 +\\
 +**Colección de ejemplo donde usamos el include-layout.**\\
 +\\
 +<code xml>
 +   <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>
 +</code>
 +\\
 +**Definición del fichero <nowiki>"MisBotones.xml@</nowiki>, la estructura de estos ficheros debe ser de forma no jerárquica.**\\
 +\\
 +<code xml>
 +  <?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>
 +
 +</code>
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +