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.


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.


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.


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>