Sabías que … (4)

Vamos con una nueva entrega de nuestro juego del verano… “Sabías que” en este post veremos curiosidades sobre procesos, registros y rejillas.

Por si te perdiste las tres primeras entregas del “juego”, no está de mas recordarlas:

¿Sabías que..?

Se puede desactivar la ordenación de las columnas de las Rejillas de 2 formas …

    • Pero ninguna de ellas con Velneo nativo.
    • La primera usando el API mediante la función setSortingEnabled(false) de la clase VGridListDataView.
    • La segunda se consigue usando una regla CSS sobre el control Rejilla.

Interfaz: Establecer hoja de estilo CSS ( GRD_REJILLA, “QTableView { qproperty-sortingEnabled: false}”)

Se puede ACELERAR LA CARGA DE LOS REGISTROS DESDE SERVIDORES REMOTOS

    • En nuestras aplicaciones necesitamos consultar a menudo tablas con muchos registros (artículos, clientes, …).
    • En Cloud la primera consulta necesita un tiempo extra para guardar los registros en la caché del cliente.
    • Ese tiempo extra puede resultar en una mala experiencia para el usuario.
    • Podemos minimizar ese tiempo extra precargando los registros en el autoexec de la aplicación mediante un proceso en 2º plano y el comando Cargar lista
    • El comando Cargar lista rellenará la caché con los registros de la tabla y de esta forma la primera consulta que realice el usuario se hará desde la caché en lugar del servidor remoto.

Se puede fijar el tamaño de un Dock cuyo Objeto incrustado sea un formulario

    • Muchas veces nos interesa bloquear el tamaño de un Dock de tipo formulario, aparte de fijarlo en un sitio de la pantalla.
    • Usaremos el CSS siguiente en el que establecemos el mismo valor para las propiedades min-height/max-height o min-width/max-width:

QDockWidget {
       /* Los Docks son hijos de la Ventana principal QMainWindow y heredan los valores de min-width y min-height */
       /* Por eso se sobreescriben con la clase QDockWidget */
       min-width: 300px;
       /* Haciendo el min=max conseguimos que el Dock no sea modificable en tamaño */
       min-height: 100px;
       max-height: 100px;
}

    • Hay que tener en cuenta que el CSS afectará a todos los Docks de tipo formulario que tenga la Aplicación, por lo tanto, esto solo es válido cuando existe un solo Dock. (Los Docks del editor de Informes personalizados también se verán afectados).

Ordenar una Rejilla sin tener en cuenta ni mayúsculas ni acentos

    • La ordenación que tenemos en la Rejilla es alfabética y tendrá en cuenta las mayúsculas y acentos.
    • Para disponer de una Ordenación independiente de mayúsculas y acentos lo que debemos hacer es añadir un nuevo campo #NOMBRE_64 a la tabla que sea de tipo Fórmula alfabética. El contenido de la fórmula será stringToAlpha64(#NOMBRE). El campo NOMBRE es el que queremos ordenar.
    • Con el comando Ordenar lista (#NOMBRE_64) conseguiremos el resultado deseado.

El comando Set retorno de proceso = NO en procesos de 3P inhabilita el comando Get variable local de objeto ejecutado desde 1P

    • Mucho cuidado con el comando Set retorno de proceso = NO en procesos ejecutados en 3P y que deban devolver valores en variables locales
    • El comando Get variable local de objeto no es funcional cuando el proceso en 3P ha terminado con un Set retorno de proceso = NO
    • Por lo tanto, cuando un proceso vaya a ser ejecutado en 3P lo mejor es no usar este comando y sustituir el retorno por una variable local que leeremos desde 1P

La carpeta base en el Visor HTML es siempre la caché de vClient

    • La carpeta base del código que ejecutamos en el Visor HTML es siempre la caché de vClient
    • Tenemos que tenerlo en cuenta si queremos usar links en el código que hagan referencia directamente al fichero
    • Para cambiar la carpeta base tenemos que usar la función del API VCWebView.setSourceCode(html, pathBase)
    • También podemos fijarla con el tag HTML base

Un proceso en 4P ejecutado desde vClient no contempla la herencia hacia arriba

    • Los procesos en 4P se ejecutan siempre en una copia de la instancia del proyecto al que pertenecen
    • Lo podemos comprobar con el siguiente ejemplo:

Tenemos un proceso PRO_VERALIAS javascript en el proyecto de datos,

var cAliasAPP = theApp.mainProjectInfo().alias();
// Muestra en vAdmin el Alias
alert (“El valor de theApp.mainProjectInfo().alias() es: ” + cAliasAPP)

Ejecutamos el proceso PRO_VERALIAS desde el proyecto de aplicación en 3P y 4P.

Comprobamos que en 3P devuelve el alias del proyecto de aplicación y en 4P sin embargo devuelve el alias del proyecto de datos.

    • Por lo tanto, habrá que tener en cuenta este comportamiento en aquellos scripts javascript que vayamos a ejecutar tanto en 3P (síncrono) como en 4P (asíncrono).
      El resultado no será el mismo cuando en el código se vaya a contemplar la cadena de herencia, por ejemplo la función VProjectInfo.allTableCount().

QML solo funciona en 1P

    • El código QML se ha incorporado a Velneo para mejorar nuestros interfaces, sobre todo en dispositivos móviles.
    • Los scripts QML siempre van asociados a un formulario.
    • Así que QML solo tiene sentido en 1P y el código estará siempre descargado en la caché de vClient.

En tiempo de diseño el editor de fórmulas javascript evalúa las expresiones introducidas

    • El botón Verificar (F9) no solo comprueba la sintaxis del código javascript sino que además evalúa la expresión.
    • Este comportamiento en tiempo de diseño puede tener consecuencias curiosas o incluso peligrosas.

Dos ejemplos:

SET(LOK, /*JAVASCRIPT*/theApp.setOverrideCursor(17))
SET(LOK, /*JAVASCRIPT*/theApp.removeFile(“d:/este_fichero_se_va_a_borrar.txt”))

    • Para evitar que se evalúe el código en tiempo de diseño podemos usar el siguiente comando:

if (theApp.exeName() != “vDevelop”) { <expresión javascript> }

Y ahora confiesa… ¿cuántas sabías? 

Déjame un comentario mas abajo y comenzamos el debate.

Paco Satué
correo@pacosatu.es

Es un Ingeniero de Telecomunicación de carrera y un Informático-programador por vocación, que empezó en los 80 con DBase, Clipper y FoxBase. Hasta el año 2012 utilizó Visual Foxpro, pero debido a su abandono por parte de Microsoft tuvo que buscar una herramienta de desarrollo alternativa. La elección fue Velneo porque principalmente es una empresa española con soporte cercano, aparte de un producto moderno y adaptado a las últimas tecnologías Cliente-Servidor en Cloud.

2 Comments
  • Ramon Denuc
    Posted at 16:11h, 21 Julio Responder

    Paco, muchísimas gracias por tus recomendaciones.

    Siempre va bien, aunque sirvan solo para recordatorio.

  • Julio Cesar Hoyos
    Posted at 17:58h, 21 Julio Responder

    Geniales voy a revisar!

Post A Comment

Pin It on Pinterest