Ver la Versión Completa : [ CONSULTA ] Escena tipo Rueda
dj_janker
09/05/16, 17:06:29
Hola,
estoy intentando crear mi primera escena, a partir de la escena "variable query", pero aunque parece fácil, no consigo hacerla funcionar como me gustaría.
Lo que he hecho ha sido clonar la escena "variable query" y he eliminado el botón de cancelar, dejando solo del de aceptar. Al mismo tiempo he ocultado la casilla de entrada de texto colocando encima un elemento "rueda".
Este elemento contiene 3 items: SI/NO/NA., hasta aquí bien, porque en definitiva no he hecho nada :platano:
Y ahora es donde viene el lío...
En la pestaña items, donde he creado SI/NO/NA en acción he creado un "Establecer variable" para cada item, que devuelve la variable: %resultado = SI, NO, NA para cada uno de los casos.
Luego en la pestaña Selección de items he añadido una acción "Establecer variable" asignando %Resultado = %resultado.
Lo que pretendo es que al usar la escena en una consulta de variable desde una tarea, si elijo la opción SI, en la variable %Resultado se me cargue un SI, si elijo la opción NO se me cargue un NO y así respectivamente....
Pero esto no ocurre así.
Alguna idea?
Caravantes
09/05/16, 23:18:21
En la pestaña items, donde he creado SI/NO/NA en acción he creado un "Establecer variable" para cada item, que devuelve la variable: %resultado = SI, NO, NA para cada uno de los casos.
No estoy muy seguro, pero quizá el problema sea que estás utilizando una variable local, y por tanto el contenido de esa variable no es accesible en ninguna otra tarea. Ya he visto que luego asignas %Resultado = %resultado, pero esa acción no funcionará si la variable local %resultado la habías establecido en otra tarea.
Mi consejo es que solo utilices la variable global %Resultado, cuyo contenido es accesible y modificable en cualquier tarea.
WillyWeb
10/05/16, 08:19:34
La escena que se usa para "Consulta de Variable" es un poco especial. Tiene que tener un elemento EditarTexto que se llame TextEdit1. El contenido de ese elemento es lo que se deja en la variable que pongas en el campo Variable de la acción "Consultar Variable". Ese es el funcionamiento "predeterminado".
Por otra parte, cualquier escena que llamas desde una tarea se convierte automáticamente en parte de ella a nivel de definición/uso de variables locales. Si en la escena defines la variable %resultado estará accesible directamente en la tarea desde la que has lanzado la escena, y al revés.
Lo que pretendes hacer debería funcionar definiendo como acción para cada Ítem "Establecer variable" usando una variable local (%resultado) y poniendo en ella el valor que quieras/necesites.
Si como %resultado te vale el mismo nombre del Ítem lo puedes hacer más fácil. Define los ítems pero no les asignes acción. Ahora define como acción en "Selección Ítem" un "Establecer variable" con una variable local (%resultado) y le asignas %tap_label. En la tarea puedes usar esa variable %resultado. O todavía más sencillo. Define los Ítems y nada más. En la tarea puedes usar la variable %tap_label.
dj_janker
10/05/16, 08:53:53
La escena que se usa para "Consulta de Variable" es un poco especial. Tiene que tener un elemento EditarTexto que se llame TextEdit1. El contenido de ese elemento es lo que se deja en la variable que pongas en el campo Variable de la acción "Consultar Variable". Ese es el funcionamiento "predeterminado".
Por otra parte, cualquier escena que llamas desde una tarea se convierte automáticamente en parte de ella a nivel de definición/uso de variables locales. Si en la escena defines la variable %resultado estará accesible directamente en la tarea desde la que has lanzado la escena, y al revés.
Lo que pretendes hacer debería funcionar definiendo como acción para cada Ítem "Establecer variable" usando una variable local (%resultado) y poniendo en ella el valor que quieras/necesites.
Si como %resultado te vale el mismo nombre del Ítem lo puedes hacer más fácil. Define los ítems pero no les asignes acción. Ahora define como acción en "Selección Ítem" un "Establecer variable" con una variable local (%resultado) y le asignas %tap_label. En la tarea puedes usar esa variable %resultado. O todavía más sencillo. Define los Ítems y nada más. En la tarea puedes usar la variable %tap_label.
Vale, eso ya lo había conseguido deducir a base de mucho pelear....:cry::cry:
Ahora vamos a rizar el rizo. Necesito meter otra escena similar, tipo rueda, con otras tres opciones que se activan en función de una condición Si-Fin si derivada de la anterior consulta.
El caso es que no puedo usar el %tap_label de nuevo, ya que mantiene el valor de la anterior consulta.....:dios:
El caso es que creo que lo había conseguido, pero al probar otra cosa ya no va, y ahora ya, tras infinitos cambios, no recuerdo como lo había hecho...
WillyWeb
10/05/16, 10:41:16
Ahora vamos a rizar el rizo. Necesito meter otra escena similar, tipo rueda, con otras tres opciones que se activan en función de una condición Si-Fin si derivada de la anterior consulta.
El caso es que no puedo usar el %tap_label de nuevo, ya que mantiene el valor de la anterior consulta.....:dios:
El caso es que creo que lo había conseguido, pero al probar otra cosa ya no va, y ahora ya, tras infinitos cambios, no recuerdo como lo había hecho...
En ese caso no deberías usar %tap_label ya que cambia cada vez que tocas un Ítem con etiqueta. Es mejor si usas el método de asignar el resultado a una variable local (%resultado1).
Si lo que quieres es modificar la segunda escena en función del resultado de la primera sigue esta secuencia...
-carga la escena (no es visible, pero es accesible a base de acciones)
-modifica los elementos necesarios
-muestra la escena
-destruye la escena cuando termines con ella
Todo lo que necesitas está en la categoría de acciones "Escena".
cace0353
10/05/16, 10:56:11
Yo añadiria más a la explicación que te ha dado WillyWeb.
En efecto, cualquier escena llamada desde una tarea permite el intercambio entre escena y tarea de las variables locales que se definan en una y otra. Pero hay más: también entre las nuevas escenas que puedas abrir en cascada desde la primera (asociadas a un botón, un elemento menú, un clic en una imagen, en un cuadro de texto, etc.) y la tarea.
Piensa, además, que estos elementos de las escenas pueden contener un montón de acciones de Tasker. Es decir, como si fueran tareas independientes pero con la ventaja incontestable de poder trabajar con variables locales con la seguridad de que te sirven en todas las escenas de la cadena...
De este modo puedes montar proyectos enteros con una sola tarea y las escenas que necesites usando sólo variables locales.
Para su revisión y edición es muy aconsejable cambiar en las escenas el nombre por defecto del elemento (botón, texto, rectangulo, imagen...) para que indique lo más claro posible que hace cada uno.
En tu caso, y deduzco que sigues con tu proyecto de checklist que posteabas la semana pasada:
Yo crearia una escena con una cabecera donde entraras, en uno o varios cuadros texto editable, las variables identificativas del proyecto: nombre, calle, Población, teléfono, etc... guardándolos en variables locales: %nombre, %calle, %poblacion, etc.
Luego un conmutador o un botón que te sirviera para determinar el grupo (siguiendo tu nomenclatura) con un valor por defecto: por ejemplo grupo 01. La pulsación sobre este elemento estableceria la variable %grupo a 01 o 02
Más abajo un elemento Menú (como una rueda pero que siempre está desplegada y permite el deslizamiento con el dedo). En orígen debes elegir "Matriz de variables", en nombre de la variable pon %categorias y en Selección: simple.
Con un pulsación sobre la imagen que ves en Disposición podrás configurar la visualización del elemento (ver nota al pié)
Crea una nueva escena "Seleccion" a todo ancho de pantalla con un texto de cabecera que muestre %item_label (el nombre de la categoria seleccionada en el elemento menú anterior) y tres botones solamente: SI, NO y N/A. y en cada uno de los botones escribe en la pestaña Clic en Item una acción Establecer Variable %seleccion a %item_label SI, NO o N/A (según el boton, claro) con la opción "Añadir" activada acabando con un return (salto de linea) y, a continuación, una acción Destruir escena Seleccion.
Con esto, con una sola pulsación harás la selección y volverás a la escena anterior para seguir añadiendo categorias...
El poner %tap_label antes del SI, NO o N/A hace que la variable %seleccion contenga el nombre de la categoria y la opción elegida.
El hecho de activar la opción "añadir" hace que para cada categoria seleccionada se añada una linea a la variable %selección
¿Cómo se crea la matriz %categorias?. Escribete un archivo de texto plano en el PC con las diferentes categorias (una por línea). Guárdalo con la codificación Unicode UTF-8 y pásatelo al móvil.
En ta tarea de tu proyecto y con una acción "leer archivo" abre el archivo que has creado y guárdalo en una variable %categorias -de momento es una sola variable-.
Crea también una variable %newline que contenga un "return" solamente (esto és: un salto de linea)
Crea la matriz con un Separar Variable sobre la variable %categorias y usando como separador %newline.
Abre la escena de nuevo y en la pestaña Clic en Item del elemento menú le pones una acción Mostrar escena que te llame a la que acabas de crear: Seleccion.
Finalmente añades un botón en la parte inferior de la pantalla para validar los datos (%nombre, %calle, %telefono, %grupo, %selección) como quieras, guardándolos en una variable global, un archivo de texto, etc...
Nota: Dejo para tí que te pelees con el elemento menú. Es muy configurable, en colores, dimensiones, separaciones entre elementos,... No obstante te aconsejo que extiendas el elemento Label por encima de Icon y Index. Reconozco que és la parte más engorrosa de configurar hasta que no consigues el resultado apetecido, pero no hay otra: peléate un poco y verás lo bién que funciona.
dj_janker
10/05/16, 18:34:32
Pues no me preguntéis como, pero ninguna de las opciones lógicas propuestas funcionan. Y he probado todo....
Pero al final como soy un cabezota me he propuesto hacerlo funcionar y lo he conseguido. No me preguntéis porqué pero las 2 escenas "variable query" modificadas que he creado con una rueda con distintos items en ambos casos, se ejecutan correctamente siempre que entre las opciones de la rueda añado una que no vaya a usar tipo: "-------", marcándola para que aparezca como predeterminada en primer lugar.
Para ello como digo añado una opción más, "-----", entre los items que quiero mostrar, y lo marco como predeterminado. En la pestaña items no asigno ninguna opción.
En la pestaña selección de items creo una acción establecer variable, %cualquiervariablelocal a %tap_label
Lo raro es que he hecho lo mismo en ambas escenas, asignando 2 variables locales diferentes, pero intrascendentes a %tap_label.
Luego he creado la tarea con sus correspondientes acciones y hago una primera consulta de variable en la que la tarea me rellena la variable local asignada en la pestaña "selección de items", con el valor del %tap_label, y luego en función de su valor hago otra consulta de variable con la segunda escena y me rellena correctamente la variable local definida en su correspondiente "selección de items", con el nuevo valor de %tap_label de esta segunda escena.
Antes hacía lo mismo, con la diferencia de no añadir el item "-----" en las escenas, y en la segunda consulta el valor de la variable local no tomaba el valor de la segunda selección %tap_label, sino que seguía manteniendo el de la primera.
No he hecho carga ni destrucción de escenas, ni he añadido a mi tarea ninguna acción más de la sección escenas de las que tenía en un principio.
Qué cosa más rara.....
WillyWeb
10/05/16, 21:42:43
La variable %tap_label sólo toma valor cuando "cambia" la selección. Si marcas "SI" como opción por defecto y tú seleccionas "SI" la variable %tap_label sigue sin valor. Cuando has metido como opción por defecto algo que te ha obligado a seleccionar una opción diferente te ha funcionado. Eso es lo que tiene que pasar.
dj_janker
11/05/16, 07:13:00
La variable %tap_label sólo toma valor cuando "cambia" la selección. Si marcas "SI" como opción por defecto y tú seleccionas "SI" la variable %tap_label sigue sin valor. Cuando has metido como opción por defecto algo que te ha obligado a seleccionar una opción diferente te ha funcionado. Eso es lo que tiene que pasar.
Ah vale ahora lo entiendo. Seguro que es por eso. Gracias por la explicación[emoji6] , no quería quedarme con la espinita de haberlo hecho funcionar pero sin saber muy bien como.
Saludos
Enviado desde mi JY-S3 mediante Tapatalk
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.