Diferencia entre revisiones de «Atributos»
(→{{AT|edicion.valores}}) |
|||
(No se muestran 216 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
− | |||
==Atributos de las definiciones de campo== | ==Atributos de las definiciones de campo== | ||
==={{AT|actualizar_escrito}}=== | ==={{AT|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 | + | 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 <code>'''falso'''</code>. En caso de querer activarlo, se le asignará el valor <code>'''verdadero'''</code>. También permite la asignación de una expresión que devuelva un valor lógico.<p>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|{{AT|edicion.proteger}}]], que permite la edición de un campo aunque el objeto esté protegido.</p>Este atributo actúa en cualquier tipo de campo. |
==={{AT|apariencia.altura}}=== | ==={{AT|apariencia.altura}}=== | ||
+ | <p>Atributo para configurar la altura a mostrar de un campo {{T|memo}}, {{T|tabla}} y {{T|lista de comprobación}} en forma de líneas de texto. Su valor por defecto es 15 y a su vez, es el máximo valor que puede adquirir este atributo. Hay que diferenciar dos aspectos en este atributo. Uno es el número de líneas que se mostrarán en el campo vacío, y otro aspecto es el número de líneas que se podrán insertar antes de que aparezca el scroll.</p><p>Si el valor asignado es menor que cinco, entonces aparecerán ese número de líneas en el campo vacío, y además aparecerá el scroll cuando se sobrepase esa cifra. Si el valor asignado es mayor o igual a cinco, sólo se mostrarán cinco líneas en el campo vacío, y el scroll aparecerá cuando se sobrepase el valor asignado:</p> | ||
+ | |||
+ | ... | ||
+ | [Anexo] {{PR|es}} {{T|memo}} {{COM|//Valor por defecto: 15}} | ||
+ | [Anexo2] {{PR|es}} {{T|memo}} | ||
+ | -{{AT|apariencia.altura}} = 7; | ||
+ | [Anexo3] {{PR|es}} {{T|memo}} | ||
+ | -{{AT|apariencia.altura}} = 3; | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributoaparienciaalturavacio.jpg|thumb|250px|Apariencia de los campos vacíos]] | ||
+ | |align="center" |[[Imagen:atributoaparienciaalturalleno.jpg|thumb|250px|Apariencia de los campos con contenido]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | <p>Este atributo también es aplicable a los campos de tipo {{T|imagen}}, pero con una particularidad. El valor no corresponde a líneas de texto, sino a píxeles a mostrar. Por tanto, si le damos un valor 200, entonces la altura del campo que se muestre será de 200 píxeles. La imagen cargada se adaptará a la altura indicada. Si la imagen es más grande, se reducirá el tamaño de ésta, y si es más pequeña, se expanderá:</p> | ||
+ | |||
+ | ... | ||
+ | [Imagen] {{PR|es}} {{T|imagen}} | ||
+ | -{{AT|apariencia.altura}} = 300; | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:Atributoaparienciaaltura2.jpg|thumb|250px|Vemos que la imagen, al ser más pequeña que el número de píxeles indicados, se expande.]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|apariencia.desplegable}}=== | ==={{AT|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.<p>Este atributo, debe ir a compañado de otro atributo llamado [[#edicion.valores|{{AT|edicion.valores}}]], que contendrá los valores a seleccionar en el desplegable. De lo contrario, provocará un error de compilación.</p> | + | 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.<p>Este atributo, debe ir a compañado de otro atributo llamado [[#edicion.valores|{{AT|edicion.valores}}]], que contendrá los valores a seleccionar en el desplegable. De lo contrario, provocará un error de compilación.</p>Este atributo solo es aplicable a los campo {{T|texto}}, {{T|entero}} y {{T|real}}. |
==={{AT|apariencia.proporcion}}=== | ==={{AT|apariencia.proporcion}}=== | ||
+ | Indica el % que utilizará la etiqueta del campo para su visualización. Su valor por defecto es 40 (valor entero). El resto del porcentaje es el espacio reservado para la edición del campo. Si se define a nivel de tarea, formulario o cualquier otro componente en el que se definan los campos, el valor del atributo afectará a todos los campos: | ||
+ | |||
+ | ... | ||
+ | [Nombre] {{PR|es}} {{T|texto}} {{COM|//Proporción por defecto: 40}} | ||
+ | [Primer apellido] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|apariencia.proporcion}} = 60; | ||
+ | [Segundo apellido] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|apariencia.proporcion}} = 30; | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributoaparienciaproporcion.jpg|thumb|250px|En caso de definir el atributo con un valor en el formulario, se aplicaría la proporción a todos los campos]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|certificado.estado}}=== | ==={{AT|certificado.estado}}=== | ||
+ | Atributo que actúa exclusivamente en campos de tipo {{T|timbre}}. Si le asignamos <code>'''protegido'''</code> indicaremos que una vez timbrado el objeto, éste se protegerá, de forma que no se podrá editar ningún campo del objeto. | ||
+ | |||
==={{AT|certificado.secuencia}}=== | ==={{AT|certificado.secuencia}}=== | ||
+ | Atributo oculto de un campo {{T|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 <code>'''[&Valor_secuencia]'''</code>. En caso de incluir el atributo [[#certificado.secuencia.longitud|{{AT|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. | ||
+ | |||
==={{AT|certificado.secuencia.nombre}}=== | ==={{AT|certificado.secuencia.nombre}}=== | ||
+ | Atributo para especificar el nombre de la secuencia en un campo {{T|timbre}}. El valor a asignar es de tipo texto. | ||
+ | |||
==={{AT|certificado.secuencia.longitud}}=== | ==={{AT|certificado.secuencia.longitud}}=== | ||
+ | Atributo para indicar el número máximo de caracteres que aceptará la secuencia de un campo {{T|timbre}}. Se indicará mediante un valor entero. | ||
+ | |||
==={{AT|certificado.subsecuencia.valor}}=== | ==={{AT|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|{{AT|certificado.secuencia}}]] se reiniciará.<p>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.</p>Es posible acceder al valor de este atributo mediante la propiedad del campo {{T|timbre}}, <code>'''[&Valor_subsecuencia]'''</code>. | ||
+ | |||
==={{AT|certificado.subsecuencia.longitud}}=== | ==={{AT|certificado.subsecuencia.longitud}}=== | ||
+ | Al igual que el atributo [[#certificado.secuencia.longitud|{{AT|certificado.secuencia.longitud}}]], sirve para indicar el número máximo de caracteres que aceptará la subsecuencia de un campo {{T|timbre}}. | ||
+ | |||
==={{AT|certificado.valor}}=== | ==={{AT|certificado.valor}}=== | ||
− | ==={{AT| | + | 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 <code>'''[&Valor_secuencia]'''</code> y <code>'''[&Valor_subsecuencia]'''</code>. |
+ | 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: | ||
+ | |||
+ | {{PR|tipo}} [Expediente] {{PR|es}} {{RE|contenedor}} | ||
+ | [Datos generales] {{PR|es}} {{T|formulario}} | ||
+ | [Número de expediente] {{PR|es}} {{T|timbre}} | ||
+ | -{{AT|certificado}}.{{AT|subsecuencia}}.{{AT|valor}} = ($texto($Año($Hoy)); | ||
+ | -{{AT|certificado}}.{{AT|subsecuencia}}.{{AT|longitud}} = 4; | ||
+ | -{{AT|certificado}}.{{AT|secuencia}}.{{AT|nombre}} = {{STR|"SECUENCIA_ENTRADA"}}; | ||
+ | -{{AT|certificado}}.{{AT|secuencia}}.{{AT|longitud}} = 4; | ||
+ | -{{AT|certificado}}.{{AT|valor}} = [&Valor_subsecuencia] + {{STR|"-"}} + [&Valor_secuencia]; | ||
+ | [Fecha] {{PR|es}} {{T|fecha}} | ||
+ | [Centro gestor] {{PR|es}} {{T|texto}} | ||
+ | [Órgano competente] {{PR|es}} {{T|texto}} | ||
+ | ... | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | 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.<p>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 <code>'''$texto'''</code>. 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.</p>Una vez definida la subsecuencia, definimos la secuencia, dándole un nombre con [[#certificado.secuencia.nombre|{{AT|certificado.secuencia.nombre}}]] y una longitud, en este caso 4. El atributo oculto [[#certificado.secuencia|{{AT|certificado.secuencia}}]] irá obteniendo valores a medida que se vayan creando expedientes, y se reiniciará cuando el valor de [[#certificado.subsecuencia.valor|{{AT|certificado.subsecuencia.valor}}]] cambie.<p>Por último, sólo nos queda indicar la expresión de tipo texto en el atributo [[#certificado.valor|{{AT|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".</p>Veamos el resultado en la aplicación de gestión, egExplorer: | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributoscampotimbre.jpg|thumb|250px|Vemos como el campo timbre obtiene los valores definidos con el formato esperado]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|edicion.aspecto}}=== | ==={{AT|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 <code>'''normal'''</code>, pudiendo tomar también los valores <code>'''minusculas'''</code>, para visualizar el campo en minúsculas, o <code>'''mayusculas'''</code>, para visualizarlo en mayúsculas, independientemente de cómo se inserte el carácter en cualquier caso.<p>Actúa en campos de tipo {{T|texto}}, aunque también es posible definirlo en campos de tipo {{T|código}} y de tipo {{T|vínculo}}, pero su definición afecta a la propiedad <code>'''[&Rotulo]'''</code> de dichos campos:</p> | ||
+ | |||
+ | ... | ||
+ | ... | ||
+ | [Nombre] {{PR|es}} {{T|texto}} | ||
+ | [Primer apellido] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.aspecto}} = mayusculas; | ||
+ | [Segundo apellido] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.aspecto}} = minusculas; | ||
+ | ... | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributoedicionaspecto.jpg|thumb|250px|Modos de visualización mediante {{AT|edicion.aspecto}}]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|edicion.formato}}=== | ==={{AT|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. | ||
+ | |||
==={{AT|edicion.longitud}}=== | ==={{AT|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. | ||
+ | |||
==={{AT|edicion.mensaje}}=== | ==={{AT|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. | 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. | ||
− | + | ... | |
− | NO | + | ... |
+ | [DNI] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.mensaje}} = {{STR|"[NO INTRODUCIR LA LETRA]"}}; | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributoedicionmensaje.jpg|thumb|250px|Mensaje de ayuda mediante el atributo {{AT|edicion.mensaje}}]] | ||
+ | |} | ||
+ | </center> | ||
==={{AT|edicion.modo}}=== | ==={{AT|edicion.modo}}=== | ||
+ | El atributo {{AT|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.<p>El '''modo sugerencia''' se utiliza para sugerir el valor que puede adquirir un campo. Para ello, se debe especificar en el atributo [[#edicion.valor|{{AT|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.</p><p>El '''modo referencia''', al igual que el anterior, necesita la definición del atributo {{AT|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 {{AT|edicion.valor}}.</p>El '''modo copia''', difiere del modo referencia en que el valor que adquiere el campo se copia, de manera que si el valor devuelto por la expresión definida en {{AT|edicion.valor}} cambia, esto no afectara al campo. Además, el campo podrá ser editado por el usuario.<p>Veamos por tanto un ejemplo de cada uno de los modos de edición:</p> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | {{PR|tipo}} [Expediente] {{PR|es}} {{RE|contenedor}} | ||
+ | [Datos generales] {{PR|es}} {{T|formulario}} | ||
+ | [Número] {{PR|es}} {{T|timbre}} | ||
+ | -{{AT|certificado.subsecuencia.valor}} = $texto($Año($Hoy)); | ||
+ | -{{AT|certificado.subsecuencia.longitud}} = 4; | ||
+ | -{{AT|certificado.valor}} = [&Valor_subsecuencia] + {{STR|"-"}} + [&Valor_secuencia]; | ||
+ | -{{AT|certificado.secuencia.nombre}} = {{STR|"EXPEDIENTES"}}; | ||
+ | -{{AT|certificado.secuencia.longitud}} = 4; | ||
+ | [Fecha] {{PR|es}} {{T|fecha}} | ||
+ | -{{AT|edicion.modo}} = referencia; {{COM|//El valor del campo fecha se obtiene de la propiedad [&Fecha] del campo timbre}} | ||
+ | -{{AT|edicion.valor}} = [Número].[&Fecha]; | ||
+ | [Órgano competente] {{PR|es}} {{T|texto}} | ||
+ | [DNI del cliente] {{PR|es}} {{T|vinculo}} | ||
+ | -{{AT|vinculo.definicion}} = [Cliente]; | ||
+ | -{{AT|vinculo.etiqueta}} = [Datos personales].[DNI]; | ||
+ | -{{AT|vinculo.valores}} = $matriz([Clientes].[Contenido]); | ||
+ | [Nombre del cliente en modo referencia] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.modo}} = referencia; | ||
+ | -{{AT|edicion.valor}} = [Cliente]->[Datos personales].[Nombre]; | ||
+ | [Nombre del cliente en modo copia] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.modo}} = copia; | ||
+ | -{{AT|edicion.valor}} = [Cliente]->[Datos personales].[Nombre]; | ||
+ | [Nombre del cliente en modo sugerencia] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.modo}} = sugerencia; | ||
+ | -{{AT|edicion.valor}} = [Cliente]->[Datos personales].[Nombre]; | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | |||
+ | {{PR|tipo}} [Cliente] {{PR|es}} {{T|contenedor}} | ||
+ | [Datos personales] {{PR|es}} {{T|formulario}} | ||
+ | [Código de cliente] {{PR|es}} {{T|timbre}} | ||
+ | -{{AT|certificado.secuencia.nombre}} = {{STR|"MISECUENCIA"}}; | ||
+ | -{{AT|certificado.valor}} = {{STR|"CL-"}} + [&Valor_secuencia]; | ||
+ | [Nombre] {{PR|es}} {{T|texto}} | ||
+ | [Primer apellido] {{PR|es}} {{T|texto}} | ||
+ | [Segundo apellido] {{PR|es}} {{T|texto}} | ||
+ | [Fecha de nacimiento] {{PR|es}} {{T|fecha}} | ||
+ | [Lugar de nacimiento] {{PR|es}} {{T|texto}} | ||
+ | [Sexo] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|apariencia.desplegable}} = verdadero; | ||
+ | -{{AT|edicion.valores}} = $Matriz({{STR|"Hombre"}},{{STR|"Mujer"}}); | ||
+ | -{{AT|edicion.seleccion}} = verdadero; | ||
+ | [DNI] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.mensaje}} = {{STR|"[NO INTRODUCIR LA LETRA]"}}; | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | |||
+ | Una vez vistas las definiciones, creamos un objeto '''Expediente''', y veremos qué datos obtienen aquellos campos que dependen del valor del atributo {{AT|edicion.valor}}: | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:objetocliente.jpg|thumb|250px|Creamos un objeto '''Cliente''']] | ||
+ | |align="center" |[[Imagen:objetoexpediente.jpg|thumb|250px|Y creamos el objeto '''Expediente''']] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | Una vez creado el objeto '''Cliente''', vamos a estudiar qué es lo que ocurre en el objeto '''Expediente'''.<p>Vemos que en el modo sugerir, no aparece ningún dato. Aparecería el valor de {{AT|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.</p>En el modo copia, aparece el nombre del cliente, pero es posible editarlo.<p>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.</p>Ahora bien, ¿qué ocurriría si modificáramos el nombre del cliente? Veámoslo: | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:modificarcliente.jpg|thumb|250px|Modificamos el campo {{T|nombre}} del objeto '''Cliente''']] | ||
+ | |align="center" |[[Imagen:modificarexpediente.jpg|thumb|250px|Y vemos que se reflejan algunos cambios en el objeto '''Expediente''']] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | Una vez modificado el nombre del cliente y abierto el objeto '''Expediente''', vemos que el valor del campo en modo referencia ha cambiado. Adquiere el nombre actual del cliente (José) y además el campo sigue estando protegido. En el campo en modo copia, continúa el valor anterior ya que la copia se realiza sólo una vez, aunque el campo sigue siendo editable por el usuario. Y, finalmente, en el modo sugerencia, si picáramos en el cuadrado de la izquierda, nos sugerirá el valor actual del campo nombre, José.<p>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 {{T|timbre}}.</p> | ||
+ | |||
==={{AT|edicion.precision}}=== | ==={{AT|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 {{AT|edicion.precision}}, se aplicará un redondeo. | ||
+ | |||
==={{AT|edicion.proteger}}=== | ==={{AT|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 {{AT|edicion.proteger}} en el campo que queramos editar, siempre y cuando el objeto esté protegido.<p>Un objeto puede estar protegido cuando en un campo {{T|timbre}} añadimos el atributo {{AT|certificado.estado}} y le asignamos el valor verdadero. También se protegerá un objeto cuando se firme un campo {{T|firma}}.</p> | ||
+ | |||
+ | {{PR|tipo}} [Cliente] {{PR|es}} {{T|contenedor}} | ||
+ | [Datos personales] {{PR|es}} {{T|formulario}} | ||
+ | [Código de cliente] {{PR|es}} {{T|timbre}} | ||
+ | -{{AT|certificado.estado}} = protegido; {{COM|//Atributo que protege el objeto una vez timbrado el objeto}} | ||
+ | -{{AT|certificado.secuencia.nombre}} = {{STR|"MISECUENCIA"}}; | ||
+ | -{{AT|certificado.valor}} = {{STR|"CL-"}} + [&Valor_secuencia]; | ||
+ | [Nombre] {{PR|es}} {{T|texto}} | ||
+ | [Primer apellido] {{PR|es}} {{T|texto}} | ||
+ | [Segundo apellido] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.proteger}} = falso; | ||
+ | ... | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:edicionproteger.jpg|thumb|250px|Desproteger un campo en un objeto protegido, en este caso, mediante un campo {{T|timbre}}. El campo desprotegido aparece con un fondo blanco.]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|edicion.regla}}=== | ==={{AT|edicion.regla}}=== | ||
+ | Atributo cuya utilidad es proteger un campo de un objeto (no protegido), evitando la edición por parte del usuario. Su valor por defecto es '''verdadero'''. En caso de querer proteger un campo, le asignaremos '''falso''', aunque también es posible definir una expresión lógica en el atributo, y en función del valor devuelto, se protegerá o no el campo. | ||
+ | |||
+ | {{PR|tipo}} [Cliente] {{PR|es}} {{T|contenedor}} | ||
+ | [Datos personales] {{PR|es}} {{T|formulario}} | ||
+ | [Código de cliente] {{PR|es}} {{T|timbre}} | ||
+ | -{{AT|certificado.secuencia.nombre}} = {{STR|"MISECUENCIA"}}; | ||
+ | -{{AT|certificado.valor}} = {{STR|"CL-"}} + [&Valor_secuencia]; | ||
+ | [Nombre] {{PR|es}} {{T|texto}} | ||
+ | [Primer apellido] {{PR|es}} {{T|texto}} | ||
+ | [Segundo apellido] {{PR|es}} {{T|texto}} | ||
+ | ... | ||
+ | [DNI] {{PR|es}} {{T|texto}} | ||
+ | -{{AT|edicion.mensaje}} = {{STR|"[NO INTRODUCIR LA LETRA]"}}; | ||
+ | -{{AT|edicion.regla}} = falso; {{COM|//Atributo que protegerá el campo DNI}} | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:edicionregla.jpg|thumb|250px|Vemos que en el campo DNI no es posible introducir ningún valor]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | El campo una vez protegido, podrá adquirir valores, pero mediante algún modo de edición (ver atributo [[#edicion.modo|{{AT|edicion.modo}}]]). Reiterar que la protección es sólo a nivel de edición del usuario. | ||
+ | |||
==={{AT|edicion.seleccion}}=== | ==={{AT|edicion.seleccion}}=== | ||
+ | Atributo que indica si un campo es de selección, es decir, que el campo sólo admite los valores que se facilitan, por ejemplo, mediante un desplegable. Su valor por defecto es '''falso''', asignándole '''verdadero''' en caso de querer activar esta opción. | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:edicionseleccionfalso.jpg|thumb|250px|<code>{{AT|edicion.seleccion}} = falso</code>]] | ||
+ | |align="center" |[[Imagen:edicionseleccionverdadero.jpg|thumb|250px|<code>{{AT|edicion.seleccion}} = verdadero</code>]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|edicion.valor}}=== | ==={{AT|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|{{AT|edicion.modo}}]], aunque también se puede utilizar en modo '''normal''' para asignar un valor a un campo automáticamente. [[#edicion.modo|Ver ejemplo]] | |
− | + | ||
− | + | ==={{AT|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 <code>'''$Matriz'''({{STR|"ValorA"}},{{STR|"ValorB"}})</code>, o bien utilizando un enumerado <code>'''$Matriz'''([Nombre del enumerado])</code>. También es posible realizar una consulta sobre una base de datos con la función <code>'''$MatrizSQL'''({{STR|"sentencia SQL"}})</code>.<p>Si queremos que los valores aparezcan en forma de desplegable, utilizaremos el atributo [[#apariencia.desplegable|{{AT|apariencia.desplegable}}]] en el mismo campo, si no, se abrirá una ventana con la lista de valores:</p> | ||
... | ... | ||
Línea 44: | Línea 288: | ||
... | ... | ||
... | ... | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<center> | <center> | ||
{| | {| | ||
|align="center" |[[Imagen:atributoedicionvalores1.jpg|thumb|250px|Atributo <code>{{AT|apariencia.desplegable}} = verdadero</code>]] | |align="center" |[[Imagen:atributoedicionvalores1.jpg|thumb|250px|Atributo <code>{{AT|apariencia.desplegable}} = verdadero</code>]] | ||
− | |align="center" |[[Imagen:atributoedicionvalores2.jpg|thumb|250px| | + | |align="center" |[[Imagen:atributoedicionvalores2.jpg|thumb|250px|Sin atributo <code>{{AT|apariencia.desplegable}}</code> o con valor falso]] |
|} | |} | ||
</center> | </center> | ||
+ | ==={{AT|lista_comprobacion.inicializar}}=== | ||
+ | Permite insertar filas de comprobación en la definición de un campo {{T|lista_comprobacion}}. Los valores a inicializar serán de tipo texto, y deberán asignarse a {{AT|lista_comprobacion.inicializar}} utilizando la función de librería '''$Matriz'''.<p>Los valores inicializados tendrán la casilla de verificación desactivada. Además permite seguir añadiendo otras filas de comprobación.</p> | ||
+ | |||
+ | ... | ||
+ | ... | ||
+ | [Documentación a presentar] {{PR|es}} {{T|lista_comprobacion}} | ||
+ | -{{AT|lista_comprobacion.inicializar}} = $Matriz({{STR|"Fotocopia DNI"}},{{STR|"Fotocopia IRPF"}}); | ||
+ | ... | ||
<center> | <center> | ||
{| | {| | ||
− | |align="center" |[[Imagen: | + | |align="center" |[[Imagen:atributolistacomprobacioninicializar.jpg|thumb|250px|Inicialización de valores en una lista de comprobación]] |
|} | |} | ||
</center> | </center> | ||
− | |||
− | |||
==={{AT|reemplazar_siempre}}=== | ==={{AT|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.<p>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.</p>Para ver un ejemplo sobre el funcionamiento de este atributo, accederemos al artículo referente a los escritos. [[Escritos|Haz clic aquí para ir al ejemplo]]. | ||
+ | |||
==={{AT|tabla.filas_max}}=== | ==={{AT|tabla.filas_max}}=== | ||
+ | Indica el número máximo que se permite insertar en un campo {{T|tabla}}. Su valor por defecto es "'''sin límite'''", pudiéndole asignar un valor entero para establecer un número máximo de filas. | ||
+ | |||
==={{AT|tabla.filas_min}}=== | ==={{AT|tabla.filas_min}}=== | ||
+ | Indica el número mínimo de filas a insertar en un campo {{T|tabla}}. Su valor por defecto es '''0''', de forma que le asignaremos un entero para determinar el número de filas mínimo. Hasta que no se alcance ese valor, el contenedor no podrá ser guardado. | ||
+ | |||
==={{AT|tabla.proteger_filas}}=== | ==={{AT|tabla.proteger_filas}}=== | ||
+ | Atributo '''lógico''' cuyo valor por defecto es falso. Si le asignamos verdadero, protegeremos todas las filas que hayan sido incluídas en la tabla, es decir, que no podrán ser eliminadas ni modificadas. | ||
+ | |||
+ | ==={{AT|tamaño_maximo}}=== | ||
+ | <p>Atributo que indica en los campos de tipo {{T|imagen}} el tamaño máximo (en kilobytes) que puede tener la imagen a cargar. En caso de cargar una imagen que exceda el valor asignado a este atributo, se mostrará el siguiente error:</p> | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:tamaño_maximo.jpg|thumb|250px|Mensaje de error para un valor <code>{{AT|tamaño_maximo}}=80</code>.]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | ==={{AT|tipo_imagen}}=== | ||
+ | <p>Atributo que permite indicar, para un campo de tipo {{T|imagen}}, qué formatos de imagen se mostrarán en el explorador de windows para seleccionar la imagen, aunque no excluye la carga de imágenes con otros formatos. Veamos el siguiente ejemplo:</p> | ||
+ | |||
+ | ... | ||
+ | [Imagen] {{PR|es}} {{T|imagen}} | ||
+ | -{{AT|tipo_imagen}} = {{STR|"jpg, bmp"}}; | ||
+ | ... | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:tipo_imagen.jpg|thumb|250px|Vemos que las imágenes a seleccionar se corresponden con las extensiones de ficheros indicada en el atributo.]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|vinculo.definicion}}=== | ==={{AT|vinculo.definicion}}=== | ||
+ | Atributo para especificar en un campo, qué tipo de [[contenedores|{{RE|contenedor}}]] se va a vincular en él. | ||
+ | |||
==={{AT|vinculo.etiqueta}}=== | ==={{AT|vinculo.etiqueta}}=== | ||
+ | Atributo que permite la asignación de una expresión de tipo texto, cuyo valor será mostrado en el contendio del campo vínculo. | ||
+ | |||
==={{AT|vinculo.valor}}=== | ==={{AT|vinculo.valor}}=== | ||
+ | A diferencia del atributo <code>vinculo.valores</code> que nos permite seleccionar un valor de una lista de objetos, {{AT|vinculo.valor}} se utiliza para asignar un valor concreto al campo {{T|vinculo}}. Permite asignar una expresión siempre y cuando el valor devuelto sea un objeto u otro campo de tipo vinculo. Funciona bajo los modos de edición sugerencia, referencia y copia, de manera que debe ir acompañado del atributo [[#edicion.modo|{{AT|edicion.modo}}]].<p>Es usual utilizar la función de librería '''$SeleccionarObjetoPorDefinicion(coleccion,{{STR|"definicion"}})''' que devuelve el primer objeto que encuentre en una {{T|colección}} que pasamos por parámetro. Veamos un ejemplo a continuación:</p> | ||
+ | |||
+ | {{PR|tipo}} [Expediente] {{PR|es}} {{RE|contenedor}} | ||
+ | ... | ||
+ | ... | ||
+ | ... | ||
+ | [DNI del cliente] {{PR|es}} {{T|vinculo}} | ||
+ | -{{AT|vinculo.definicion}} = [Cliente]; | ||
+ | -{{AT|vinculo.etiqueta}} = [Cliente].[DNI]; | ||
+ | -{{AT|vinculo.valores}} = $Matriz([Clientes].[Contenido]); | ||
+ | [Primer cliente] {{PR|es}} {{T|vinculo}} | ||
+ | -{{AT|vinculo.definicion}} = [Cliente]; | ||
+ | -{{AT|vinculo.etiqueta}} = [Cliente].[Nombre]; | ||
+ | -{{AT|vinculo.valores}} = $Matriz([Clientes].[Contenido]); | ||
+ | -{{AT|vinculo.valor}} = $SeleccionarObjetoPorDefinicion([DNI del cliente]->[&Dominio],{{STR|"[Cliente]"}}); | ||
+ | -{{AT|edicion.modo}} = copia; | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | En este caso, hemos optado por vincular un objeto que obtendremos mediante la función de librería '''$SeleccionarObjetoPorDefinición'''.<p>En primer lugar, indicamos el tipo de objeto a vincular así como la etiqueta a mostrar una vez vinculado con los atributos {{AT|vinculo.definicion}} y {{AT|vinculo.etiqueta}} respectivamente.</p>Seguidamente, indicamos los parámetros de entrada que tendrá la función $SeleccionarObjetoPorDefinición, que serán una colección y un tipo de contenedor. En el primer parámetro, hacemos referencia a la colección '''[Clientes].[Contenido]''' utilizando otro campo de tipo vínculo, que vincula un objeto de tipo '''Cliente''', y en el segundo parámetro indicamos el tipo de objeto a seleccionar. El operador "->" indica que estamos accediendo al vínculo del campo '''[DNI del cliente]''', es decir, al objeto vinculado. Con la propiedad '''[&Dominio]''' accedemos al recurso donde está ubicado el objeto vinculado en [DNI del cliente], que será la colección '''[Clientes].[Contenido]'''. El atributo {{AT|edicion.modo}} indicará el modo de obtención del valor de la etiqueta.<p>¿Y por qué hay definido un {{AT|vinculo.valores}}?</p>Cuando el <code>vinculo.valor</code> se utiliza en modo copia, estamos dando la posibilidad de editar el campo por parte del usuario, de forma que el compilador exigirá dar una lista de valores mediante <code>vinculo.valores</code>. Al crear el objeto, se evaluará la expresión de vinculo.valor y dará un valor al campo vinculo. Si el usuario edita el campo dándole otro valor de la lista proporcionada en vinculo.valores, el valor del campo vinculo cambiará. Este comportamiento es válido para el modo sugerencia también.<p>Si utilizáramos el modo referencia, la edición del campo no sería posible, por tanto, el compilador no exigirá una lista de valores ya que entiende que el campo no podrá ser editado.</p>Veamos el comportamiento del código que hemos elaborado: | ||
+ | |||
+ | *Seleccionamos el valor del campo [DNI del cliente]: | ||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributovinculovalor2.jpg|thumb|300px|]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | *Ahora vemos, que al seleccionar un objeto en el campo [DNI del cliente], el campo vínculo [Selección de otro cliente] ya puede evaluar la expresión definida en {{AT|atributo.valor}}. La función definida nos devuelve el primer objeto de la colección pasada por parámetro (se visualiza el nombre, indicado en {{AT|vinculo.etiqueta}}: | ||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributovinculovalor3.jpg|thumb|300px|]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | *Ahora eliminamos el vínculo asignado, y vemos cómo es posible asignar otro valor mediante la colección definida en {{AT|vinculo.valores}} (en modo referencia no es posible): | ||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributovinculovalor4.jpg|thumb|300px|]] | ||
+ | |align="center" |[[Imagen:atributovinculovalor5.jpg|thumb|300px|]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
+ | *Seleccionamos un objeto, y vemos que se puede vincular un objeto, o bien mediante {{AT|atributo.valor}} o mediante {{AT|atributo.valores}} (posibilitado por el modo copia): | ||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributovinculovalor6.jpg|thumb|300px|]] | ||
+ | |} | ||
+ | </center> | ||
+ | |||
==={{AT|vinculo.valores}}=== | ==={{AT|vinculo.valores}}=== | ||
+ | Atributo al que se le puede asignar una expresión en forma de matriz utilizando la función de librería '''$Matriz'''. Esto provocará que se muestre una lista con los objetos vinculables por el campo {{T|vinculo}}.<p>Existe una función de librería llamada '''$SeleccionarObjetosPorDefinicion(coleccion,{{STR|"definicion"}})''' que devuelve la lista de objetos de una colección, de los cuales se seleccionará uno de modo que sea el valor del campo vinculo.</p> | ||
+ | |||
+ | {{PR|tipo}} [Expediente] {{PR|es}} {{RE|contenedor}} | ||
+ | ... | ||
+ | ... | ||
+ | ... | ||
+ | [DNI del cliente] {{PR|es}} {{T|vinculo}} | ||
+ | -{{AT|vinculo.definicion}} = [Cliente]; | ||
+ | -{{AT|vinculo.etiqueta}} = [Cliente].[DNI]; | ||
+ | -{{AT|vinculo.valores}} = $Matriz([Clientes].[Contenido]); | ||
+ | {{PR|fin}} | ||
+ | {{PR|fin}} | ||
+ | |||
+ | En nuestro sistema, tenemos dos tipo de contenedores, '''Expediente''' y '''Cliente''' con sus respectivas colecciones. En el contenedor '''Expediente''' hemos añadido un campo {{T|vinculo}}. Con el atributo {{AT|vinculo.definicion}} indicamos el tipo de objeto que vamos a vincular, en este caso, de tipo '''Cliente'''. Con el atributo {{AT|vinculo.etiqueta}} seleccionamos el campo, definido en '''Cliente''', que queremos mostrar como etiqueta del campo en el objeto '''Expediente'''.<p>Ahora bien, tenemos que indicar qué objeto queremos vincular. En este caso, queremos obtener una lista de objetos, y seleccionar el que nos interese. Para ello utilizamos este atributo, {{AT|vinculo.valores}}. En él definimos la colección donde están incluídos los objetos de tipo '''Cliente''' {{T|colección}}, llamada '''Contenido''' y definida en el contenedor '''Clientes'''. Como el valor del atributo hay que expresarlo como una matriz, utilizamos la función '''$Matriz''' para ello.</p>Cuando el usuario active la opción '''Vincular''' en egExplorer, se visualizará una lista con todos los objetos. Se elegirá uno, y, en este caso, la etiqueta del campo vínculo tomará el valor del campo '''[DNI]''': | ||
+ | |||
+ | <center> | ||
+ | {| | ||
+ | |align="center" |[[Imagen:atributovinculovalores1.jpg|thumb|250px|Visualizamos la lista de valores a vincular]] | ||
+ | |align="center" |[[Imagen:atributovinculovalores2.jpg|thumb|250px|Seleccionamos un valor y se mostrará el campo [DNI] definido en la etiqueta]] | ||
+ | |} | ||
+ | </center> | ||
+ | __NOTOC__ | ||
+ | |||
+ | [[Categoría:ODL]] |
Revisión actual del 12:56 11 ago 2009
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
Atributo para configurar la altura a mostrar de un campo memo
, tabla
y lista de comprobación
en forma de líneas de texto. Su valor por defecto es 15 y a su vez, es el máximo valor que puede adquirir este atributo. Hay que diferenciar dos aspectos en este atributo. Uno es el número de líneas que se mostrarán en el campo vacío, y otro aspecto es el número de líneas que se podrán insertar antes de que aparezca el scroll.
Si el valor asignado es menor que cinco, entonces aparecerán ese número de líneas en el campo vacío, y además aparecerá el scroll cuando se sobrepase esa cifra. Si el valor asignado es mayor o igual a cinco, sólo se mostrarán cinco líneas en el campo vacío, y el scroll aparecerá cuando se sobrepase el valor asignado:
... [Anexo]es
memo
//Valor por defecto: 15
[Anexo2]es
memo
-apariencia.altura
= 7; [Anexo3]es
memo
-apariencia.altura
= 3; ...
Este atributo también es aplicable a los campos de tipo imagen
, pero con una particularidad. El valor no corresponde a líneas de texto, sino a píxeles a mostrar. Por tanto, si le damos un valor 200, entonces la altura del campo que se muestre será de 200 píxeles. La imagen cargada se adaptará a la altura indicada. Si la imagen es más grande, se reducirá el tamaño de ésta, y si es más pequeña, se expanderá:
... [Imagen]es
imagen
-apariencia.altura
= 300; ...
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.
texto
, entero
y real
.
apariencia.proporcion
Indica el % que utilizará la etiqueta del campo para su visualización. Su valor por defecto es 40 (valor entero). El resto del porcentaje es el espacio reservado para la edición del campo. Si se define a nivel de tarea, formulario o cualquier otro componente en el que se definan los campos, el valor del atributo afectará a todos los campos:
... [Nombre]es
texto
//Proporción por defecto: 40
[Primer apellido]es
texto
-apariencia.proporcion
= 60; [Segundo apellido]es
texto
-apariencia.proporcion
= 30; ...
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
Atributo cuya utilidad es proteger un campo de un objeto (no protegido), evitando la edición por parte del usuario. Su valor por defecto es verdadero. En caso de querer proteger un campo, le asignaremos falso, aunque también es posible definir una expresión lógica en el atributo, y en función del valor devuelto, se protegerá o no el campo.
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
... [DNI]es
texto
-edicion.mensaje
="[NO INTRODUCIR LA LETRA]"
; -edicion.regla
= falso;//Atributo que protegerá el campo DNI
fin
fin
El campo una vez protegido, podrá adquirir valores, pero mediante algún modo de edición (ver atributo edicion.modo
). Reiterar que la protección es sólo a nivel de edición del usuario.
edicion.seleccion
Atributo que indica si un campo es de selección, es decir, que el campo sólo admite los valores que se facilitan, por ejemplo, mediante un desplegable. Su valor por defecto es falso, asignándole verdadero en caso de querer activar esta opción.
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 utilizando un enumerado $Matriz([Nombre del enumerado])
. También es posible 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
Permite insertar filas de comprobación en la definición de un campo lista_comprobacion
. Los valores a inicializar serán de tipo texto, y deberán asignarse a lista_comprobacion.inicializar
utilizando la función de librería $Matriz.Los valores inicializados tendrán la casilla de verificación desactivada. Además permite seguir añadiendo otras filas de comprobación.
... ... [Documentación a presentar]es
lista_comprobacion
-lista_comprobacion.inicializar
= $Matriz("Fotocopia DNI"
,"Fotocopia IRPF"
); ...
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 clic aquí para ir al ejemplo.tabla.filas_max
Indica el número máximo que se permite insertar en un campo tabla
. Su valor por defecto es "sin límite", pudiéndole asignar un valor entero para establecer un número máximo de filas.
tabla.filas_min
Indica el número mínimo de filas a insertar en un campo tabla
. Su valor por defecto es 0, de forma que le asignaremos un entero para determinar el número de filas mínimo. Hasta que no se alcance ese valor, el contenedor no podrá ser guardado.
tabla.proteger_filas
Atributo lógico cuyo valor por defecto es falso. Si le asignamos verdadero, protegeremos todas las filas que hayan sido incluídas en la tabla, es decir, que no podrán ser eliminadas ni modificadas.
tamaño_maximo
Atributo que indica en los campos de tipo imagen
el tamaño máximo (en kilobytes) que puede tener la imagen a cargar. En caso de cargar una imagen que exceda el valor asignado a este atributo, se mostrará el siguiente error:
tipo_imagen
Atributo que permite indicar, para un campo de tipo imagen
, qué formatos de imagen se mostrarán en el explorador de windows para seleccionar la imagen, aunque no excluye la carga de imágenes con otros formatos. Veamos el siguiente ejemplo:
... [Imagen]es
imagen
-tipo_imagen
="jpg, bmp"
; ...
vinculo.definicion
Atributo para especificar en un campo, qué tipo de contenedor
se va a vincular en él.
vinculo.etiqueta
Atributo que permite la asignación de una expresión de tipo texto, cuyo valor será mostrado en el contendio del campo vínculo.
vinculo.valor
A diferencia del atributo vinculo.valores
que nos permite seleccionar un valor de una lista de objetos, vinculo.valor
se utiliza para asignar un valor concreto al campo vinculo
. Permite asignar una expresión siempre y cuando el valor devuelto sea un objeto u otro campo de tipo vinculo. Funciona bajo los modos de edición sugerencia, referencia y copia, de manera que debe ir acompañado del atributo edicion.modo
.Es usual utilizar la función de librería $SeleccionarObjetoPorDefinicion(coleccion,"definicion"
) que devuelve el primer objeto que encuentre en una colección
que pasamos por parámetro. Veamos un ejemplo a continuación:
En este caso, hemos optado por vincular un objeto que obtendremos mediante la función de librería $SeleccionarObjetoPorDefinición.tipo
[Expediente]es
contenedor
... ... ... [DNI del cliente]es
vinculo
-vinculo.definicion
= [Cliente]; -vinculo.etiqueta
= [Cliente].[DNI]; -vinculo.valores
= $Matriz([Clientes].[Contenido]); [Primer cliente]es
vinculo
-vinculo.definicion
= [Cliente]; -vinculo.etiqueta
= [Cliente].[Nombre]; -vinculo.valores
= $Matriz([Clientes].[Contenido]); -vinculo.valor
= $SeleccionarObjetoPorDefinicion([DNI del cliente]->[&Dominio],"[Cliente]"
); -edicion.modo
= copia;fin
fin
En primer lugar, indicamos el tipo de objeto a vincular así como la etiqueta a mostrar una vez vinculado con los atributos vinculo.definicion
y vinculo.etiqueta
respectivamente.
edicion.modo
indicará el modo de obtención del valor de la etiqueta.¿Y por qué hay definido un vinculo.valores
?
vinculo.valor
se utiliza en modo copia, estamos dando la posibilidad de editar el campo por parte del usuario, de forma que el compilador exigirá dar una lista de valores mediante vinculo.valores
. Al crear el objeto, se evaluará la expresión de vinculo.valor y dará un valor al campo vinculo. Si el usuario edita el campo dándole otro valor de la lista proporcionada en vinculo.valores, el valor del campo vinculo cambiará. Este comportamiento es válido para el modo sugerencia también.Si utilizáramos el modo referencia, la edición del campo no sería posible, por tanto, el compilador no exigirá una lista de valores ya que entiende que el campo no podrá ser editado.
Veamos el comportamiento del código que hemos elaborado:- Seleccionamos el valor del campo [DNI del cliente]:
- Ahora vemos, que al seleccionar un objeto en el campo [DNI del cliente], el campo vínculo [Selección de otro cliente] ya puede evaluar la expresión definida en
atributo.valor
. La función definida nos devuelve el primer objeto de la colección pasada por parámetro (se visualiza el nombre, indicado envinculo.etiqueta
:
- Ahora eliminamos el vínculo asignado, y vemos cómo es posible asignar otro valor mediante la colección definida en
vinculo.valores
(en modo referencia no es posible):
- Seleccionamos un objeto, y vemos que se puede vincular un objeto, o bien mediante
atributo.valor
o medianteatributo.valores
(posibilitado por el modo copia):
vinculo.valores
Atributo al que se le puede asignar una expresión en forma de matriz utilizando la función de librería $Matriz. Esto provocará que se muestre una lista con los objetos vinculables por el campo vinculo
.Existe una función de librería llamada $SeleccionarObjetosPorDefinicion(coleccion,"definicion"
) que devuelve la lista de objetos de una colección, de los cuales se seleccionará uno de modo que sea el valor del campo vinculo.
En nuestro sistema, tenemos dos tipo de contenedores, Expediente y Cliente con sus respectivas colecciones. En el contenedor Expediente hemos añadido un campotipo
[Expediente]es
contenedor
... ... ... [DNI del cliente]es
vinculo
-vinculo.definicion
= [Cliente]; -vinculo.etiqueta
= [Cliente].[DNI]; -vinculo.valores
= $Matriz([Clientes].[Contenido]);fin
fin
vinculo
. Con el atributo vinculo.definicion
indicamos el tipo de objeto que vamos a vincular, en este caso, de tipo Cliente. Con el atributo vinculo.etiqueta
seleccionamos el campo, definido en Cliente, que queremos mostrar como etiqueta del campo en el objeto Expediente.Ahora bien, tenemos que indicar qué objeto queremos vincular. En este caso, queremos obtener una lista de objetos, y seleccionar el que nos interese. Para ello utilizamos este atributo, vinculo.valores
. En él definimos la colección donde están incluídos los objetos de tipo Cliente colección
, llamada Contenido y definida en el contenedor Clientes. Como el valor del atributo hay que expresarlo como una matriz, utilizamos la función $Matriz para ello.