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/04/24 12:17]
127.0.0.1 editor externo
wiki:2.-desarrollo-app:2.3.-codigo:i.-herencia:start [2023/06/09 11:42] (actual)
ary
Línea 1: Línea 1:
-{{indexmenu_n>3}}+===== Herencia entre Colecciones =====
  
-/* +XOne ha implementado un atributo a nivel de Colección que permite heredar Grupos, Frames, Propiedades y Nodos. 
-===== Nodo Inflate =====+
 \\ \\
- +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 HIJOpues siempre van a prevalecer las definiciones y funciones del HIJO
-Nodo que permite agregar un conjunto de propsdefinidos en un xml+
 \\ \\
- +El atributo que se utiliza **inherits** 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:**+
 \\ \\
 <code xml> <code xml>
-   Definición en la colección +<coll name="EspecialHerenciatitle="" filter="" sort="" notab="false" special="true" inherits="groupsFixed" group-swipe="true"> 
-   <inflate file="MiBarraDeBotonesGuay.xml" />+</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: === 
 +\\
  
-   Estructura del fichero MiBarraDeBotonesGuay.xml +=== Colección PADRE ===
-   <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>+
  
 +<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> </code>
-\\ 
  
-^CARACTERÍSTICAS^ + 
-|Tendría en cuenta el orden en el que se “inflan” los ficheros, es decir, si <nowiki>FrameBotonera</nowiki> 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.|+
 \\ \\
-*/+<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===== =====Nodo Include-Layout=====
 \\ \\