09 May Sabías que … (3)
Vamos con una nueva entrega de nuestro mítico juego… «Sabías que» en este post veremos curiosidades sobre búsquedas, cestas y listas.
Por si te perdiste las dos primeras entregas del «juego», no está de mas recordarlas:
- Primer «quesito» del trivial: ¿Sabías que?… Parte 1
- Segundo «quesito» del trivial: ¿Sabías que?… Parte 2
En los objetos Búsqueda no sabemos a priori el campo por el que va a estar ordenada la lista de salida
-
- Aunque esto ya está documentado en la ayuda, no está de más recordarlo. Para ordenar la salida de un objeto Búsqueda tendremos que usar siempre un comando Ordenar lista.
- En procesos, funciones o manejadores de evento que disparen búsquedas, usaremos el comando Ordenar lista, en acciones que disparen búsquedas, incluiremos entre la Búsqueda y el objeto de lista de la salida un proceso, con origen y destino lista de la tabla de la búsqueda, que ordene y añada la lista a la salida, .
Las Cestas pierden la ordenación que tuviera establecida la Lista Origen
-
- Si ordenamos la Lista de salida de una Búsqueda y la copiamos a una Cesta para poder volcarla a una Rejilla, entonces perderemos el orden establecido.
- Por lo tanto, el comando Ordenar lista deberá ejecutarse después de copiar la Cesta a la Rejilla. Veamos un ejemplo:
Rem ( Ejecución de una Búsqueda para alimentar la Rejilla del formulario ) Rem ( Utilizamos la Cesta como bufer intermedio para rellenar la Rejilla con el resultado de la Búsqueda ) Cesta: Crear cesta local ( MI_BUSQUEDA@MiApp_app, oCesta ) Crear manejador de objeto ( oBuscar, Proceso PRO_BUSCAR@MiApp_app ) Libre Set variable local de objeto ( oBuscar, DFECHA_INI, DFECHA_DES_INI ) Set variable local de objeto ( oBuscar, DFECHA_FIN, DFECHA_DES_FIN ) Libre Disparar objeto ( oBuscar, 3º plano: Servidor (síncrono), ) Set ( NNUM_REGISTROS, sysListSize ) Rem ( ¡OJO! La Cesta pierde la ordenación que tuviera establecida la Lista Origen ) Cesta: Agregar lista a la cesta ( oCesta ) Interfaz: Procesar ( GRD_DOCUMENTOS, Todas ) Cortar lista ( 0, ) Cesta: Agregar a la lista en curso ( oCesta ) Rem ( Tenemos que ordenar la lista obtenida después de pasar por la Cesta porque ésta deshace la ordenación ) Ordenar lista ( #F_REGISTRO, #ID, , , , ) Invertir lista Seleccionar ficha por posición ( 1 ) Interfaz: Establecer foco ( GRD_DOCUMENTOS )
El comando «Modificar ficha de maestro» FUERZA EL refresco DE los campos DEL MAESTRO
-
- En los controles del formulario, después de haber modificado la ficha del Maestro desde un proceso independiente, los campos de dicho maestro no refrescan los cambios porque el puntero a maestro no ha cambiado.
- Para forzar la lectura de la ficha del maestro desde el servidor y actualizar la caché es suficiente con ejecutar el comando Modificar ficha de maestro desde un manejador de evento.
- Este comando produce un refresco en el formulario de todos los campos del maestro.
El ancho y alto mínimos de los controles Caja de texto vienen determinados por la clase VMainWindow y las propiedades CSS min-weight y min-height
-
- Si has fijado a un valor determinado las propiedades CSS min-weight y min-height de la clase VMainWindow comprobarás que los controles Cajas de texto de los formularios en modo Vista también se verán afectados.
El comando Set dato de retorno no funciona en los procesos, aunque hay una excepción
-
- En los procesos que van a ser usados desde la web (con VModApache) la forma de devolver el dato al servicio de Apache es mediante el comando Set dato de retorno.
- Esto ocurre cuando el Estilo del proceso lo fijamos a «Accesible Web«.
La propiedad Valor del control Botón de radio debemos expresarla como una Constante
-
- El control Botón de radio tiene la propiedad Contenido (expresión de fórmula) y la propiedad Valor (valor constante).
- Por lo tanto, si el contenido es numérico pondremos Valor = 9 y si es de tipo carácter pondremos Valor = A, sin las comillas.
La función HomePath() en Cloud nos permite crear directorios en tercer plano
-
- “Crear directorio” es un comando de Velneo que actúa a nivel de sistema operativo. Por esa razón en Cloud tenemos que acceder con al ruta completa homePath() + “/Velneo/datos/<<archivo.ext>>” que es la ruta del sistema Linux en el vServer.
- “SDV: Subir fichero al servidor” es un comando de Velneo de tipo Cliente/Servidor, por lo tanto la ruta donde guardamos el fichero es una ruta Virtual. Esa ruta Virtual se define en vAdmin en la opción de menú Datos. Por defecto disponemos de la ruta Virtual “datos/” que equivale a la ruta física homePath() + “/Velneo/datos/ en el vServer.
Si cruzamos 2 listas del mismo tamaño el resultado se ordena igual que la lista cargada en primer lugar
-
- Ya sabemos que cuando cruzamos 2 listas, la lista resultante tendrá el mismo orden que la lista de mayor tamaño
- Cuando cruzamos 2 listas, si éstas tienen el mismo tamaño, el orden de la lista resultante es el mismo que la lista que hayamos cargado primero
Por ejemplo: Cargo la Lista1 y se añade a la Cesta1. Cargo nuevamente la Lista1 con el mismo número de registros pero en distinto orden y cruzo la Cesta1 con la Lista1.
El orden que prevalece es el de la Cesta1.
Podemos usar el selector CSS CLASE[objectName|=valor] para filtrar los controles de nuestra aplicación
-
- Cuando queremos aplicar un determinado CSS a un objeto concreto de nuestra aplicación usamos el selector CLASE#IDENTIFICADOR
- Sin embargo, podemos usar también un Selector que nos aporta una gran flexibilidad, es el selector CLASE[objectName|=<valor>] que funciona seleccionando los controles cuya propiedad Identificador comienza con <valor>.
Veamos un ejemplo:
Queremos que el usuario identifique visualmente los campos obligatorios dentro de los formularios. Para ello usaremos un fondo amarillo brillante.
La selección en el CSS será QDoubleSpinBox[objectName|=NUM_O_], QDateEdit[objectName|=DAT_O_], QDateTimeEdit[objectName|=DAT_O_], QTimeEdit[objectName|=TIM_O_], QLineEdit[objectName|=TXT_O_] {background: yellow;}
De esta forma es suficiente con cambiar el Identificador de un control para que tenga fondo amarillo, sin tocar el CSS de la aplicación.
Otros ejemplos:
QPushButton:flat[objectName|=CMD_IMP_] {background-color: orange;} /* Botones naranjas */ QLabel[objectName|=LBL_AZUL_] {color: SteelBlue;} /* Etiquetas azules */
Y ahora confiesa… ¿cuántas sabías?
Déjame un comentario mas abajo y comenzamos el debate.
No Comments