Aprendiendo


([N1] luiscandelas-2) #1

Hola a tod@s, Necesito que al pinchar sobre un control, dentro de un formulario, se abra una lista (rejilla) para seleccionar el dato que me interese y se introduzca en el control. Espero haberme explicado, no tengo experiencia en Velneo y seguro que es sencillo.
Gracias.


([N3] NexusFireMan) #2

Hola Luis,

En este vídeo es posible que encuentres los que buscas.

https://www.youtube.com/watch?v=GHqatkeUHWQ

Un saludo


([N1] luiscandelas-2) #3

Lo he visto. Muy interesante. Cada dia aprendo algo nuevo, pero no logro mi objetivo.
“Necesito que al pinchar sobre un control, dentro de un formulario, se abra una lista (rejilla) para seleccionar el dato que me interese y se introduzca en el control”

Thanks.


([N1] Spicer) #4

Hola,

Lo que yo sugiero es:

  1. Al lado del control donde quieres introducir el dato, agrega un botón
  2. Este botón le pones como comando “Localizar Maestro” (en caso que el dato que vayas a introducir sea un enlace maestro)
  3. En caso que el dato NO pertenezca a un enlace maestro de la tabla de origen, tendrías que crear un manejador de evento, en el cual haces la busqueda del dato que vas a mostrar, luego “Seleccionar ficha de la lista” --> Leer ficha seleccionada. Grabas ese dato en una variable local, y despues, haces “Modificar campo”, indicando el campo destino y el valor de la variable que grabaste

([N3] Servinfor) #5

Spicer muchas gracias. No es lo que necesito. Me explico un poco mas, a ver si a alguien se le enciende la bombilla que yo debo tener fundida jaja.

En un control de edición alfabética, tengo en tipo de menú de botón, “botón izquierda”, y en menú de botón, accedo a un menú, por ejemplo colores de coches.
Como mi aplicación va destinada a un movil y la pantalla es pequeña, el botón es diminuto y si lo hago grande se come medio control.

Necesito que al pinchar sobre el mismo control, se abra el menú para elegir el color del coche y pinchando sobre el color, se introduzca la información elegida en el control. Sin botones.

Gracias a todos.


([N4] Infortic) #6

Hola.

Suponiendo que el campo COLOR de la tabla coche es un enlace a maestro de la tabla COLORES:

Crea un localizador para los colores llamado COLORES.

Crea un manejador de evento SEL_COLOR.

SET (COD_COL,0)
Localizador (COLORES)
SET (COD_COL,#ID)
IF (COD_COL!0)
modificar campo (#COLOR_COCHE,COD_COL)

Crea una conexion de evento asociada al control y con la señal de Gana foco asociado al manejador anterior, mejor que en gana foco yo usaría el de click o doble click.

Un saludo.


([N3] Servinfor) #7

Gracias Infortic. Estoy comenzando y lo que para vosotros es obvio, para mi es desconocido. Imagino que no lo he realizado bien. He creado una conexión de evento asociada al control “COLOR” llamada COLORES.
Esta conexión activa el manejador de evento llamado SEL_COLOR.

En el manejador he puesto ésto:

Manejador de evento: SEL_COLOR
Set ( , COD_COL,#ID )
Localizador ( LOCALIZADOR_COLORES@vContactos Móvil )
Set ( , COD_COL,#ID )
If ( COD_COL!0 )
Modificar campo ( ID, #NAME,COD_COL )

No funciona, imagino que está mal. Si pudieras orientarme seria perfecto.
Gracias


([N1] luiscandelas-2) #8

Me explico un poco mas. COD_COL no se si es una variable que tengo que crear.
Los campos a que haces referencia, interpreto que son de la tabla colores, asociada a la tabla vehiculos, pero me lo tienes que explicar un poco mas.
Perdona mi ignorancia.
Un saludo.


([N4] Infortic) #9

No pasa nada, al principio todo es complicado, pero para ayudarte necesitamos algunos datos.

En primer lugar tenemos que saber cómo tienes la bbdd.

Según cuentas tienes una tabla VEHICULOS que tiene un campo que indica el color.

¿ Cómo se llama ese campo y de qué tipo es ? ¿es un enlace a la tabla de colores? ¿es un campo alfabético?

Luego tienes una tabla de colores.

¿Cómo se llama la tabla y qué campos tiene?

Según cómo tengas la tabla habrá que modificar el manejador de evento para que funcione correctamente.


([N1] luiscandelas-2) #10

La tabla Maestro es VEHICULOS
La tabla COLORES tiene enlace a maestro a la tabla VEHICULOSL
La tabla COLORES tiene dos campos: ID que es numérico y NAME que alfa 128
El control, en el formulario en el que quiero utilizar para introducir y grabar el color se llama COLOR y el contenido de dicho control es #COLORES.NAME

Espero haberme explicado.
Thanks.


([N1] luiscandelas-2) #11

perdon la tabla se llama VEHICULOS
NO VEHICULOSL


([N1] Spicer) #12

Hola,

Creo que lo estás haciendo al revés.
Dices “La tabla Maestro es VEHICULOS. La tabla COLORES tiene enlace a maestro a la tabla VEHICULOS”

La tabla VEHICULOS debiera tener un enlace maestro a COLORES, ya que un vehiculo tiene sólo un color, pero un color puede estar presente en multiples vehiculos.

En cuanto tengas eso podrás usar el localizador


([N1] luiscandelas-2) #13

Perdón, me explique al revés. La tabla está bien. La tabla VEHICULOS enlaces maestros a COLORES, MODELOS, MARCAS, etc.

Creo que las instrucciones del manejador de eventos las puse mal.


([N1] luiscandelas-2) #14

No hace nada. No logro hacerlo funcionar. Si se te ocurre algo, pruebo.
Gracias


([N1] wikan) #15

Si vas a hacer una aplicación destinada a un entorno táctil olvida localizadores y demás. Y si no tienes experiencia en Velneo ni te digo que lo hagas con QML.

Tendrás que currarte las pantallas para que sean usables en táctil. Los localizadores tendrán que ser formularios sin origen que carguen lo que necesitas y guardas en el id en una variable local para luego asignarla.

Crea un formulario sin origen que guarde la lógica para buscar un color y guardar su id en una variable local. En el formulario de vehículos mediante un evento y un manejador de objectos llamadas a dicho formulario y recoges la variable y asignas el id al campo maestro. Así con cada maestro, todo eso si quieres hacer una aplicación usable mediante táctil.

De todas formas, tirarte a hacer una aplicación móvil sin experiencia…


([N1] luiscandelas-2) #16

Muchas gracias Manuel. Tienes razón en cuanto a la dificultad, pero no tengo otra opción, y además me empieza a gustar Velneo. Trabajé programando, pero hace muchos años.

Si puedes, podrías hacerme un ejemplo de lo que me explicas, para que lo asimile mas rápido y pueda probarlo, aunque entiendo la lógica.

Gracias.


([N1] wikan) #17

Buenos días, con la explicación que te digo puedes empezar.
Empieza por un formulario sin origen que cargue en una rejilla la lista de colores y al aceptar guarde el id del color seleccionado en una variable local.

De todas formas veo que respondes también desde una cuenta de n3, supongo que habrá alguien en la empresa te pueda orientar más rápido que esperar un ejemplo del foro.


([N4] Infortic) #18

Hola Luiscandelas.

Como dice wikan para android es mejor.

De todas formas si quieres probar con un localizador es rápido para ver como queda.

Créate una rejilla para la tabla COLORES con una única columna NAME con ancho máximo disponible.

Créate un localizador de la tabla COLORES con esa rejilla asociada y con el índice NAME de la tabla (o el que quieras que tenga por defecto la búsqueda).

En el formulario:

El textox de color le pones nombre COLOR y contenido #COLORES.NAME.
Crea una variable ID_COLOR de tipo numerico.
Crea un manejador de evento llamado SEL_COLOR

Set (ID_COL,0 )
Localizador ( LOCALIZADOR_COLORES@vContactos Móvil )
    Set (ID_COL,#ID )

If ( ID_COL!0 )
Modificar campo ( #COLORES , ID_COLOR )

(el código que habias puesto no tenía sentido, si siquiera la cantidad de parámetros de las funciones SET, es normal que no funcionara)

Crea una conexión de evento asociada al control COLOR y la señal al ganar foco (o al doble click, o al click, a la que quieras que responda) y la asocias al manejador SEL_COLOR.

Con eso debería de funcionar, eso si, como te han dicho, este tipo de programación es más adecuada a moonitores y teclados, se hace menos usable en un teléfonos.