Características (continuación):
Herencia de clases
La jerarquía de clases, define implícitamente una herencia de clases. Una clase que es hijo de otra clase heredará las propiedades de su clase padre, mientras la propiedad en cuestión no haya sido modificada en el hijo. Es decir, cambios en una propiedad a nivel de una clase padre se reflejarán en los hijos a menos que esa propiedad haya sido modificada previamente en el hijo, por lo cual pierde la calidad de valor heredado.
Nota: No existe el concepto de herencia de "Tags HTML". La jerarquía de los Tags HTML es para representar el anidamiento de los tags en el HTML generado.
Asignación de themes
Una vez definido un tema se puede asociar a la base de conocimiento, al modelo, o a un objeto específico.
En cualquiera de los casos, para los controles del objeto está disponible la propiedad Class. Allí se podrá asignar al control, tanto en tiempo de diseño como en ejecución alguna de las clases definidas en el theme asociado que sean compatibles con el control.
GeneXus sabe qué tipo de Clases aplican a qué tipos de objetos, evitando que el usuario asigne clases a un objeto que no son compatibles con el mismo.
Existe el concepto de clase default, por lo cual cuando en GeneXus se asocia un theme a un objeto, a cada control definido en el objeto se le asocia una clase por defecto, aquella que se definió con el Set Default.
Propiedades de los controles
Si un control está de alguna forma vinculado a un tema (ya sea porque el tema fue asignado al objeto que lo contiene, al modelo o a la base de conocimiento), se asignará a una clase (en principio la clase por defecto como se explica en el punto anterior, o la seleccionada por el usuario), sin embargo, las properties del control configuradas a nivel del control mismo tendrán prioridad sobre las definidas en la clase correspondiente.
Ventajas Generales
- Se puede cambiar la clase de un control en run time para otra compatible.
- Se puede asociar una clase a un control y cambiar algunas propiedades a nivel del control mismo (por ejemplo, que el font no lo tome de la clase sino de la propiedad del control). Esto se puede hacer tanto en diseño como en run-time.
- Se puede tener el programa ejecutando, entrar al editor de temas, cambiar algunas propiedades, y ver los cambios al hacer un refresh del browser.
- No será necesario configurar propiedades de los controles. Basta con agregar clases y referenciarlas.
Compatibilidad con versiones anteriores de GeneXus
En la conversión de una base de conocimiento de la versión 7.5 de GeneXus a la versión Olimar, si no se tiene pensado usar themes dentro de esta nueva base de conocimiento (KB) convertida, no se necesita realizar ningún cambio más que el proceso automático de conversión.
En una base de conocimiento 7.5 muchos de los controles incluidos en los objetos tendrán configuradas sus propiedades. Estas configuraciones se mantienen en la versión Olimar.
Es decir, se mantiene la compatibilidad de la versión 7.5 a la versión Olimar por más que no se definan themes en la KB convertida.
Por otro lado, si se va a usar el nuevo objeto themes, lo cual se recomienda por las ventajas que implica hacer uso de esta funcionalidad, es necesario considerar que la configuración de las propiedades de un control se toma según las siguientes reglas:
- Si una propiedad no está configurada como default (es decir, está con el asterisco en gris), las propiedades se tomarán del control, y no de la clase asociada al control.
- Si una propiedad está como default (es decir, está con el asterisco en negro), se toman las propiedades de la clase asociada al control.
Es decir, el hecho de asociar un tema a un objeto que antes pertenecía a la versión 7.5 de GeneXus, (ya sea directamente al objeto o al modelo o kb a la que pertenece), implica que será necesario configurar a nivel del tema, las propiedades de aquellas clases que están asignadas a controles que permanecen con settings por default.
Esto es debido a que los valores de dichas propiedades, al estar por default a nivel del control, se tomarán de la clase asignada al control, del tema asociado al objeto que lo contiene.