Herramientas de usuario

Herramientas del sitio


wiki:2.-desarrollo-app:2.4.-scripting-modelo-objetos:a.-objetos-sistema:1.-vbscript:1.6.-userinterface:start

USERINTERFACE



Este elemento, UserInterface, forma parte del objeto appData, disponiendo de características propias que hacen que sea descrito a continuación.

Dentro de este ámbito, podemos encontrar funciones que nos permiten interactuar con el usuario o con el dispositivo físico, permitiendo activación/desactivación de periféricos, impresión, notificaciones sonoras, o funcionalidades más básicas como un msgbox.

Es posible llamar a los métodos con ui.nombremetodo, en vez de usar el antiguo appdata.userinterface.

MsgBox


Tipo Método/Función
Parámetros Message:Mensaje que se quiere mostrar.
Caption: Título de la venta de mensaje.
Options:Parametro que especifica el tipo de msgbox a mostrar. Son las siguientes:
0 - Muestra un mensaje informativo con botón “Ok”. No retorna ningún valor.
1 - Mensaje para petición de confirmación “Aceptar”/“Cancelar”.
4 - Mensaje para petición de confirmación “Si”/“No”.
Tipo de Dato devuelto Para Options=0 - No hay retorno
Para Options=1 - Retorna 1 si el usuario pulsa “Aceptar” y 2 si pulsa “Cancelar”
Para Options=4 - Retorna 6 si el usuario pulsa “Si” y 7 si pulsa “No”
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Muestra una ventana de mensaje en el UI correspondiente.

En dependencia de la plataforma también se puede sacar un texto por la consola del sistema como traza.

Los valores de las opciones se han normalizado según los que se definen para Windows, así que se pueden usar en cualquiera de las plataformas con idéntico significado, ya que la maquinaria se encarga de traducir los significados.

<mensajes show-wait-dialog="false">
  <action name="runscript">
	<script language="VBScript">
	Dim vResult
 
	Select Case this("MAP_TIPO_MENSAJE")
	Case "MsgBox0"
		ui.MsgBox "Mensaje Informativo solo con OK","Titulo Ventana",0
	Case "MsgBox1"
		'Si pulsa ACEPTAR vale 1 y si pulsa CANCELAR vale 2
		vResult =ui.MsgBox ("Pregunta si ACEPTAR o CANCELAR","Advertencia",1)
		ui.MsgBox "Ha pulsado el botón con valor: "+cstr(vResult),"Titulo Ventana",0
	Case "MsgBox4"
		'Si pulsa SI vale 6 y si pulsa NO vale 7
		vResult =ui.MsgBox ("Pregunta SI ó NO","Advertencia",4)
		ui.MsgBox "Ha pulsado el botón con valor: "+cstr(vResult),"Titulo Ventana",0
	End Select
	</script>
  </action>
</mensajes> 


SendMail


Tipo Método
Parámetros “direcciondestino@correo.es”, “direccionencopia@correo.es”, “Asunto”, “Texto del mensaje”, “ficheroadjunto.zip”
Tipo de Dato devuelto Ninguno
Plataforma Android


Sólo Android. Este método permite enviar un email rellenando los campos en el gestor de correo que tenga instalado el cliente. El usuario es responsable de pulsar el boton de enviar. Se puede adjuntar un fichero que esté en la carpeta files o en cualquier otra ruta si se le especifica completa.

 Ejemplo: ui.SendMail "direcciondestino@correo.es", "direccionencopia@correo.es", "Asunto", "Texto del mensaje", ""


OpenMenu


Tipo Método
Parámetros CollName:Nombre de la colección a mostrar./ Mask:Mask del appwizard./ Mode:Mode del appwizard
Tipo de Dato devuelto Ninguno
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), Android, iPhone, Linux, MC+, Symbian (3ed, 5ed)


Muestra una colección en pantalla.

En función de la forma en que esté definido el UI de la colección en el mappings, se puede usar un control especial o en caso de no tener nada definido, se muestra en modo grid.

Esta función solamente está definida en determinados frameworks, independientemente de la plataforma, pero la idea es que se vaya generalizando.

De todas maneras el uso de las nuevas reglas de UI harán que este tipo de funcionalidad se vaya sustituyendo.

Ejemplo:

ui.OpenMenu "ColeccionQueSea",31,1   

GetInputString


Tipo Método
Parámetros Message:Mensaje que se quiere mostrar./Caption: Título de la venta de mensaje./ Options:Opciones de botones, iconos y demás
Tipo de Dato devuelto Texto
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Muestra una ventana para pedir un dato al usuario.

La forma que tenga esta petición de dato depende de la plataforma.

En determinadas plataformas incluso puede que esté disponible o no dependiendo del framework usado, como puede pasar en el caso de PC.

StartPrint


Tipo Función
Parámetros IndexPrinter:Es el índice de las entradas del fichero printer.bin que se va a usar. Usa índice cero, es decir, la primera opción, de las disponibles en printer.bin, sería 0.
Tipo de Dato devuelto Ninguna, si la conexión es correcta, en caso contrario un código de Error
Sintáxis WM string appdata.userinterface.StartPrint ( int IndexPrinter )
Sintáxis Android string appdata.userinterface.StartPrint “zebra”
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Android, Linux, MC+, Symbian (3ed, 5ed)


Inicializa y conecta con la impresora que se indica por parámetro.

EndPrint


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis appdata.userinterface.EndPrint
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Finaliza la conexión a la impresora.

Print


Tipo Función
Parámetros Texto [in]:El texto que se mandará imprimir.
Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error.
Sintáxis int appdata.userinterface.Print (string Texto )
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Imprime la cadena que recibe por parámetro.

PrintLine


Tipo Función
Parámetros Texto [in]:El texto que se mandará imprimir.
Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error.
Sintáxis int appdata.userinterface.PrintLine(string Texto )
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Imprime la cadena que recibe por parámetro y provoca un salto de línea.

LineFeed


Tipo Función
Parámetros Saltos [in]:Números de saltos de línea.
Tipo de valor devuelto Ninguno
Sintáxis appdata.userinterface.LineFeed int Saltos
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Realiza tantos saltos de línea como se indiquen por parámetro.

PrintCommand


Tipo Función
Parámetros Texto [in]:El texto que será enviado a la impresora como comandos ascii a no ser que se especifique la macro ##TEXT##. (*)
Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error.
Sintáxis Int appdata.userinterface.PrintCommand (int String )
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


(*)La Sintáxis puede ser: 
1) Para escribir texto normal y que el control los interprete como ASCII, sería:\\
appdata.userinterface.PrintCommand "##TEXT##hola 130 15 ##END_TEXT##"
appdata.userinterface.PrintCommand "##TEXT##! 0 200 200 210 1##END_TEXT##"
2) Cualquier valor que vaya entre comas sin las macros anteriores, será interpretado como un valor ASCII:
appdata.userinterface.PrintCommand "32,35,104,111,108,97,10" sería igual a: appdata.userinterface.PrintCommand "32,35,##TEXT##hola##END_TEXT##,10"


Imprime comandos específicos de la impresora, mediante la cadena que recibe por parámetro.

PrintBarCode


Tipo Función
Parámetros Tipo [in]:El tipo de código de barras que se mandará imprimir. Tipos disponibles: “EAN13”,“EAN8”,“CODE39”,”CODE128“,”PDF417”,“UPCA”,“UPCE”. \\Valor [in]: El valor que formará el código de barras.
Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error.
Sintáxis int appdata.userinterface.PrintBarCode (string Tipostring Valor )
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Imprime un código de barras del tipo especificado por parámetro.

ChronoStart


Arranca un contador de tiempo.

Tipo Función
Sintáxis
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


ChronoStop


Para el contador de tiempo.

Tipo Función
Sintáxis Objeto.ChronoStop
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


ChronoValue


Retorna el tiempo transcurrido, en milisegundos, desde que se arrancó el temporizador o desde la última llamada a ChronoValue.

Tipo Función
Sintáxis long objeto.ChronoValue
Tipo de valor devuelto Los milisegundos transcurridos desde la última llamada a ChronoValue. La primera vez que es llamada retorna el total de tiempo transcurrido.
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


StartScanner


Lanza o conecta el scanner para la lectura de códigos 2d, al realizarse la lectura se asignara el valor a la propiedad con atributo barcode =”true”.
Se ha implementado posteriormente un tercer parámetro que nos permite especificar la propiedad destino de la lectura del código de barras, tenga ésta o no el atributo barcode=“true”. Este comando, para su correcto funcionamiento buscará una aplicación llamada “Barcode Scanner” by ZXing. Si no está instalada, nos abrirá el market para que la instalemos.

TipoFunción
ParámetrosParámetro 1: aplicación de scanner a usar.
  • quickmark1d: Usar QuickMark para códigos unidimensionales.
  • quickmark: Usar QuickMark con escaner genérico.
  • zxing: Usar Zxing. Esta es la preferida.

Parámetro 2 (opcional): tipos de código.

  • Si este parámetro no esta presente o su valor es vacío, se intentará identificar todos los códigos soportados.
  • Los valores irán separados por comas. P.Ej: “QRCODE,EAN,ISBN”.
  • EAN: “European article number” incluye (EAN2,EAN5,EAN8,EAN13).
  • UPC: “Uniform product code” incluye (UPC-A, UPC-E).
  • ISBN: “International Standart Book Number” incluye (ISBN-10, ISBN-13).
  • COMPOSITE: EAN/UPC composite. 125: Interleaved 2 of 5.
  • DATABAR: GS1 DataBar (RSS).
  • CODE 39: Code 39.
  • PDF417: PDF417.
  • QRCODE: QR Code.
  • CODE93: Code 93.
  • CODE128: Code 128.

Parámetro 3 (opcional): Propiedad destino de la lectura.

Tipo de valor devueltoNinguno, si la impresión es correcta, en caso contrario devuelve Error.
PlataformasWin32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Ejemplo de uso:

<button name="ScannerCamera" group="1" caption="Lanzar scanner" visible="1"  labelwidth="10" lmargin="6"  method="ExecuteNode (StartScanner)” />
 
<StartScanner>
	<action name="runscript">
		<script language="VBScript">
 
			<!-- Este comando lee TODOS los tipos de códigos soportados  -->
			ui.StartScanner "zxing", "", "MAP_CODIGOBARRAS"
 
			<!-- Sólo para leer códigos QR y ponemos la lectura en el campo "MAP_CODIGO -->	
			ui.StartScanner "zxing", "QRCODE", "MAP_CODIGO"
 
			<!-- Sólo para leer códigos ISBN -->
			ui.StartScanner "zxing", "ISBN"
 
			<!-- Sólo para leer códigos QR, EAN e ISBN -->
			ui.StartScanner "zxing", "QRCODE,EAN,ISBN"
 
		</script>
	</action>
</StartScanner>


OpenFile


Tipo Función
Parámetros NombreFichero: Será, o bien el nombre de un fichero (en ese caso se busca dentro de la carpeta Files de la aplicación), o una ruta, que se tomará como absoluta. Se puede usar la macro ##APP## que se sustituye por la ruta donde está instalada la aplicación. Caché: Indica al framework si al descargar ficheros con este método no debe buscarlo antes en la caché y bajarlo de nuevo. Valores posibles: “donotcachethefile”, “cache”
Tipo de valor devuelto Ninguno.
Sintáxis appdata.userinterface.OpenFile string NombreFichero
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed), Android


Abre el fichero que se pasa por parámetro.

Ejemplo 1: appdata.userinterface.OpenFile "##APP##\Files"+this("FICHATECNICA")
Ejemplo 2: appdata.userinterface.OpenFile "http://www.xone.es/XOneAndroidFramework.apk", "donotcachethefile"


OpenUrl


Tipo Función
Parámetros Texto con la URL
Tipo de valor devuelto Ninguno.
Sintáxis appdata.userinterface.string url
Plataforma iPhone, Android, Windows Phone


Abre la URL que se pasa por parámetro.

AppData.UserInterface.OpenUrl strURL
ui.OpenUrl strURL


GetView


Tipo Función
Parámetros XoneDataObject
Tipo de valor devuelto XoneWindow
Sintáxis ui.GetView(obj)
Plataforma iPhone, Android


Devuelve el objeto ventana asociada al objeto que se le pasa como parámetro. Si el objeto no tiene ventana aún, devuelve NULL.
Las posibles acciones sobre dicha ventana son: Refresh, Bind, SetFocus, PickFile.

Ejemplo de uso:

 Set mViewEdit = ui.GetView(objMain)
 If Not mViewEdit = nothing Then
   mViewEdit.Refresh "MAP_PROPIEDAD"
 End If

BthGetMode


Tipo Función
Tipo de valor devuelto Valor Numérico: 0: Bluetooth OFF/ 1: Bluetooth ON/ 2: Bluetooth Visible
Sintáxis Int appdata.userinterface.BthGetMode ( )
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Retorna el estado del bluetooth.

BthSetMode


Tipo Función
Parámetros NuevoEstado [in]Indica el nuevo estado al que se cambiará el bluetooth. Los valores posibles son:0: Bluetooth OFF/ 1: Bluetooth ON/ 2: Bluetooth Visible
Tipo de valor devuelto Ninguno
Sintáxis appdata.userinterface.BthSetMode int NuevoEstado
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Asigna el nuevo estado del bluetooth.

ShowGroup


Tipo Función
Parámetros (*)
Tipo de valor devuelto Ninguno
Sintáxis appdata.usertinterface.showgroup “#group”,“animación de entrada”,duración entrada,“animación de salida”,duración salida
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed), Android


Esta función muestra un grupo o un frame de la colección con una transición mediante script.

(*)Los tipos de animaciones que pueden ponerse en los parametros de “animación de entrada” y “animación de salida:

  • ”##ALPHA_IN##“ - Degradado de menos a mas para efecto de entrada
  • ”##ALPHA_OUT##“ - Degradado de más a menos para efecto de salida
  • ”##LEFT##“ Entrada por la izquierda
  • ”##LEFT_OUT##“ Salida por la izquierda
  • ”##PUSH_IN##“ Entrada por la parte inferior
  • ”##PUSH_OUT##“ Salida por la parte superior
  • ”##RIGHT##“ Entrada por la derecha
  • ”##RIGHT_OUT##“ Salida por la derecha
  • ”##ROTATE_IN##“ Rotación 2D para entrada
  • ”##ROTATE_OUT##“ Rotación 2D para salida
  • ”##ROTATE3D_IN##“ Rotación 3D para entrada
  • ”##ROTATE3D_OUT##“ Rotación 3D para salida
  • ”##ZOOM_IN##“ Entrada de menor a mayor
  • ”##ZOOM_OUT##“ Salida de mayor a menor


Ejemplos de Uso:

<action name="runscript">
	<script language="VBScript">
		<!-- Entrada del group id="3" con rotación 3D y tiempo de espera de 1000 ms -->
		AppData.UserInterface.ShowGroup "3","##ROTATE3D_IN##",1000,"##ROTATE3D_OUT##",1000
 
		<!-- Entrada del group id="1" con difuminado con duración de 600 milisegundos -->
		AppData.UserInterface.ShowGroup "1","##ALPHA_IN##",600,"##ALPHA_OUT##",600
 
		<!-- Entrada del group id="2" con Zoom de entrada y salida y duración de 1000 ms -->
		AppData.UserInterface.ShowGroup "2","##ZOOM_IN##",1000,"##ZOOM_OUT##",1000
	</script>
</action>

También 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,

<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="300px" left="200px" width="600px" height="300px" 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##;	
}

Cumple las mismas macros que el script.

También puedes ocultar la ventana de espera que sea por defecto en la ejecución de los script para que el efecto sea más limpio.

En la cabecera del nodo de script pones los atributos:

show-wait-dialog="false" refresh="false"


Eso permite que no se muestre el diálogo de espera y que tampoco se refresque la pantalla. Ya lo hará la animación de forma automática.

Ejemplo de Uso:

<button1_Click show-wait-dialog="false" refresh="false">
	<action name="runscript">
		<script language="vbscript">
			AppData.UserInterface.ShowGroup "3","##ROTATE3D_IN##",1000,"##ROTATE3D_OUT##",1000
		</script>
	</action>
</button1_Click>


IsApplicationInstalled


Sirve para saber si una aplicación está instalada en el dispositivo, devuelve 0 si está instalada.

Ejemplo:

  ui.isApplicationInstalled("com.google.android.apps.maps");


IsWifiEnabled


Tipo Función
Tipo de Dato devuelto Entero
Sintáxis ui.IsWifiEnabled
Plataforma Android


Esta función comprueba si está habilitado el adaptador inalámbrico. Esto no significa que se haya conectado a una red. Devuelve 1 si es cierto, 0 en caso contrario.

StartWifi


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.StartWifi
Plataforma Android


Esta función activa el wifi. Debe usarse con muchísimo cuidado el usuario puede considerar esta función bastante intrusiva.

StopWifi


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.StopWifi
Plataforma Android


Esta función desactiva el wifi. Lo mismo que la anterior, pero ésta incluso, podría cortar alguna descarga en curso.

StartGPS


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.startGPS
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Inicializa y conecta el GPS del dispositivo para capturar las coordenadas GPS para su posterior tratamiento en un script.

Ejemplo de uso:

<!-- El onlogon es un nodo "especial" de la colección Empresas, y se ejecuta cuando nos logueamos en la aplicación. -->
<onlogon>
	<action name="runscript">
		<script language="VBScript">
			AppData.UserInterface.StartGPS
		</script>
	</action>
</onlogon>


StopGPS


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis appdata.userinterface.stopgps
Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed)


Finaliza y cierra el GPS del dispositivo.

<!-- El onlogoff es un nodo "especial" de la colección Empresas, y se ejecuta cuando finaliza la ejecución del programa. -->
<onlogoff>
	<action name="runscript">
		<script language="VBScript">
			AppData.UserInterface.StopGPS
		</script>
	</action>
</onlogoff>


MakePhoneCall


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis appdata.userinterface.makephonecall(ValorTelefono)
Plataforma iPhone, Android


Realiza la llamada desde un Script al numero insertado como parametro en la función.

AppData.UserInterface.MakePhoneCall(This("TELEFONO"))
' O lo que es lo mismo....
ui.MakePhoneCall(This("TELEFONO"))


AddCalendarItem


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.AddCalendarItem(Titulo, Descripción, Lugar del evento, Fecha Inicio], Fecha Fin)
Plataforma Android


Añade un evento al calendario integrado en Android.

HideSoftwareKeyboard


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.HideSoftwareKeyboard
Plataforma Android


Si está visible, oculta el teclado en pantalla de android.

CreateShortcut


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui. “nombreaplicacion”, “true”
Plataforma Android


Cuando se llama a este método, crea un acceso directo a la aplicación que se le pase en el primer parámetro, que puede ser otra distinta a la que se esté ejecutando. El segundo parámetro indica si queremos evitar que se creen duplicados al llamar de nuevo a esta función.

En cualquier caso, esta función es totalmente dependiente de la aplicación de escritorio que tenga instalado el usuario, en algunos casos muestra una notificación “toast” siempre, en otros no, y en otros ni crea el acceso directo. Con la aplicación de escritorio por defecto que viene en Android debería funcionar bien.

Se usará icon.png como icono del acceso directo.

UpdateWaitDialog


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.UpdateWaitDialog “Título”, aumento
Plataforma Android


Si se define este método en un nodo de botón tal y como se muestra en el ejemplo, se sustituirá la ventana de cargando al ejecutar el script por otra con una barra de progreso y título. Útil cuando se carga un script demasiado pesado.

<AbrirFiltro show-progress-dialog="true">
  <action name="runscript">
    <script language="VBScript">
      ui.UpdateWaitDialog "Ciclo 1",20
      [script aqui]
      ui.UpdateWaitDialog "Ciclo 2",30
      [script aqui]
      ui.UpdateWaitDialog "Ciclo 2.1",50
      [script aqui]
      ui.UpdateWaitDialog "Ciclo 3",70
      [script aqui]
      ui.UpdateWaitDialog "Ciclo 4",90
      [script aqui]
      ui.UpdateWaitDialog "Ciclo 5",100
    </script>
  </action>
</AbrirFiltro>


SetMaxWaitDialog


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.SetMaxWaitDialog total
Plataforma Android


Combinado con la función anterior, éste método ajusta el máximo de la barra de progreso. Es útil para no tener que calcular el aumento en cada UpdateWaitDialog.
Si, por ejemplo, quisiéramos recorrer una colección y cada vez que se procese un registro o varios aumentar sólo uno, guardamos primero el número de pasadas que daremos, lo ajustamos como el máximo y después en cada vuelta aumentamos el progreso.

<AbrirFiltro show-progress-dialog="true">
  <action name="runscript">
    <script language="VBScript">
      aumento = 0
      ui.SetMaxWaitDialog 50
      [bucle aquí]
        ui.UpdateWaitDialog "Generando PDF...", aumento
        aumento = aumento + 1
      [fin bucle]
    </script>
  </action>
</AbrirFiltro>
 
<barraprogreso show-progress-dialog="true">
	<action name="runscript">
	  <script language="VBScript">
			'Para poner una barra de progreso en pantalla
			dim cont
			cont=0
			ui.SetMaxWaitDialog 15000
			For i = 1 To 15000
			  ui.UpdateWaitDialog "Generando lo que sea",cont
			  cont=cont+1
			Next
		</script>
	</action>
</barraprogreso>


ExecuteActionAfterDelay


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.ExecuteActionAfterDelay “Nodo_A_Ejecutar”, Segundos
Plataforma Android - Iphone


Este método sirve para ejecutar un nodo tras esperar un cierto tiempo. El tiempo se especifica en segundos y el nodo debe estar en la colección donde se encuentre el script con la llamada a este método. Se pueden poner decimales, por ejemplo 0.3 que vienen a ser 300 milisegundos. No poner 0.

<before-edit> <!-- O en cualquier otra parte -->
	<action name="runscript">
		<script language="VBScript">
			ui.ExecuteActionAfterDelay "Nodo_A_Ejecutar", 20
			<!-- Ponemos que se ejecute cuando pasen 20 segundos -->
		</script>
	</action>
</before-edit>
 
	..............
 
<Nodo_A_Ejecutar>
	<action name="runscript">
		<script language="VBScript">
 
			...... Hacemos lo que sea .......
			<!-- ui.ExecuteActionAfterDelay "Nodo_A_Ejecutar", 20 --> Si queremos que sea repetitivo
		</script>
	</action>
</Nodo_A_Ejecutar>

Si queremos que este nodo sea repetitivo, en el nodo al que se llama tendríamos que hacer una llamada para que se ejecute a sí mismo.


SetLanguage


Tipo Función
Tipo de Dato devuelto Entero
Sintáxis ui.SetLanguage “Código_de_idioma_2_letras”
Plataforma Android


Este método permite cambiar el idioma de los mensajes del framework y de la aplicación XOne en tiempo de ejecución. Es necesario reiniciar la aplicación para que los cambios surtan efecto.

<prop name="BTNESPANOL" type="B" frame="frm1" group="1" class="buttonlogin" title="Español" visible="1" labelwidth="5" fontsize="10" onchange="refresh" method="ExecuteNode(idioma(es))" />
<prop name="BTNINGLES" type="B" frame="frm1" group="1" class="buttonlogin" title="Inglés" visible="1" labelwidth="5" fontsize="10" onchange="refresh" method="ExecuteNode(idioma(en))" />
<idioma>
  <action name="runscript">
  <param name="idioma" />
    <script language="VBScript">
      Dim resp
      resp = ui.MsgBox("Cambiar el idioma reiniciará la aplicación. ¿Desea continuar?", "Mensaje", 4)
      if resp = 6 then
        ui.SetLanguage idioma
      end if
    </script>
  </action>
</idioma>

PlaySoundAndVibrate


Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.PlaySoundAndVibrate “Sound.mp3”,Vibrate,numRepeat
Plataforma Android, IOS


Este método permite lanzar un sonido con o sin vibración, y hacer que se repita n veces. El sonido puede ser cualquiera que pueda reproducir el dispositivo, mp3, wav, etc. Por defecto, el sonido se busca en la carpeta files del proyecto. También se puede reproducir el tono de notificación que se tenga configurado en el dispositivo así como si está activa la vibración o no con la macro ##DEFAULT##.

'El archivo de sonido tiene que estar en la carpeta files del proyecto
ui.PlaySoundAndVibrate "bultonoencontrado.wav", "###DEFAULT##",1
 
'Ejecuta el tono que tenga configurado el dispositivo 5 veces.
ui.PlaySoundAndVibrate "##DEFAULT##", "##DEFAULT##", 5
 
'Lo mismo que el anterior pero sin vibración
ui.PlaySoundAndVibrate "##DEFAULT##", "", 5
<detenersonido>
	<action name="runscript">
		<script language="VBScript">
			'Detiene la reproducción. No pasa nada si no hay nada reproduciéndose.
			ui.StopPlaySoundAndVibrate
		</script>
	</action>
</detenersonido>

DrawMapRoute


Este método permite dibujar una ruta entre 2 puntos en un mapa incrustado en la aplicación.

Tipo Función
Tipo de Dato devuelto Ninguno
Sintáxis ui.drawMapRoute(“MAP_MAPA”, self.LATITUD, self.LONGITUD, 43.0069, -7.5699, “driving”, ”#FF0000“)
Plataforma Android
Parámetros
  1. Nombre del content que contiene los datos. (Name del prop)
  2. Latitud destino
  3. Longitud destino
  4. Latitud origen
  5. Longitud origen
  6. Modo de desplazamiento. Valores posibles: “walking” (caminando) y “driving” (en coche).
  7. Color del trazo que dibuja la ruta.


Método setNotificationLed


Modifica el color del led de los dispositivos que lo tengan, este led solo se verá si tiene una notificación en la barra de notificaciones y si está el dispositivo bloqueado.

Parámetros:

  1. Define el color del led.
  2. Define el tiempo que está encendido el led.
  3. Define el tiempo que está apagado el led.


Ejemplo:

  ui.setNotificationLed "#00FF00", 1000, 1000


Método showNotification


Muestra una notificación en la barra de notificaciones de los dispositivos.

Parámetros:

  1. Identificador de la notificaciones, si se hacen varias llamadas con el mismo id, modificara el valor la última llamada, si se hace con id diferentes generara una nueva notificación en pantalla por cada id diferente.
  2. Título de la notificación.
  3. Descripción de la notificación.
  4. (Opcional) Texto ticker, Texto que sale antes de mostrar la notificación, solo funciona en Android inferiores al 5 (a partir de esta versión Android puso obsoleto esta particularidad).
  5. (Opcional, funciona junto con el parámetro 6) Dataobject, para saber dónde tiene que buscar el nodo a ejecutar, cuando se pulse sobre la notificación.
  6. (Opcional, funciona junto con el parámetro 5) nodo que ejecutara una vez se pulse sobre la notificación.


Ejemplos:

  Ej1:
  ui.showNotification 1, "Título", "Notificación #1"	
  Ej2: 
  ui.showNotification 1, "Título", "Notificación #1", “Mensaje nuevo”
  
  
  Ej3:
  ui.showNotification 3, "Título", "Notificación #3", "Mensaje nuevo", self, "mensajeria"


Método ShowDatePicker


Método que mostrará por pantalla un calendario.

Parámetros:

  1. Un objeto JSON en el que podemos definir las siguientes propiedades:
  • (Obligatorio si no se definió onDateSet) targetProperty: Indicamos el nombre del prop donde queremos que se guarde el valor una vez se selecciones la fecha que queremos.
  • (Opcional) initialYear: Año en que comenzara seleccionado en el calendario.
  • (Opcional) initialMonth: Mes en que comenzara seleccionado en el calendario.
  • (Opcional) initialDay: Día en que comenzara seleccionado en el calendario.
  • (Opcional) Title: título superior que queramos que muestre la ventana del calendario.
  • (Obligatorio si no se definió targetProperty) onDateSet: (Es incompatible con la propiedad targetProperty, es decir si se pone el onDateSet no hará caso al targetProperty) donde se definirá una función que se llamara una vez seleccionemos la fecha que queremos.


Ejemplos:

  Ej2:
  var params = 
        		initialYear: 2038,
        		initialMonth: 2,
        		initialDay: 15,
        		title: "Seleccione fecha",
        		onDateSet: function(nYear, nMonth, nDay) 
        			/*Aquí ponemos el script que queramos ejecutar*/
        	
  ui.showDatePicker(params)
  Ej3:
 var params = 
 targetProperty: "MAP_TEXTO_FLOAT_TOOLTIP_USUARIO",
        		initialYear: 2038,
        		initialMonth: 2,
        		initialDay: 15,
        		title: "Seleccione fecha"
        	
 ui.showDatePicker(params)


Métodos de XOneLive con Script


Se han implementado desde hace algún tiempo los métodos del Widget del XOneLive para tenerlos disponibles mediante script para su uso en la aplicación.

Métodos de XOneLive con Script (Objeto Debugtool) Definición
GetDeviceIDObtiene el PIN del dispositivo (IMEI)
SendLogEnvía el Log del dispositivo
SendDatabaseEnvía la base de datos
SendReplicaDebugDatabaseEnvía el log de operaciones de base de datos, siempre que esté activado el sql-debug=”true” a nivel de colección ó debug=”true” en el nodo APP.
SendReplicaFilesDatabaseEnvía la base de datos de réplica de ficheros.



Ejemplo:

 Set obj = CreateObject("DebugTools")
ui.showtoast "Enviando Logs del sistema"
'Para obtener el IMEI del dispositivo\\
ui.MsgBox "PIN dispositivo: " + obj01.GetDeviceID, "Mensaje", 0
'Para obtener el log de operaciones del dispositivo \\
' (La dirección es opcional)
a=obj.SendLog("http://www.xone.es/XoneLogRec/reclog.aspx")
if a=-1 then ui.showtoast "No se pudo enviar el log de operaciones"
'Para obtener la base de datos del dispositivo\\
'(La dirección es opcional)
b=obj.SendDatabase("http://www.xone.es/XoneLogRec/reclog.aspx")
if b=-1 then ui.showtoast "No se pudo enviar la base de datos"
'Para obtener log de réplica de la base de datos del dispositivo\\
'(La dirección es opcional)
c=obj.SendReplicaDebugDatabase("http://www.xone.es/XoneLogRec/reclog.aspx")
if c=-1 then ui.showtoast "No se pudo enviar el log de replica de operaciones"
'Para obtener la base de datos de réplica de \\
'(La dirección es opcional)
d=obj.SendReplicaFilesDatabase("http://www.xone.es/XoneLogRec/reclog.aspx")
if d=-1 then ui.showtoast "No se pudo enviar la base de datos de replica de ficheros"
if a=0 and b=0 and c=0 and d=0 then ui.showtoast "Logs Enviados Correctamente"
Set obj = nothing


OpenEditView


Abre una colección en modo edición sin necesidad de hacer un create object y un pushvalue.

Parámetro 1 Se le puede pasar un dataObject o el nombre de la colección.


Ejemplo:

 ui.openEditView(“miColeccion”);

Código necesario para el mapa embebido


Con éste código mostramos únicamente un mapa embebido con los POI que tengamos en la tabla correspondiente.

	<prop name="MAP_MAPA" zoom-to-my-location="false" visible="1" type="Z" contents="ClientesCoord" onchange="Refresh" mask="2" viewmode="mapview" mapview-embedded="true" width="80%" height="80%" zoom="true" />
	<contents name="ClientesCoord" src="ClientesCoord" />


El siguiente código lo ponemos dentro de la colección del contents que contiene los datos con las direcciones de los POI, si bien podríamos ponerlo también en un botón ó en cualquier otra parte.

Código javascript:

<selecteditem refresh="false">
	<action name="runscript">
		<script language="javascript">
			/* ui.showToast("Soy el selecteditem del mapview: " + self.DIRECCION) */
			/* Esto pinta una ruta desde la ciudad de Lugo (43.0069, -7.5699) hacia la posición del POI que se ha pulsado */
			ui.drawMapRoute("MAP_MAPA", self.LATITUD, self.LONGITUD, 43.0069, -7.5699, "driving", "#FF0000")
		</script>
	</action>
</selecteditem>

Código vbscript:

<selecteditem refresh="false">
	<action name="runscript">
		<script language="vbscript">
			'ui.ShowToast "Soy el selecteditem del mapview: " + this("DIRECCION")
			'Esto pinta una ruta desde Lugo hasta la posición del POI que se ha pulsado
			ui.DrawMapRoute "MAP_MAPA", this("LATITUD"), this("LONGITUD"), 43.0069, -7.5699, "driving", "#FF0000"
		</script>
	</action>
</selecteditem>


Métodos para obtener datos de la última coordenada


Son métodos asociados al control del GPS pero son llamados por el U.I

Método 1getLastKnownLocation: obtiene la última localización (Latitud, Longitud).
Método 2getLastKnownLocationLatitude: obtiene la última latitud.
Método 3getLastKnownLocationLongitude: obtiene la última Longitud.
Método 4getLastKnownLocationAltitude: obtiene la última Altitud.
Método 5getLastKnownLocationSpeed: obtiene la última Velocidad.
Método 6getLastKnownLocationAccuracy: obtiene la última precisión.
Método 7getLastKnownLocationBearing: obtiene el último rumbo.
Método 8getLastKnownLocationProvider: obtiene el último proveedor.
Método 9getLastKnownLocationDateTime: obtiene la última fecha y hora.


wiki/2.-desarrollo-app/2.4.-scripting-modelo-objetos/a.-objetos-sistema/1.-vbscript/1.6.-userinterface/start.txt · Última modificación: 2019/08/16 12:35 por ary