Explicación del código
Imagen estanteria
IMPORTANTE
- Todas las imágenes de los libro deben estar guardadas en la carpetas files de la aplicación.
- La imagen de fondo se guarda en la carpeta icons
- Además, todas deben estar guardadas en la base de datos de la aplicación.
Código de la colección PictureMAP
Código | Explicación |
---|---|
show-no-data=“false” | No muestra el mensaje de que no hay datos si no hay datos. |
type=“Z” | Indica el tipo de datos de la propiedad.. |
viewmode=“picturemap” | Indica que el contents en vez de aparecer en modo “GRID” se verá como una imagen sensible en algunos puntos. |
method=“executenode(reservar)“ | Al pulsar sobre un libro se indica que se va a reservar y cambia su estado. |
method=”executenode(entregar)“ | Al pulsar sobre un libro se indica que se va a entregar y cambia su estado. |
Ejemplo de código de la colección de PictureMAP:
En esta colección maquetamos la pantalla del móvil, es decir, distribuimos la pantalla según la información que se quiera mostrar.
<coll name="PictureMAP" title="PictureMAP" sql="" objname="PictureMAP" updateobj="PictureMAP" progid="ASData.CASBasicDataObj" filter="" sort="" notab="true" show-no-data="false"> <group name="General" id="1"> <frame name="F1" width="100%" height="100%" align="top|center"> <!-- Contents de la estantería para seleccionar pulsando un libro, viewmode="picturemap" --> <prop name="@contentLibros" type="Z" contents="contentLibros" imgbk=".\icons\estanteria.png" viewmode="picturemap" width="800px" /> <contents name="contentLibros" src="estanteriaLibros" /> <!-- Contents para ver los datos del libro seleccionado (Filtramos por MAP_ID), apunta a la misma tabla que el anterior --> <prop name="@detalles" locked="true" type="Z" xdisablevisible="MAP_ESTADO=''" contents="detalles" width="800px" height="300px" mask="0" /> <contents name="detalles" src="estadoLibros" filter="t1.ID=##FLD_MAP_ID##" /> <!-- Botones para marcar el libro como Reservado ó Disponible --> <prop name="MAP_RESERVAR" type="B" disablevisible="MAP_ESTADO='Reservado' OR MAP_ESTADO=''" caption="RESERVAR" method="ExecuteNode(reservar)" forecolor="#000000" labelwidth="5" width="300px" height="90px" visible="7" lmargin="30px" tmargin="10%" /> <prop name="MAP_ENTREGAR" type="B" disablevisible="MAP_ESTADO='Disponible' OR MAP_ESTADO=''" caption="ENTREGAR" method="ExecuteNode(entregar)" forecolor="#000000" labelwidth="5" newline="false" width="300px" height="90px" visible="7" lmargin="30px" tmargin="10%" /> <!-- Campos NO visibles, se rellenan de valor desde el content estanteriaLibros cuando pulsamos uno de los libros. --> <prop name="MAP_ID" type="T" visible="0" /> <prop name="MAP_ESTADO" type="T" visible="0" onchange="Refresh" /> </frame> </group> <!--IMPORTANTE: deben introducirse datos en la base de datos para poder visualizar las imágenes--> <reservar show-wait-dialog="false" refresh-props="MAP_RESERVAR,MAP_ENTREGAR,MAP_ESTADO"> <action name="runscript"> <script language="VBScript"> Dim obj Set obj=appdata.GetCollection("estanteriaLibros")("ID",cstr(This("MAP_ID"))) If not obj is nothing Then obj("ESTADO")="Reservado" obj.save End If obj=Nothing this("MAP_ESTADO")="Reservado" </script> </action> </reservar> <entregar show-wait-dialog="false"> <action name="runscript"> <script language="VBScript"> Dim obj Set obj=appdata.GetCollection("estanteriaLibros")("ID",cstr(This("MAP_ID"))) If not obj is nothing Then obj("ESTADO")="Disponible" obj.save End If obj=Nothing this("MAP_ESTADO")="Disponible" </script> </action> </entregar> <salir show-wait-dialog="false"> <action name="runscript"> <script language="VBScript"> Appdata.FailWithMessage -8100,"##EXIT##" </script> </action> </salir> </coll>
Código | Explicación |
---|---|
sql=“SELECT t1.* FROM ##PREF##estanterialibros t1” | Consulta que devuelve la información de los libros. |
dependent=“false” | Indica que los objetos que pertenecen a esta colección deberán chequear si el objeto propietario está grabado o no para grabarse ellos. |
check-owner=“false” | Indica que la colección debe revisar si el propietario está grabado en disco antes de ejecutar un loadall en caso de tratarse de una colección de contenido. |
Ejemplo de código de la colección de estanterialibro:
En esta colección indicamos lo que queremos mostrar en el primer contens de la colección PictureMAP
<coll name="estanteriaLibros" title="estanteriaLibros" sql="SELECT t1.* FROM ##PREF##estanterialibros t1" objname="estanteriaLibros" updateobj="estanteriaLibros" progid="ASData.CASBasicDataObj" filter="" sort="" dependent="false" check-owner="false"> <group name="General" id="1"> <prop name="ID" title="Codigo" type="T" visible="0" labelwidth="0" /> <prop name="CODIGO" title="Codigo" type="T" visible="0" labelwidth="0" /> <prop name="TITULO" title="Titulo" labelwidth="0" type="T" visible="7" /> <prop name="AUTOR" title="Autor" labelwidth="0" type="T" visible="7" /> <prop name="ESTADO" title="Estado" labelwidth="0" type="T" visible="7" /> <prop name="XCOORD" type="N" xcoord="true" visible="7" /> <prop name="YCOORD" type="N" ycoord="true" visible="7" /> <prop name="ICONBIG" width="126" height="168" type="T" size="250" icon-big="true" visible="7" /> <prop name="RADIO" type="N" circle-radius="true" visible="7" /> <prop name="ICONOFF" width="126" height="168" type="T" size="250" icon-mark="true" visible="7" /> <prop name="ICONON" width="126" height="168" type="T" size="250" icon-touch="true" visible="7" /> </group> <selecteditem> <action name="runscript"> <script language="VBSCript"> this.OwnerCollection.OwnerObject("MAP_ID")=This("ID") this.OwnerCollection.OwnerObject("MAP_ESTADO")=This("ESTADO") </script> </action> </selecteditem> </coll>
Código | Explicación |
---|---|
sql=“SELECT t1.ID,t1.CODIGO AS MAP_CODIGO,t1.TITULO AS MAP_TITULO,t1.AUTOR AS MAP_AUTOR,t1.ESTADO FROM ##PREF##estanterialibros t1” | Nos devuelve el estado en el que se encuentra el libro. |
show-toolbar=“false” | Por defecto true. Si lo ponemos a false en una colección cuando la utilizamos como contents no aparecen los botones de nuevo, editar … aunque se permite la edición y la creación de nuevos. Para bloquearlo seria con locked=“true”. |
cell-bgcolor=”#FFFFFF” | Permite definir el color de fondo por defecto de las celdas. |
Código de la colección estadolibros
En esta colección indicamos lo que queremos mostrar en el segundo contens de la colección PictureMAP
<coll name="estadoLibros" title="estadoLibros" sql="SELECT t1.ID,t1.CODIGO AS MAP_CODIGO,t1.TITULO AS MAP_TITULO,t1.AUTOR AS MAP_AUTOR,t1.ESTADO FROM ##PREF##estanterialibros t1" objname="estanterialibros" cell-bgcolor="#FFFFFF" show-toolbar="false" updateobj="estanterialibros" progid="ASData.CASBasicDataObj" filter="" sort="" check-owner="false" dependent="false" show-no-data="false"> <group name="General" id="1"> <prop name="MAP_CODIGO" type="T" visible="0" /> <prop name="MAP_TITULO" type="T" text-border="false" labelbox="false" visible="7" labelwidth="6" title="TITULO:" labelfont-bold="true" /> <prop name="MAP_AUTOR" type="T" text-border="false" labelbox="false" visible="7" labelwidth="6" title="AUTOR:" labelfont-bold="true" /> <prop name="ESTADO" type="T" text-border="false" labelbox="false" visible="7" labelwidth="6" title="ESTADO:" labelfont-bold="true" /> </group> </coll>