Diferencia entre revisiones de «Atributos»

De Egeasy
Saltar a: navegación, buscar
({{AT|actualizar_escrito}})
 
(No se muestran 174 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
__NOTOC__
 
 
==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 <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.
+
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>Este atributo solo es aplicable a los campo texto, entero y real.
+
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 para un campo timbre, que indica el estado en el que queda el contenedor. al asignar el valor protegido. este valor hara que el objeto, una vez timbrado, quede completamente protegido de modo que ningun campo podrá editarse.
+
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 que acepta valores de tipo texto. no será posible asignarle ningún valor, pero su valor sí podrá ser asignado accediendo a la propiedad &Valor_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}}===
número máximo de caracteres que aceptará la secuencia, incluyendo la subsecuencia si la hubiere.
+
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}}===
podremos asignar una expresion que devuelva un valor de tipo texto. se puede recurrir a funciones de la librería para ello.
+
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}}===
longitud maxima de caracteres que queramos que acepte el valor de la subsecuencia. entero.
+
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}}===
En nuestro campo timbre, es el atributo en el que reflejaremos el valor que queremos asignarValor que queremos asignar al certificado. podremos utilizar expresiones de tipo texto, puediendo acceder al valor de la secuencia o subsecuencia.
+
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 '''rotulo''' de dichos campos.</p>
+
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>
  
 
  ...
 
  ...
Línea 48: Línea 119:
  
 
==={{AT|edicion.formato}}===
 
==={{AT|edicion.formato}}===
Atributo para especificar un formato sobre un campo. La forma de establecer el formato se realiza mediante las máscaras de edición de Delphi como tipo texto.
+
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}}===
Línea 56: Línea 127:
 
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.
  
*Ejemplo
 
 
  ...
 
  ...
 
  ...
 
  ...
Línea 70: Línea 140:
  
 
==={{AT|edicion.modo}}===
 
==={{AT|edicion.modo}}===
normal, sugerencia, referencia y copia. es un atributo que debe ir acompañado de edicion.valor. de esta forma, el atributo edicion.modo especificara de que forma se tratara el valor indicado en edicion.valor. su valor por defecto es normal. en modo sugerencia, el valor adquirido en edicion.valor se mostrara como sugerencia en el formulario, pero el campo se podra editar.
+
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>
en modo referencia, el campo adquirira el valor de edicion.valor, se podra editar el campo, pero en caso de hacerlo, se modidicara el valor de origen. en modo copia, adquirira el valor de edicion.valor. aunque lo modifiquemos, no afectara al campo origen ya que se realiza una copia del valor (paso de parametros por valor).
+
 
 +
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 o un campo moneda. Su valor por defecto es 2, pudiendo asignar otro valor para mostrar más o menos decimales.
+
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}}===
atributo para indicar si un campo es editable cuando el objeto se encuentra protegido. su valor sera logico, falso o verdadero.
+
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}}===
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.
+
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 expresion que asigne un valor al campo en su modo de edicion. valido para los modos de edicion, sugerencia, referencia y copia.
+
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}}===
 
==={{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 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>
+
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>
 
+
*Ejemplo
+
  
 
  ...
 
  ...
Línea 107: Línea 297:
  
 
==={{AT|lista_comprobacion.inicializar}}===
 
==={{AT|lista_comprobacion.inicializar}}===
==={{AT|moneda.defecto}}===
+
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>
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.
+
 
 +
...
 +
...
 +
[Documentación a presentar] {{PR|es}} {{T|lista_comprobacion}}
 +
    -{{AT|lista_comprobacion.inicializar}} = $Matriz({{STR|"Fotocopia DNI"}},{{STR|"Fotocopia IRPF"}});
 +
...
 +
 
 +
<center>
 +
{|
 +
|align="center" |[[Imagen:atributolistacomprobacioninicializar.jpg|thumb|250px|Inicialización de valores en una lista de comprobación]]
 +
|}
 +
</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 click aquí para ir al ejemplo]].
+
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}}===
numero maximo de filas en una tabla
+
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}}===
numero minimo de filas en un tabla
+
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}}===
no permite ni borrar filas, ni editarlas si =verdadero
+
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}}===
cuando declaramos un campo vinculo, tenemos que especificar el tipo de definicion del objeto que queremos vincular. evidentemente, la definicion tendra que estar definida.
+
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.

Este atributo actúa en cualquier tipo de campo.

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;
...
Apariencia de los campos vacíos
Apariencia de los campos con contenido

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;
...
Vemos que la imagen, al ser más pequeña que el número de píxeles indicados, se expande.

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.

Este atributo solo es aplicable a los campo 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;
...
En caso de definir el atributo con un valor en el formulario, se aplicaría la proporción a todos los campos

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 campo timbre, [&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:

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 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.

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.

Una vez definida la subsecuencia, definimos la secuencia, dándole un nombre con 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".

Veamos el resultado en la aplicación de gestión, egExplorer:
Vemos como el campo timbre obtiene los valores definidos con el formato esperado

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;
...
...
Modos de visualización mediante edicion.aspecto

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]";
...
Mensaje de ayuda mediante el atributo edicion.mensaje

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.

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 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:

Creamos un objeto Cliente
Y creamos el objeto Expediente
Una vez creado el objeto Cliente, vamos a estudiar qué es lo que ocurre en el objeto Expediente.

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 copia, aparece el nombre del cliente, pero es posible editarlo.

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:
Modificamos el campo nombre del objeto Cliente
Y vemos que se reflejan algunos cambios en el objeto Expediente
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é.

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
Desproteger un campo en un objeto protegido, en este caso, mediante un campo timbre. El campo desprotegido aparece con un fondo blanco.

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
Vemos que en el campo DNI no es posible introducir ningún valor

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.

<code>edicion.seleccion = falso</code>
<code>edicion.seleccion = verdadero</code>

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");
...
...
Atributo <code>apariencia.desplegable = verdadero</code>
Sin atributo <code>apariencia.desplegable</code> o con valor falso

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");
...
Inicialización de valores en una lista de comprobación

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:

Mensaje de error para un valor <code>tamaño_maximo=80</code>.

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";
...
Vemos que las imágenes a seleccionar se corresponden con las extensiones de ficheros indicada en el atributo.

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:

 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 este caso, hemos optado por vincular un objeto que obtendremos mediante la función de librería $SeleccionarObjetoPorDefinición.

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.

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 edicion.modo indicará el modo de obtención del valor de la etiqueta.

¿Y por qué hay definido un vinculo.valores?

Cuando el 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]:
Atributovinculovalor2.jpg
  • 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 en vinculo.etiqueta:
Atributovinculovalor3.jpg
  • 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):
Atributovinculovalor4.jpg
Atributovinculovalor5.jpg
  • Seleccionamos un objeto, y vemos que se puede vincular un objeto, o bien mediante atributo.valor o mediante atributo.valores (posibilitado por el modo copia):
Atributovinculovalor6.jpg

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.

tipo [Expediente] es contenedor
    ...
        ...
        ...
        [DNI del cliente] es vinculo
            -vinculo.definicion = [Cliente];
            -vinculo.etiqueta = [Cliente].[DNI];
            -vinculo.valores = $Matriz([Clientes].[Contenido]);
    fin
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 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.

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]:
Visualizamos la lista de valores a vincular
Seleccionamos un valor y se mostrará el campo [DNI] definido en la etiqueta