Atributos
Atributos de las definiciones de campo
actualizar_escrito
Atributo que permite la edición de un campo y su posterior sustitución por la marca en el escrito, una vez el objeto está protegido. Es un atributo lógico, cuyo valor por defecto es falso
. En caso de querer activarlo, se le asignará el valor verdadero
. También permite la asignación de una expresión que devuelva un valor lógico.Hay que tener en cuenta que cuando un objeto está protegido, los campos no se pueden editar. Para poder hacerlo es necesario incluir el atributo edicion.proteger
, que permite la edición de un campo aunque el objeto esté protegido.
apariencia.altura
apariencia.desplegable
Indica si los valores que puede obtener un campo pueden aparecer en forma de desplegable. Es de tipo lógico, aunque no admite expresiones lógicas.Este atributo, debe ir a compañado de otro atributo llamado edicion.valores
, que contendrá los valores a seleccionar en el desplegable. De lo contrario, provocará un error de compilación.
apariencia.proporcion
certificado.estado
Atributo que actúa exclusivamente en campos de tipo timbre
. Si le asignamos protegido
indicaremos que una vez timbrado el objeto, éste se protegerá, de forma que no se podrá editar ningún campo del objeto.
certificado.secuencia
Atributo oculto de un campo timbre
(no permite ninguna asignación a nivel del programador) que adquiere el valor siguiente al valor actual de la secuencia en formato texto. Su valor, podrá ser asignado accediendo a la propiedad [&Valor_secuencia]
. En caso de incluir el atributo certificado.secuencia.longitud
en la definición del campo timbre, los dígitos que aún no se utilicen para formar el valor de la secuencia se mostrarán como ceros a la izquierda.
certificado.secuencia.nombre
Atributo para especificar el nombre de la secuencia en un campo timbre
. El valor a asignar es de tipo texto.
certificado.secuencia.longitud
Atributo para indicar el número máximo de caracteres que aceptará la secuencia de un campo timbre
. Se indicará mediante un valor entero.
certificado.subsecuencia.valor
Una subsecuencia se utiliza para reiniciar la secuencia cuando el valor de la subsecuencia cambie. Es decir, no funciona como una secuencia, en donde se van adquiriendo valores correlativos, sino que adquiere un valor, y en el momento que cambie dicho valor, el atributo certificado.secuencia
se reiniciará.El valor a asignar a este atributo será de tipo texto, pudiendo utilizar expresiones más complejas que devuelvan una ristra mediante funciones de librería, por ejemplo.
Es posible acceder al valor de este atributo mediante la propiedad del campotimbre
, [&Valor_subsecuencia]
.
certificado.subsecuencia.longitud
Al igual que el atributo certificado.secuencia.longitud
, sirve para indicar el número máximo de caracteres que aceptará la subsecuencia de un campo timbre
.
certificado.valor
Es el atributo que contiene el valor que obtendrá el campo timbre una vez timbremos el objeto y lo guardemos. Podemos asignar expresiones de tipo texto, usando funciones de librería y accediendo a las propiedades del propio campo timbre [&Valor_secuencia]
y [&Valor_subsecuencia]
.
A continuación, veamos un ejemplo en el que podamos reflejar todos los atributos explicados. Se recomienda, antes de observar el ejemplo, que se estudie todos los atributos relacionados con los campos timbre:
En este ejemplo, queremos que el código de cada expediente sea, primero el año en el que se dio de alta el expediente, y luego el valor de la secuencia, separados por un guión.tipo
[Expediente]es
contenedor
[Datos generales]es
formulario
[Número de expediente]es
timbre
-certificado
.subsecuencia
.valor
= ($texto($Año($Hoy)); -certificado
.subsecuencia
.longitud
= 4; -certificado
.secuencia
.nombre
="SECUENCIA_ENTRADA"
; -certificado
.secuencia
.longitud
= 4; -certificado
.valor
= [&Valor_subsecuencia] +"-"
+ [&Valor_secuencia]; [Fecha]es
fecha
[Centro gestor]es
texto
[Órgano competente]es
texto
...fin
fin
En primer lugar hemos definido la subsecuencia. Ésta tomará el año de la fecha actual, y la transformará a texto mediante la función $texto
. A continuación hemos definido la longitud máxima de caracteres que podrá admitir la subsecuencia con valor 4, de forma que cuando se llegue al año 10000, se producirá un error.
certificado.secuencia.nombre
y una longitud, en este caso 4. El atributo oculto certificado.secuencia
irá obteniendo valores a medida que se vayan creando expedientes, y se reiniciará cuando el valor de certificado.subsecuencia.valor
cambie.Por último, sólo nos queda indicar la expresión de tipo texto en el atributo certificado.valor
, que como ya hemos dicho, tendrá el formato año-secuencia. ¿Cómo hacemos esto? Pues para mostrar el año al principio, necesitaremos acceder al valor de la propiedad "Valor_subsecuencia". Añadimos el guión, y finalmente accederemos al valor de la propiedad "Valor_secuencia".
edicion.aspecto
Este atributo sirve para especificar el modo visual en el que se muestran los caracteres de un campo. Su valor por defecto es normal
, pudiendo tomar también los valores minusculas
, para visualizar el campo en minúsculas, o mayusculas
, para visualizarlo en mayúsculas, independientemente de cómo se inserte el carácter en cualquier caso.Actúa en campos de tipo texto
, aunque también es posible definirlo en campos de tipo código
y de tipo vínculo
, pero su definición afecta a la propiedad [&Rotulo]
de dichos campos:
... ... [Nombre]es
texto
[Primer apellido]es
texto
-edicion.aspecto
= mayusculas; [Segundo apellido]es
texto
-edicion.aspecto
= minusculas; ... ...
edicion.formato
Atributo para especificar el formato que queremos aplicar a un valor de tipo texto de un campo. La forma de establecer el formato se realiza mediante las máscaras de edición de Delphi.
edicion.longitud
Atributo de valor entero para establecer un número máximo de caracteres en el campo. Su valor por defecto es ilimitado, es decir, podremos introducir todos los caracteres que queramos.
edicion.mensaje
Permite la aparición de un mensaje en un campo a modo de ayuda al usuario, antes de que se introduzca ningún valor. Por tanto, los valores asignables serán de tipo texto o toda expresión que devuelva un valor de tipo texto.
... ... [DNI]es
texto
-edicion.mensaje
="[NO INTRODUCIR LA LETRA]"
; ...
edicion.modo
El atributo edicion.modo
nos permite especificar de qué modo se obtendrá el valor de un determinado campo. Existen cuatro modos distintos de edición: normal, sugerencia, referencia y copia. Su valor por defecto es normal, es decir, el valor será introducido por el usuario.El modo sugerencia se utiliza para sugerir el valor que puede adquirir un campo. Para ello, se debe especificar en el atributo edicion.valor
, el valor a sugerir. Este valor se puede obtener de otros campos, o bien de una expresión que incluya, por ejemplo, funciones de librería. La expresión definida en edicion.valor, se comprobará cada vez que el usuario indique "sugerir el valor" mediante egExplorer. No obstante, el usuario podrá ignorar la sugerencia y editar el campo.
El modo referencia, al igual que el anterior, necesita la definición del atributo edicion.valor
. En él incluiremos la ruta del campo de donde se toma el valor, o bien, una expresión que nos devuelva un valor. Cuando un campo adquiere su valor mediante el modo referencia, no es posible la edición por parte del usuario. El valor del campo sólo podrá variar si el valor de edicion.valor cambia. Cuando se abra el objeto, se hará la comprobación del valor del atributo edicion.valor
.
edicion.valor
cambia, esto no afectara al campo. Además, el campo podrá ser editado por el usuario.Veamos por tanto un ejemplo de cada uno de los modos de edición:
Tenemos dos contenedores en nuestro centro llamados Cliente y Expediente. En el contenedor Expediente añadiremos un vínculo a Cliente para obtener el nombre del cliente en los modos de edición sugerencia, referencia y copia:
tipo
[Expediente]es
contenedor
[Datos generales]es
formulario
[Número]es
timbre
-certificado.subsecuencia.valor
= $texto($Año($Hoy)); -certificado.subsecuencia.longitud
= 4; -certificado.valor
= [&Valor_subsecuencia] +"-"
+ [&Valor_secuencia]; -certificado.secuencia.nombre
="EXPEDIENTES"
; -certificado.secuencia.longitud
= 4; [Fecha]es
fecha
-edicion.modo
= referencia;//El valor del campo fecha se obtiene de la propiedad [&Fecha] del campo timbre
-edicion.valor
= [Número].[&Fecha]; [Órgano competente]es
texto
[DNI del cliente]es
vinculo
-vinculo.definicion
= [Cliente]; -vinculo.etiqueta
= [Datos personales].[DNI]; -vinculo.valores
= $matriz([Clientes].[Contenido]); [Nombre del cliente en modo referencia]es
texto
-edicion.modo
= referencia; -edicion.valor
= [Cliente]->[Datos personales].[Nombre]; [Nombre del cliente en modo copia]es
texto
-edicion.modo
= copia; -edicion.valor
= [Cliente]->[Datos personales].[Nombre]; [Nombre del cliente en modo sugerencia]es
texto
-edicion.modo
= sugerencia; -edicion.valor
= [Cliente]->[Datos personales].[Nombre];fin
fin
tipo
[Cliente]es
contenedor
[Datos personales]es
formulario
[Código de cliente]es
timbre
-certificado.secuencia.nombre
="MISECUENCIA"
; -certificado.valor
="CL-"
+ [&Valor_secuencia]; [Nombre]es
texto
[Primer apellido]es
texto
[Segundo apellido]es
texto
[Fecha de nacimiento]es
fecha
[Lugar de nacimiento]es
texto
[Sexo]es
texto
-apariencia.desplegable
= verdadero; -edicion.valores
= $Matriz("Hombre"
,"Mujer"
); -edicion.seleccion
= verdadero; [DNI]es
texto
-edicion.mensaje
="[NO INTRODUCIR LA LETRA]"
;fin
fin
Una vez vistas las definiciones, creamos un objeto Expediente, y veremos qué datos obtienen aquellos campos que dependen del valor del atributo edicion.valor
:
Vemos que en el modo sugerir, no aparece ningún dato. Aparecería el valor de edicion.valor
en el campo, (Rafael), si el usuario picara en el cuadrado que aparece al lado del campo. El campo además es editable.
En el modo referencia, si nos fijamos, el campo no es editable (aparece en color amarillo) y el nombre que aparece es el mismo que en los otros dos modos.
Ahora bien, ¿qué ocurriría si modificáramos el nombre del cliente? Veámoslo:Quizás te estés preguntando qué ocurre con el campo Fecha, que también está definido en modo referencia. En el caso del nombre, hemos obtenido el valor de un campo definido en otro recurso (mediante un vínculo). Pero también podemos obtener un valor accediendo a una propiedad, que en este caso es la propiedad [&Fecha] de un campo timbre
.
edicion.precision
Campo para determinar el número de dígitos que acepta la parte decimal de un campo real. Su valor por defecto es 2, pudiendo asignar un valor entero para mostrar más o menos decimales. Cuando introducimos un número mayor de decimales que el especificado en edicion.precision
, se aplicará un redondeo.
edicion.proteger
Cuando un objeto está protegido, de manera que ninguno de sus campos es editable, puede que nos interese dar la opción de moficar alguno en concreto. Para ello existe este atributo. Su valor por defecto es verdadero (no será editable ningún campo). Asignaremos falso a edicion.proteger
en el campo que queramos editar, siempre y cuando el objeto esté protegido.Un objeto puede estar protegido cuando en un campo timbre
añadimos el atributo certificado.estado
y le asignamos el valor verdadero. También se protegerá un objeto cuando se firme un campo firma
.
tipo
[Cliente]es
contenedor
[Datos personales]es
formulario
[Código de cliente]es
timbre
-certificado.estado
= protegido;//Atributo que protege el objeto una vez timbrado el objeto
-certificado.secuencia.nombre
="MISECUENCIA"
; -certificado.valor
="CL-"
+ [&Valor_secuencia]; [Nombre]es
texto
[Primer apellido]es
texto
[Segundo apellido]es
texto
-edicion.proteger
= falso; ...fin
fin
edicion.regla
indica lo mismo que edicion.proteger pero cuando el objeto no se encuentro en modo protegido. indicara si el campo es editable o no, siempre y cuando el objeto no este protegido. acepta expresiones lógicas.
edicion.seleccion
edicion.valor
Atributo al que podremos asignar una expresión que devuelva un valor. Éste valor será utilizado por los modos de edicion sugerencia, referencia y copia mediante el atributo edicion.modo
, aunque también se puede utilizar en modo normal para asignar un valor a un campo automáticamente. Ver ejemplo
edicion.valores
Es el atributo encargado de administrar los posibles valores que puede adquirir un campo. Los valores vienen dados en forma de matriz, por lo que tendremos que utilizar la función $Matriz(<code>"ValorA"
,"ValorB"
)</code>, o bien realizar una consulta sobre una base de datos con la función $MatrizSQL(<code>"sentencia SQL"
)</code>.Si queremos que los valores aparezcan en forma de desplegable, utilizaremos el atributo apariencia.desplegable
en el mismo campo, si no, se abrirá una ventana con la lista de valores:
... ... [Sexo]es
texto
-apariencia.desplegable
= verdadero; -edicion.valores
= $Matriz("Hombre"
,"Mujer"
); ... ...
lista_comprobacion.inicializar
moneda.defecto
atributo para determinar la moneda de un campo de tipo moneda. su valor por defecto es euro, en forma de ristra. para asignar otra moneda se asignará como valor texto entre comillas.
reemplazar_siempre
En caso de contar con más de un campo firma en un escrito, con este atributo podemos establecer si queremos que se reemplace, una vez firmada, cada campo firma en el escrito, o si por el contrario, queremos que se reemplacen cuando todas las firmas hayan sido realizadas.Este atributo acepta los valores lógicos "falso" y "verdadero". En caso de querer ir sustituyendo una a una independientemente de las firmas que queden por realizar, asignaremos el valor "verdadero", si por el contrario queremos que se sustituyan todas una vez no falte ningún campo firma por firmar, asignaremos "falso".
Para ver un ejemplo sobre el funcionamiento de este atributo, accederemos al artículo referente a los escritos. Haz click aquí para ir al ejemplo.tabla.filas_max
numero maximo de filas en una tabla
tabla.filas_min
numero minimo de filas en un tabla
tabla.proteger_filas
no permite ni borrar filas, ni editarlas si =verdadero
vinculo.definicion
cuando declaramos un campo vinculo, tenemos que especificar el tipo de definicion del objeto que queremos vincular. evidentemente, la definicion tendra que estar definida.