El nodo frame permite crear áreas visuales en la ventana de edición. En la web sería el equivalente a la etiqueta DIV.

Para respetar compatibilidad con lo anterior, el nodo frame y su utilización en los prop no afecta la interpretación de las maquinarias que no lo soporten.

Sintáxis:

<frame name="id1" ... />
	<prop name="PRUEBA" ... />
	<prop name="PRUEBA2" ... />
	<frame name="id2" ... />
		<prop name="PRUEBA3" ... />
		<prop name="PRUEBA4" ... />
	</frame>
</frame>

Los nodos frame pueden estar anidados, es decir, un frame puede estar dentro de otro frame y así sucesivamente.

Los nodos prop dentro de un frame se comportan igual que su ubicación en el grupo, si tiene newline=“false” se ubica a continuación de la propiedad, de lo contrario en la parte inferior. En el frame se interpretan para todos los prop los atributos lmargin (margen a la izquierda),tmargin(margen superior),rmargin(margen a la derecha) y bmargin(margen inferior).


Frame flotante

Un frame puede posicionarse de forma flotante, “flotando” sobre el resto de la pantalla, sin que el fondo vea afectado su posicionamiento por la ubicación de este frame “flotante.

El posicionamiento se realiza con respecto al margen superior izquierdo, mediante los atributos “top” y “left”.

Evitar en la medida de lo posible dar valores de ancho y alto del frame flotante en porcentaje, utilizad píxeles para un mejor funcionamiento.

<frame name="frmFlotante" floating="true" top="300p" left="200p" width="600p" height="300p" class="FrameAnimateFromRight" >
	.....
</frame>

A continuación se muestra una distribución visual y como se pueden definir los frames, sus posiciones, relación entre ellos y los elementos que contienen:


ATRIBUTOS DESCRIPCIÓN
frame cadena con cualquier formato. Indica el nombre del frame padre al que pertenece este frame.
newline true | false. (Valor por defecto “true”) Indica si el frame se ubica a continuación o al lado del elemento anterior.
forecolor cadena formato color.(Valor por defecto “#000000”) Color con que se dibujan los bordes del frame.
bgcolor cadena formato color. (Valor por defecto “#00000000” transparente) Color de fondo del frame. Cumple el formato para degradados rectangulares ##COLOR1,#COLOR2,#COLOR3
imgbk cadena fromato ruta.(Valor por defecto “” vacío) Imagen de fondo del frame.
framebox true | false. (Valor por defecto “true”)Permite mostrar u ocultar la caja de bordes alrededor del frame.
border-width numérico entero. (Valor por defecto “1”) .Ancho del borde alrededor del frame.
border-left true | false. (Valor por defecto “true”). Permite definir si se muestra o no el borde izquierdo.
border-top true | false. (Valor por defecto “true”). Permite definir si se muestra o no el borde superior.
border-right true | false. (Valor por defecto “true”). Permite definir si se muestra o no el borde derecho.
border-bottom true | false. (Valor por defecto “true”). Permite definir si se muestra o no el borde inferior.
align left | right | center | top | bottom. (Valor por defecto “left”). Puede ser una combinación de esos valores separados por | y posiciona todos los elementos dentro del frame en la ubicación derivada de la combinación usada. Hay algunas combinaciones no lógicas se realiza solo las combinaciones que se puede realizar Ej. top | bottom, se descarta la combinación. center | top, ubicado al centro en la parte superior del frame. center, ubicado en el centro de la pantalla. center | left. Ubicado en el centro horizontal y a la derecha
lmargin Númericofloat.(Valor por defecto “0”). Margen a la izquierda a partir del cual se ubica del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
tmargin Númericofloat.(Valor por defecto “0”). Margen superior a partir del cual se ubica del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
rmargin Númericofloat.(Valor por defecto “0”). Margen a la derecha a partir del cual se ubica del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
bmargin Númericofloat.(Valor por defecto “0”). Margen inferior a partir del cual se ubica del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
lpadding Númericofloat.(Valor por defecto “0”). Margen interior del frame a la derecha a partir del cual se ubican los elementos que estén dentro del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
tpadding Númericofloat.(Valor por defecto “0”). Margen interior del frame en la parte superior a partir del cual se ubican los elementos que estén dentro del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
rpadding Númericofloat.(Valor por defecto “0”). Margen interior del frame a la izquierda a partir del cual se ubican los elementos que estén dentro del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
bpadding Númericofloat.(Valor por defecto “0”). Margen interior del frame en la parte inferior a partir del cual se ubican los elementos que estén dentro del frame. Su valor es la multiplicación de un ancho de carácter con el Font estándar del dispositivo por el valor indicado.
width Tipo dimensión* (valor por defecto ajuste a los hijos.) Permite definir el ancho del frame en el espacio que se ubique. Si no está definido, se ajusta al tamaño de las propiedades que lo contienen.
height Tipo dimensión* (valor por defecto ajuste a los hijos.) Permite definir el alto del frame en el espacio que se ubique. Si no está definido, se ajusta al tamaño de las propiedades que lo contienen.
floating Valores true o false(el valor false es el predeterminado).Si es true indica que el frame es flotante y se dibujará en las coordenadas especificadas en left y top por encima de cualquier otro control. La posición de frame flotante es relativa al grupo cuando no está definido el atributo frame en el caso contrario (que esté definido el atributo frame)su posición será relativa al frame padre.
top Valor decimal en pixels. Indica la coordenada vertical donde se posicionará el frame.
scroll Valores true o false(el valor false es el predeterminado). Si es true indica que permite hacer scroll si el área de contenido del frame es más grande.
left Valor decimal en pixels. Indica la coordenada horizontal donde se posicionará el frame.
animation in Valor string. Indica la macro de animación para mostrar el frame.
animation out Valor string. Indica la macro de animación para ocultar el frame.
animation-in-delay Valor decimal en milisegundos. Indica la duración de la animación para mostrar el frame.
animation-out-delay Valor decimal en milisegundos. Indica la duración de la animación para ocultar el frame.
disablevisible Atributo que permite decidir la visibilidad de forma condicional, estará invisible MIENTRAS se cumpla la condición.
ignore-touch-on-transparent-area Atributo que utilizado en un frame flotante (floating=“true), al ponerlo a true, evita que se pulse sobre un área transparente del frame flotante y se pase el evento touch al contenido que se ve por debajo del frame flotante.



      <frame name="floatadd1" top="920p" left="610p" width="90p" height="90p" floating="true">
            <prop name="BTADD1" type="B" visible="1" labelwidth="0" method="ExecuteNode(nuevo)" width="75p" img="add.png" imgsel="add_click.png" />
      </frame>
 <group name="General" id="1">
        <frame name="frmgrid" width="100%">
          <prop name="MAP_FECHA" type="D" visible="4" labelwidth="0" width="200p" text-align="center" textfont-size="8" />
          <prop name="MAP_DESCRIPCION" type="T" visible="4" labelwidth="0" width="520p" text-align="center" textfont-size="8" newline="false" />
        </frame>
        <frame name="frmTitleCalendario" height="100%" align="center|top" width="96%" lmargin="2%" animation-in="##PUSH_IN##" animation-out="##ROTATE3D_OUT##">
          <prop name="FECHA" type="D" visible="1" datefrom="true" dateto="true" title="Fecha:" class="classdate" />
          <prop name="MAP_TIPO" type="T" mapcol-values="Info: Azul,Visita: Naranja,Pedido: Verde" visible="0" />
          <prop name="HORAINI" type="TT" mask="Hh#:#Mm" visible="1" timefrom="true" title="Hora Inicio:" class="classtime" />
          <prop name="HORAFIN" timeto="true" type="TT" visible="1" mask="Hh#:#Mm" title="Hora Fin:" class="classtime" />
          <prop name="TIPO" type="T" showinline="true" class="classT" visible="1" title="Tipo:" linkedto="MAP_TIPO" linkedfield="DATA" onchange="refresh(TIPO)" />
          <prop name="DESCRIPCION" type="T" visible="1" title="Descripción:" class="classTMultiline" />
          <prop name="MAP_COLORVIEW" type="T" visible="0" colorview="true" />
          <prop name="MAP_BUTCANCELAR" type="B" caption="CANCELAR" class="btnButton" method="ExecuteNode(onback)" />
          <prop name="MAP_BUTACEPTAR" type="B" caption="ACEPTAR" class="btnButton" method="ExecuteNode(guardar)" newline="false"  />
        </frame>
        <frame name="floatadd1" top="900p" left="610p" width="90p" height="90p" floating="true">
          <prop name="BTADD1" type="B" visible="1" labelwidth="0" method="ExecuteNode(addcalendario)" width="75p" img="add.png" imgsel="add_click.png" />
        </frame>
      </group>
 <group name="Antes" id="2" class="coll colorGrupo" height="93%">
        <frame name="frmGeneral4" imgbk="fondo-registro.png" align="top|center">
            <frame name="frmmaparuta" tmargin="2%"  width="90%" height="72%" align="center" class="frmconborde" >
                <prop name="DatosMapaVer" class="mapaRutaRealizada" type="Z" visible="1" contents="DatosMapaViaje" />
                <contents name="DatosMapaVer" src="DatosMapaViaje" filter="ID=-1"  />
                <contents name="DatosMapaViaje" src="DatosMapaViaje" />
            </frame>
            <frame name="frmmaparuta2" tmargin="1%"  width="90%" height="12%" align="center"  class="frmconborde" >
                <prop name="MAP_LYT1" title="Inicio viaje" height="24%" type="B" width="30%" fontsize="2" locked="true" text-align="center"  />
                <prop name="MAP_LYT2" title="Ruta" type="B" height="24%" width="33%" newline="false"  fontsize="2" locked="true" text-align="center" />
                <prop name="MAP_LYT3" title="Fin viaje" type="B" height="24%" width="33%" newline="false"  fontsize="2" locked="true" text-align="center" >
                <frame name="frmmaparuta3" width="33%" height="66%" align="center" newline="true" tmargin="2%">
                    <prop name="MAP_LY1" type="B" width="33%" heightx="98%" img="coche-averia.png" locked="true" keep-aspect-ratio="true"/>
                </frame>
                <frame name="frmmaparuta4" width="33%" height="66%"  align="center" newline="false" tmargin="2%" >
                    <prop name="MAP_LY2" type="B" width="33%" heightx="98%" img="viaje0.png"  locked="true" keep-aspect-ratio="true"/>
                </frame>
                <frame name="frmmaparuta5" width="33%"  height="66%" align="center" newline="false" tmargin="2%" >
                    <prop name="MAP_LY3" type="B" width="33%" heightx="98%" img="coche-disponible.png" locked="true" keep-aspect-ratio="true"/>
                </frame>
            </frame>
 
 
            <frame name="frmButton2" width="100%" height="10%" tmargin="1%" align="center">
                <prop name="MAP_BT_UN2" title="Datos" onclick="javascript:irGrupo('1');" type="B" visible="1" class="propBTInferiorPerfil" bgcolor="#84B819" forecolor="#FFFFFF" 
                 width="28%" lmargin="4%" />    
                <prop name="MAP_BT_DO2" title="Ruta Realizada" onclick="javascript:irGrupo('2');" type="B" visible="1" class="propBTInferiorPerfil" bgcolor="#FFFFFF" 
                forecolor="#84B819" width="28%" lmargin="4%" newline="false"/>  
                <prop name="MAP_BT_TRE2" title="Fotos" onclick="javascript:irGrupo('3');" type="B" visible="1" class="propBTInferiorPerfil" bgcolor="#84B819" forecolor="#FFFFFF" 
                width="28%" lmargin="4%" newline="false" />    
            </frame>
        </frame>
    </group>


Se puede definir en la cabecera de los grupos o en los frames el efecto de entrada que se quiere por defecto para el grupo o frame…

<group name="General" id="1" height="100%" animation-out="animación de salida" animation-in="animación de entrada" >
<frame name="frmFlotante" floating="true" top="300p" left="200p" width="600p" height="300p" class="FrameAnimateFromRight" >

.FrameAnimateFromTop
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Entra y sale por arriba. */
	animation-in:##PUSH_DOWN_IN##;		/* Aparece por arriba */
	animation-out:##PUSH_OUT##;		/* Se va por arriba */
}
 
.FrameAnimateFromBottom
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Entra y sale por abajo. */
	animation-in:##PUSH_IN##;		/* Aparece por abajo */
	animation-out:##PUSH_DOWN_OUT##; 	/* Se va por abajo */
}
 
.FrameAnimateFromRight
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Entra y sale por la derecha. */
	animation-in:##RIGHT_IN##;
	animation-out:##LEFT_OUT##;
}
 
.FrameAnimateFromLeft
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Entra y sale por la izquierda. */
	animation-in:##LEFT_IN##;
	animation-out:##RIGHT_OUT##;
}
 
.FrameAnimateRotate3D
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Entra y sale rotando en 3D. */
	animation-in:##ROTATE3D_IN##;
	animation-out:##ROTATE3D_OUT##;
}
 
.FrameAnimateAlpha
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* Aparece y desaparece;. */
	animation-in:##ALPHA_IN##;
	animation-out:##ALPHA_OUT##;
 
	/* ZOOM. */
	animation-in:##ZOOM_IN##;
	animation-out:##ZOOM_OUT##;
}
 
.FrameAnimateZoom
{
	animation-in-delay:500;
	animation-out-delay:500;
 
	/* ZOOM. */
	animation-in:##ZOOM_IN##;
	animation-out:##ZOOM_OUT##;	
}

Tipo dimensión: Es un tipo de dato para los atributos de dimensiones en pantalla. Puede tener los siguientes formatos:

  • N%: Permite definir en porcientos del display. Ej.width=”50%”
  • N: Permite definir en DIP, teniendo en cuenta la densidad del display. Ej.width=”56”
  • Np: Permite definir las dimensiones en pixels. Ej.height=”100p” 



Es un panel deslizante, al estilo del navigation drawer, pero que aparece el parte inferior de la pantalla. Se define a nivel de nodo frame, este último debe ser flotante.

Attributos Descripción
initial-state Define el estado inicial como aparece el control. Puede tener los siguientes valores:
-expanded: El control aparece expandido ocupando el 100% del tamaño que se le asignara.
-collapsed: El control aparece contraído ocupando una pequeña parte de la pantalla.
-hidden: El control aparece oculto.
Behavior Define el comportamiento del control, es este caso su valor es bottom-sheet.

Metodos para manejarlo por script:

setBottomSheetState Cambia el estado inicial del control, sus valores son los mismos del atributo initial-state.


Ejemplos:

Definición del nodo.
<frame name="bottom_sheet_ejemplo" 
      initial-state="collapsed" floating="true" left="150p" behavior="bottom-sheet"  width="80%" height="80%">
          <prop name="MAP_HOLA_BOTTOM" type="TL" labelwidth="10" width="100%" 	height="10%" title="Hola bottom-sheet" bgcolor="#FFFFFF"/>
          <prop name="MAP_TYPEZ" type="Z" contents="Usuarios" bgcolor="#FFFF00" width="100%" height="100%" />
          </frame>
Métodos de script:
var window = ui.getView(self);
window.setBottomSheetState(sProp, "expanded");