q Atributos ReadOnly
Normalmente, para que el usuario de las aplicaciones Web pueda distinguir visualmente en forma rápida qué campos son editables y cuales son readonly, éstos se tratan de diferenciar de alguna forma, por ejemplo haciendo que los editables tengan bordes "3D" y los otros uno "flat".
Ahora se crea automáticamente una clase “ReadOnlyAttribute”, hija de la clase “Attribute”, de manera de que los atributos o variables que vayan a ser readonly en tiempo de ejecución sean automáticamente asociados a dicha clase.
Hay diferencia de comportamiento en cuanto a si el atributo/variable se encuentra en el nivel plano del form, o no.
a. atributo/variable en nivel plano del form
Al asociar un control a la clase "Attribute", la aplicación generada utilizará la clase especificada "Attribute" en el caso que el control sea editable y si el control no es editable utilizará la clase nombrada "ReadOnlyAttribute".
NOTA:
Si el usuario asigna la clase 'X' y el control es readonly, éste se asocia en runtime a la clase "ReadonlyX"; si la clase no existe, se toman los valores de configuración default (los configurados en el browser). En ese caso, hay que tener definida una clase "ReadOnlyX" hija de "X", con borderStyle none.
b. atributo/variable en Grids/FreeStyle Grids
Aquí el comportamiento se distingue para el caso de que el atributo/variable sea ReadOnly en runtime o no lo sea, y que esté asociado a la clase default o no.
Supongamos que el atributo/variable está asociado a la clase default (lo cual se indica en el diálogo de propiedades de la variable, con un asterisco negro a lado del valor de la clase):
q Si no es ReadOnly (es editable)
En tiempo de ejecución tomará los settings de la clase que tiene asociada el atributo/variable.
q Si es ReadOnly
En tiempo de ejecución heredará las propiedades del Grid en el que se encuentra.
Supongamos ahora que el atributo/variable está asociado a una clase No default (lo cual se indica en el diálogo de propiedades de la variable, con un asterisco gris a lado del valor de la clase):
q Si no es ReadOnly (es editable)
En tiempo de ejecución tomará los settings de la clase que tiene asociada.
q Si es ReadOnly
En tiempo de ejecución heredará las propiedades de la clase “ReadOnlyX” donde” X” es la clase que se le asignó en diseño.
En resumen, si el atributo/variable dentro de un Grid o FreeStyle Grid está asociado a un clase default, solo tomará los settings de esa clase si es editable en runtime. Si no lo es, hereda del Grid.
Si no está asociado a una clase default, siempre toma los settings de la clase (sea editable o ReadOnly, en este último caso queda asociado a “ReadOnlyX”)
NOTA:
Si se asocia la clase “none” al atributo/variable, éste siempre hereda la configuración del Grid, por lo cual en el caso de ser editable, no hay forma de hacer que tenga el efecto “3D”.
q Edits en FreeStyle Grids
Si se tiene un control edit dentro de un FreeStyle Grid, el orden de precedencia en cuanto a la configuración de los controles en runtime es:
1. Configuración del control edit, ya sea los valores de configuración dados en el control mismo, o a través de una clase asociada al control.
2. Configuración de la celda del FreeStyle grid.
3. Configuración del FreeStyle grid propiamente dicho, ya sea que fuese dada en el control o en una clase asociada al FreeStyle grid (es decir, propiedades LinesBackColor, LinesBackColorEven, etc)
NOTA:
Si se quiere que el control edit en el FreeStyle grid herede los settings del contexto, se le debe especificar clase “none”, y dejar el resto de los valores de configuración por default. Si el control es readonly, y tiene clase asociada default, tambien hereda los settings del grid.
q Propiedad Fill de atributos/variables
Si la propiedad Fill de un atributo/variable esta con el valor False, no se considera el backcolor dado en la clase asociada al control, es decir, en ese caso el backcolor se hereda del contexto en el que se encuentre el control.
Si el valor de la propiedad es True, y el backcolor tiene el valor default tanto en el control como en la clase (no tiene valor explícitamente asociado), el backcolor se hereda del contexto, es decir, del backcolor del control contenedor del atributo/variable.
q Propiedades asignadas en runtime y themes
Si una propiedad de un control hereda su valor de una clase, y esa propiedad se intenta cambiar en runtime en un evento de usuario, cuando se inicializa el objeto, no toma el valor dado en la clase. Lo que se debe hacer en este caso es cambiar la propiedad class del control en runtime.