Ventana Definición de tablas y campos

Controles habituales   Conceptos básicos

Se accede a esta ventana desde la opción Tipos de conceptos...; se trata de una ventana visualización de datos de una de las tablas de gestión interna del programa, la que define TODOS los tipos y clases de conceptos que puede haber en la base de datos. Además posibilita crear tablas y campos dinámicos para definir las estructuras de datos que necesitemos complementando a las del programa.

El control de la lista es un árbol desplegable con sólo 2 niveles, en el cual, el primer nivel son los Tipos de conceptos del programa, cada uno lleva asociado una ventana de propiedades que puede variar un poco en los datos, según estemos mostrando cada una de la Clases que se muestran en el segundo nivel, dentro de cada Tipo. La Clase indica que se trata de conceptos con unas características y finalidad muy similares a las otras Clases del mismo Tipo, pero con algunos datos, campos y relaciones diferentes.

IMPORTANTE: Se pueden crear nuevos TIPOS Y CLASES dinámicamente para modelizar objetos del mundo real con nuevos conceptos de B.D. y además añadir campos tanto a los Tipos como a las Clases. Cada ventana de clase tiene su ventana de propiedades. El límite es el de la BD jet (la instalación por defecto) de 256 campos por tabla (tipo o clase) y 32 índices (entre los índices se incluyen campos de tipo Lista, y Referencia a otros conceptos). Para necesidades mayores puede convertirse la BD de motor Ms-JET a SQLserver. Sólo se pueden crear, modificar o borrar clases y campos si la BD está en modo EXCLUSIVO.

El doble clic en cualquiera de las líneas, sirve como medio de búsqueda rápida de todos los conceptos de la base de datos con ese tipo, que se muestran en la ventana principal. Si hacemos doble clic en una de las líneas de los niveles inferiores, sucederá lo mismo, pero buscando por esa Clase.

En cada línea de información vemos el icono, y el nombre interno único de la tabla donde se almacenan los datos para el tipo (Tabla), la Ud en la que se miden sus elementos, Descripción de cada Tipo y Clase, un código numérico único (Tipo). Habitualmente, a la derecha se muestra la columna Uso, muy útil con el número de conceptos (registros) que existen actualmente en la base de cada Tipo y Clase (tabla). El resto de campos se describen en la sección correspondiente.

Como el dato de Uso es costoso de recalcular en tiempo real, basta pinchar en el botón de cabecera para ver los datos actuales, si hemos creado o borrado o cambiado de tipo conceptos, o bien cambiado de archivo.

 

De la lista, los más comunes y de propósito general para activos y mantenimiento son:

carpeta.- pueden representar una estructura organizativa de carpetas y subcarpetas (al estilo de los directorios de un disco duro en Windows) o tener entre sus propiedades una cláusula SQL que permite realizar una búsqueda. Sus "hijos virtuales" serán en cada caso, los conceptos y/o relaciones resultado de la búsqueda. Hay también otros tipos especiales que realizan cálculos o funciones especiales.

elemento.- pueden representar cualquier concepto que no requiera de unas propiedades, características o datos especiales

referencia.- sirve para tener una especie de "acceso directo" a un archivo externo de CUALQUIER clase, no para ejecutarlo desde el programa, sino para poder ver una vista previa y acceder de forma rápida a él. Es útil para imágenes, documentos de texto, documentos HTML, vídeos, etc.

entidad.- permite almacenar todos los datos útiles de una entidad personal o empresarial de diversas Clases: persona, empresa, cliente, proveedor, organismo, intermediario, titular, tenente, promotor, etc. Las clases disponibles pueden depender de los módulos de programa que se posean.

documento.- la misma ventana de propiedades mantienen datos particulares para documentos de COMPRA y VENTA: almacenar solicitudes, ofertas, pedidos, albaranes de recepción, facturas, partes, instancias, listas de stock, etc.

mapa.- SÓLO aparecen en el caso de tener licencia con el módulo de gráficos ©G. Permite tener relacionados datos de cualquier representación gráfica, como el dibujo de un mapa o plano vectorial con varias capas, la escala y coordenadas absolutas del mismo, etc.

Hay otros muchos Tipos y Clases estáticos, es decir implementados en algún módulo de Ingrid, más o menos genéricos (recursos, personas, familias, almacenes...), y otros definidos para cada proyecto particular en cada plantilla de BD, pero tienen usos más particulares de módulos de aplicación y se explican en otras secciones.

Pestaña Tablas:

El panel superior (de árbol) muestra una lista con los datos de todas las clases definidas en la BD.

Para definir nuevas clases, se puede usar la sintaxis que se muestra en la cabecera de la lista para introducir todos los datos en el campo de edición de la columna Tipo·clase: un número con el Tipo, el separador estándar de la aplicación: el punto central (·), otro número con la clase si se desea crear varios similares, el separador, el Código y separado con un espacio en blanco la descripción del Tipo/clase.

Después de creados, todos los datos pueden ser modificados en esta lista, incluso el número del tipo del que es clase, pasando inmediatamente a la otra clase, únicamente hay que tener cuidado, con que si se hace este cambio cuando ya se tiene creados conceptos con datos, si había datos en campos del tipo al que pertenecía la clase, al cambiar de tipo se perderán-

 

La sección inferior muestra datos de interface, personalizables por el usuario.

Resumen plural es la descripción correspondiente al resumen del Tipo/clase seleccionado para varios objetos de esa clase, y se puede editar al pie de la columna Plural. Se utiliza por ejemplo para la creación de carpetas de búsqueda que hay al pie de la ventana (Carpeta).

Clase asociada a ascendentes, a descendientes y a familias, son 3 campos que se utilizan para filtrar las posibles relaciones en los campos con.padi (los dos primeros) y con.fami, respectivamente, de esa forma sólo se podrán relacionar y las máscaras sólo mostrarán conceptos del tipo o clase especificado. Muy útil para web, para crear formularios de búsqueda con carpetas, informes... y en general cualquier herramienta que se pueda automatizar presuponiendo esa información.

SQL de gráficos asociados, permite establecer relaciones entre gráficos y conceptos, sin almacenarlas explícitamente en BD en la tabla RCG, mediante sus códigos. Esto tiene la limitación de que cada gráfico se asociará a un sólo concepto. Por ejemplo, en la base \Ejemplo\Edificio.ing se puede ver que teniendo los Gráficos en modo Vinculado y Sincronizar códigos, en la clase iluman · Cuadro de mando, se tienen dos imágenes vinculadas que no están relacionadas con sus conceptos mediante la tabla RCG, sino con esta select.

La limitación es que cada gráfico sólo puede estar asociado a un concepto, y que deben coincidir sus códigos

SQL de gráficos asociados, muestra una selección de gráficos mediante una búsqueda, sin tener que especificar las relaciones gráfico-concepto en BD.

Descripción almacena un texto extenso que sólo se utiliza en esta ventana para documentación de clases particulares y su funcionalidad, o codificación, por ejemplo

Propiedades, permite establecer una característica o valor especial par las clases de un mismo tipo, por ejemplo, en proyectos de elementos de carretera, cada elemento guarda una distancia en metros al borde de la vía., que luego los procedimientos de dibujado pueden utilizar para crear elementos gráficos de cada clase.

Bloque asociado, también permite definir un bloque gráfico de defecto para todos los elem. del Tipo/clase, de forma que se asigne incluso una capa de defecto y no haya que hacer estas definiciones luego para procedimientos gráficos que utilizan bloques y capas.

Dimensiones establece la unidad de medida de defecto para todos los conceptos de la Clase, independiente de la clasificación del campo Ud de concepto (en ventana principal). Es muy útil, por ejemplo, cuando los elementos de un sólo pueden estar representados por conceptos con una unidad (por ejemplo una señal vertical de tráfico puede ser medida por unidades, pero no por metros cuadrados, o un área de jardín puede ser medida y representada geográficamente en metros cuadrados con un área cerrada, pero no puntualmente). Puede tener cuatro valores que indican las dimensiones de los bins y que considerarán las herramientas de acumular cantidades por familias, medir geográficamente, etc.

El conmutador Navega a ficha, indica si al hacer clic en una línea o campo de referencia a ese tipo, se abre la ventana de propiedades o se navega en la ventana principal, bien  a la lista de relaciones inferiores o bien al concepto referenciado.

Imagen de familia muestra en todos los elementos esa en vez de la propia.

Vista de imágenes permite que para una clase completa, las relaciones inferiores se vean como diapositivas en vez de en modo lista. Cada concepto individual se puede definir en este modo en

En la columna Uso, el dato de cada línea de Tipo indica el total incluyendo todas las Clases SÓLO si la rama de ese Tipo está cerrada (y no es sólo la suma, ya que además incluye los conceptos que son de tipo genérico, es decir, los que no tienen ninguna Clase particular). Cuando la rama está expandida, sólo se muestra la cantidad de conceptos del Tipo genérico.

 

Los dos botones a la derecha: Icono asociado a la clase actual, se utiliza para cambiar el icono que representa cualquiera de los tipos, por otro distinto del de defecto, mediante el diálogo Selección de icono ya que un campo como éste no tiene un campo de edición al pie de la lista. La versión de icono de 32x32 puntos se elige con la correspondiente a la pequeña de 16x16.

El botón Color asociado a la clase actual, muestra el diálogo estándar de selección de color, para asociarle uno que se verá tanto en la lista de Tipos/clases, como en el fondo de la línea de cualquier concepto en cualquiera de las ventanas en las que aparezca (su uso habitual es para distinguir clases de conceptos en ventana principal). También la ventana de propiedades de esa clase será del color seleccionado. Para cancelar una selección de color, se hace clic en el botón mientras se mantiene pulsada la tecla CONTROL. También se puede anular toda la selección de colores manteniendo pulsadas las teclas CONTROL+MAYÚSCULAS al hacer clic en cualquiera.

El botón Eliminar todos los conceptos de la clase, es muy útil cuando queremos eliminar una clase, ya que no se pueden eliminar clases que estén utilizadas y tendríamos que eliminar todos los conceptos seleccionándolos (muy lento si son centenares) o ejecutando una sentencia SQL para eliminar esos registros (más complicado), además habría que eliminar todas las referencias a esos conceptos en múltiples tablas.

 

Botones al pie

El botón Busca, muestra en la pantalla principal todos los conceptos con el tipo seleccionado, puede ser útil para búsquedas rápidas, ya que los conceptos del mismo tipo pueden llevar distintos iconos en la ventana principal. El doble clic con el ratón sobre cada línea de la lista, tiene el mismo efecto.

El botón Carpeta, permite colgar en la posición actual de la ventana principal con un sólo clic, una carpeta de búsqueda para todos los conceptos del Tipo o Clase seleccionados. La ventana principal tiene que estar en modo descomposición normal.

El botón Nuevo concepto del tipo y clase seleccionado, permite crear conceptos nuevos también desde aquí, mostrando el diálogo nuevo concepto, con todas sus posibilidades (copiar, colgar, cambiar el tipo o datos, etc.).

El botón Asocia la clase actual, permite multiseleccionar varios conceptos en la ventana principal y cambiarlos todos al Tipo o Clase seleccionados. Muy útil para cambiar el tipo a distintos grupos de conceptos de forma rápida.

El botón Traslada, tiene la misma función que en las demás ventana del programa, traslada la definición de tipos, clases y campos de las líneas seleccionadas a la ventana de Tipos y clases paralela, pero hay que prestar MUCHA ATENCIÓN a que, para trasladar información entre dos archivos, ambos deben tener la misma definición de Tipo, clases y campos o se perderá información.

A la derecha:

El botón Pone descripciones, colores e iconos de defecto, restaura la información originales del programa distribuido antes de personalizar, leyendo los datos del archivo 'nuevo' -que funciona como plantilla- y que se encuentra en el directorio raíz de la aplicación.

El conmutador Presenta únicamente Tipos y clases utilizados, filtra la lista de árbol, para mostrar sólo los utilizados actualmente (o sea, con dato en la columna Uso).

Pestaña Campos:

En el panel superior se muestra la definición de campos dinámicos (personalizados) definidos en la BD actual. En este panel se puede arrastrar y soltar con el ratón pinchando en la columna del icono (.), para ordenar los campos como se desee que aparezcan en la pestaña de datos personalizados.

La introducción de nuevos campos en un Tipo o una Clase, se puede hacer de forma rápida desde el campo Código con una sintaxis parecida a la de crear clases: un nombre con el Código, el separador estándar de la aplicación: el punto central (·), y una de las letras que indican el Tipo de campo (descritas a continuación), seguida de un valor de Propiedades (tam, de tamaño) y después de un espacio en blanco, la Descripción del campo.

Descripción de los campos:

Código:
Hay unos campos virtuales con varios usos:

1. Secciones y subpestañas: los códigos con un guión bajo (_) como prefijo, se utilizarán como rótulos de las secciones de la pestaña de datos personalizados, y los códigos con dos guiones (__) como subpestañas de la pestaña única de datos dinámicos.

2. Referencia a campos existentes en la base: si se introduce un código ya existente en las tablas de concepto (CON) o el tipo al que pertenece la clase, con un guión bajo delante (_), redefinimos ese campo.

IMPORTANTE: Como condición para códigos, hay que tener en cuenta que no se pueden usar los que ya existe en la tabla de concepto (CON) y si se trata de una extensión de un Tipo (Clase), ninguno de los definidos en su Tipo. Esto es porque el SQL sobrecargado de la aplicación permite hacer una select de un campo virtual de otra de esas tablas directamente desde una clase. Por ejemplo: select res,fec from _doc where cod like 'F??' haciendo una consulta sobre la tabla 'virtualizada' de documentos, pero pidiendo los campos res y cod que son de la tabla de concepto.

La especificación de todos los campos de las tablas se puede obtener en cualquier momento con el procedimiento "Autodocumentador de la base de datos" accesible en el submenú Herramientas de proyecto.

Hay que aclarar que los tipos que vienen predefinidos con clases con la aplicación: Carpetas, Recursos y Documentos, no tienen una tabla para cada una de las clases, como ocurre cuando se definen clases dinámicamente, sino que se almacenan todas en una sola tabla, la del tipo: CAR, REC y DOC, por lo que en BD no existen las tablas que se muestran como de clase: alb (albarán), fac (factura)...

En la versión 7 ha desaparecido la columna Expresión que permitía definir un campo virtual como suma de otros, por su falta de utilidad, ya que se pueden realizar todo tipo de operaciones mediante eventos o con programación en el cliente web.

Uds:
Permite definir la unidad de medida, pero para cada campo, no hay que confundir con el del Tipo/clase en la pestaña Clase actual, que sirve para dimensionar los elementos de las clases. Se trata de un rótulo clasificado que se muestra entre paréntesis tras la Descripción del campo cuando aparezca en la ventana de propiedades, no se deben especificar descripciones con unidades.

Tipo de dato:
B (booleano verdadero/falso), E (entero), F (fecha), G (fecha y hora), H (hora), R (real con en núm. de decimales especificado en la columna Tamaño del campo), P (precio, número real con el número de decimales especificado en el campo Decimales precios), I (importe real con el nº de decimales especificado para los campos de Importe -es decir, precio multiplicado por cantidad-, en la misma pestaña), C (cantidad núm. real para Cantidades definido de la misma forma), T (texto ilimitado, con el nº de líneas del campo en el interface, en la columna Tamaño), L (lista de elementos, con el identificador de la clasificación que contiene los rótulos de los elementos, en Tamaño. Si no es especifica un identificador se va creando una lista de opciones nueva automáticamente en cada campo).

S (selección) es similar a la lista (L), pero es una lista de valores (descripciones) con códigos autonumerados, que no está implementada como rótulos; en la selección no influye el código sino la posición de la opción y no se accede a ellos mediante referencia a la tabla ROT, sino que los valores se guardan en la definición del propio campo. La diferencia principal es el interface de selección de valores.

W (sitio web), muestra al lado del campo un botón para utilizar directamente el navegador de defecto del sistema para navegar a la dirección contenida (no admite parámetros separados por ?). Admite el prefijo file:/// para referirse a archivos del sistema local; se abrirá el programa asociado en el sistema operativo a la extensión del archivo.

M (correo web) también tiene un botón para abrir directamente el cliente web (sólo si se tiene MAPI instalado en el sistema, es decir, habitualmente la aplicación Microsoft Outlook o un cliente Exchange) y crear un mensaje nuevo en blanco para enviar a la dirección.

D (dirección web) almacena una url también, pero indica que es un formato especial que se pasa a Google Maps (una dirección postal con una localidad, por ejemplo).

Tamaño:
Aquí se pone la característica especial de cada clase de campo: el identificador de la lista en los de tipo L, el número de líneas den los de tipo T, el núm. de decimales en los R, etc.

Diversas combinaciones de ambos campos:
 

Tipo de dato Tamaño Ejemplo Tipo Ejemplo Tamaño Propósito
> campo existente en BD > con.tex Redefinir tipo de un campo existente en BD o mostrarlo
>nombre de tipo (Tabla) nº de clase del tipo >esp 1 apuntador a un identificador de otro tipo o clase de concepto
>rcr ide de lista (tabla rot) >rcr 1.001.010 Hacer un campo de lista de clasificaciones múltiples. Debe ser un campo virtual (es decir, con un guión bajo  '_' delante del código de campo)


Mul. (múltiple):
Es un conmutador que permite marcar en cada clase si el campo va guardar todas las modificaciones que se hagan, en la ventana Histórico de campos.

Para administradores: con el conmutador 'S' Campos sin clase, de la esquina superior izquierda de la pestaña, se pueden definir campos personalizados para tablas de BD que no se ven en ventanas de propiedades, es decir, que no representan información propia de un Tipo o Clase. Por ejemplo, la tabla RCC de relaciones entre conceptos mediante Composiciones y descomposiciones, tiene varios campos que pertenecen a la relación entre dos conceptos, y a ninguno de ellos en particular, como CAN (cantidad), INI (fecha inicial), y FIN (fecha final). El botón 'T' Todos los campos, permite ver una lista alfabética que no es contextual a la clase seleccionada en la pestaña anterior, sino todos los de la base.

Subpestaña Procedimientos:

Tiene diversos botones con funciones que facilitan el trabajo de definición y modificación de campos.

Analiza campo de texto, muestra en el bloc de notas una estadística sobre los valores en conceptos del campo de texto seleccionado, estableciendo unos rangos para cada texto existente, es decir, si se trata de un texto libre, aparecerá un número '1' con la primera opción del rango: Sin dato, indicando a la derecha el número de elementos que no tienen dato, a continuación un texto, con el número de veces que se repite a la derecha.

Este análisis nos sirve para ver si un campo de texto puede o debe convertirse en una lista (clasificación).

Campo texto a clasificación convierte un campo con datos de un tipo al otro. Muy útil cuando se hace una importación de datos sin saber exactamente si un campo texto puede ser clasificado. ATENCIÓN, la lista de la clasificación destino debe estar vacía de valores, ya que se van a crear con los textos que se encuentren y podría haber conflicto con otros valores ya existentes. Los datos de texto originales no desaparecen.

Campo clasificación a texto, realiza la función inversa que el anterior. ATENCIÓN, los valores a convertir en texto son las Descripciones de los rótulos, no los Códigos. Los datos de clasificación iniciales no desaparecen.

Campo de clase a Tipo, hace genérico un campo especificado en uno de los tipos, pasando a mostrarse en primer lugar en las ventanas de propiedades de las clases.

Subpestaña Rangos:

Permite establecer unos límites discretos para búsquedas en valores continuos, pasándolos a ventana principal con doble clic. Esto es muy útil, por ejemplo, cuando uno de los campos en una medida de un equipo, tiene 3 decimales. Si establecemos un rango definido como '0-100-300-500-resto', podremos buscar valores que nos interesen, en cambio hacer una búsqueda comparando cifras con 3 decimales sería imposible sin especificar condiciones como: "que el valor sea menor que 103.000 y mayor o igual que 200.125

Cuando se introducen rangos de números reales, el separador decimal es el punto (.) igual que en JavaScript, y no la coma (,)

 

Ejemplo general: teniendo una ventana de tipos como la de la imagen, se obtiene una ventana de propiedades para los conceptos de clase 'Centro de mando' como la que se muestra:

 

Podemos ver:

En el panel del control de árbol, el campo Tab de la clase 'Centro de mando' muestra que tiene definidos 46 campos dinámicos personalizados (aparte de los que tuviera la ventana de propiedades estándar de la aplicación.

El campo de código 'conval' tiene definido que almacene valores históricos y tiene definido un rango con la lista de valores: 100, 300, 500 lo que indica que tenemos 5 tramos (incluyendo el 0 para los que no tiene valor en el campo), que se reflejan en la pestaña. En la columna Usos de esa misma pestaña se muestra el número de conceptos que tienen su valor dentro de cada rango. La lista de rangos discretos dentro de valores continuos sirve para encontrar los conceptos en cada rango haciendo doble clic en la línea de rango.

El resultado gráfico de esta definición:

Como hay una sección (de código '_ide') antes que la definición de subpestañas, se muestran unos campos por encima de la definición de las 4 subpestañas.

Los campos 'Con. Lectura [...]' tienen una marca de distinto color a la derecha, indicando que tienen valores históricos.

Subpestaña Eventos:

Permite definir una plantilla para controlar la programación de operaciones -en lenguaje JavaScript-, dependiendo de valores introducirlos en un campo marcado como Múltiple (es decir, obligatoriamente con datos históricos).

MUY IMPORTANTE: hay que distinguir bien que la definición de un evento sobre un campo en esta pestaña es una plantilla que se aplicará a TODOS los conceptos de la misma CLASE (es decir, que tengan ese campo). La definición real del evento se tiene en la pestaña Eventos de la ventana Histórico, ya que se ve el evento general de la plantilla definida aquí, o uno en particular para el concepto que se seleccione allí (que tendrá prioridad).

Los campos pueden ser casi de cualquier tipo, pero los que funcionan con casi todas las condiciones son los numéricos (Entero, Real, Precio, Cantidad, Fecha, Hora, Fecha-hora), aunque no todos admiten todas las condiciones de evento que se pueden comparar.

En Operador y valor umbral se selecciona la condición (operador) para comparar cada valor introducido en el campo, de entre las siguientes:

1. UMBRAL CRECIENTE, Superación de umbral máximo - Cuando el valor actual supere el umbral superior impuesto por el valor de referencia, siendo el valor anterior inferior al de referencia y no existiendo un evento entre ambos valores. Un caso de este tipo sería ir sumando las horas de funcionamiento de una máquina de la cual hay que hacer una revisión cada cierto número de horas de funcionamiento.

2. UMBRAL DECRECIENTE, Superación de umbral mínimo - Cuando el valor actual rebase el umbral inferior impuesto por el valor de referencia siendo el valor anterior superior al de referencia y no existiendo un evento entre ambos valores. Un caso podría ser el rellenado de un depósito al llegar un nivel mínimo de reserva.

3. DIFERENCIA - Cuando la diferencia entre el valor actual y el del último evento supere el valor de referencia. Si el valor de referencia es positivo se entiende que la toma de medidas será creciente, si no decreciente.

4. SUMATORIO - Cuando la diferencia entre el valor actual y el del último evento supere el valor de referencia. Se entiende que el valor actual es la suma de este valor más la de todas las medidas anteriores. Caso de un equipo de medición que puede llegar al final de su capacidad y volver a empezar a contar desde cero.

5. RANGO - Cuando el valor actual entre dentro del rango de medidas para el campo y el concepto actual

y en el campo del valor, se introduce el valor o lista de valores a comparar.

Las limitaciones serían:

  • Fechas, sólo admiten 2 condiciones: diferencia y rango (las fechas hay que introducirlas para establecer los rangos, en su formato de número entero AAAAMMDD), con un valor umbral en días.
  • Lista, sólo se pueden comparar mediante Rango, poniendo en valor umbral un valor o lista de valores separados por comas, de los códigos de opciones a verificar.
  • Booleanos, sólo se pueden comparar mediante Rango, poniendo en valor umbral el valor 0(falso) ó 1(verdadero).
  • Selección, sólo se pueden comparar mediante Rango, poniendo en valor umbral la posición válida.

En el texto multilínea Programa JavaScript, se puede definir cualquier función o programa que se ejecutará cuando se verifique el evento. Esta porción de código definido para cada campo, incluye automáticamente la librería 'historico' que se encuentra entre los informes comunes, y cuyo código se puede abrir y editar desde el botón Abre: historico.xjs

Pestaña Ventanas:

Permite definir la apariencia de cada ventana de propiedades de cada una de las clase existentes (tipo, si no tiene clases definidas).

Tras la definición de campos particulares en la pestaña Campos, se puede definir el formato de cómo van a aparecer, no mostrar algunos y también definir que aparezcan otros relacionados con el concepto, aunque sean de otras tablas o clases.

Inicialmente siempre contiene un texto que equivale a la representación simple de todos los campos definidos por el usuario tanto del tipo como de la clase, todos uno tras otro. Mientras se añadan, eliminen o modifiquen campos, la sintaxis de la ventana es automática y muestra todos ellos. En cuanto modifiquemos el contenido de esta pestaña, habrá que mantenerlo con todas las modificaciones que se hagan en Campos.

La sintaxis permite (se pueden ver los ejemplos en la definición de 'Centros de mando' del archivo Edificio.ing):

Pestaña:
define subpestañas dentro de la pestaña de datos particulares de la ventana de propiedades

Ejemplo: |P,,:m| Acometida | y a continuación con controles de esa subpestaña hasta al siguiente o hasta el final de definición de la ventana

Rótulo de sección:
encabezado de texto para un grupo de controles

Ejemplo: |R| CUADRO ELÉCTRICO |

Campos:
también permite varios uno a continuación de otro, todos con un único rótulo a la derecha. Como las unidades se rotulan automáticamente por campos, no se deben agrupar campos en las que se rotulen unidades de medida, ya que el rótulo no se muestra

Ejemplo: |C| idgest idgdis | I.Diferencial.G. Estado / Dispara |

Lista de relaciones:
permite un control de lista con conceptos que tienen un campo apuntando al identificador actual.
Sintaxis: |L| tabla.campo | [título] | [{campo [,modif]}] | [tabla de tipo] |

Ejemplo: |L| ilucir.mani | Circuitos del centro de mando | num fas,2 sec,2 ais,-1 con |

selecciona rodos los conceptos de tabla 'ilucir' cuyo campo 'mani' apunten al identificador actual, mostrando los 5 campos de 'ilucir': num, fas, sec, ais, con. El núm. opcional separado por coma, es la proporción del tamaño de campo respecto a los demás y el negativo, que no es editable.

Separador:
inserta una línea horizontal que separa secciones. Sintaxis: |S| [tamaño : margen_arriba : margen_abajo] |
El tamaño de defecto es -1, los márgenes pueden ser: m, 2m...

Ejemplo: |S| ::2m |

Deslizador:
como el separador pero permite redimensionar los dos paneles que separa (para ello en cada una de las partes debe haber un control que se pueda extender dinámicamente, como una lista de referencias o un campo de texto con múltiples líneas)

Ejemplo: |D|

si la que está sobre la línea |L| ilucir.mani [...] fuese un separador |S| que está comentado (los caracteres de comentario son dos barras a la derecha (//), la posición sería fija

Botón:
permite lanzar una función de un script en BD, que puede utilizar el identificador del concepto desde el que se lanza, y otros datos

Ejemplo |Bl2b3,,40| \
  botones.primero,"Botón 1º"::"Pista de prueba del Botón 1º",:16:8,:4:4 \
  botones.segundo,"Botón 2º",:8:16,:4:4 |

Crea dos botones con tamaño, márgenes especiales, con el rótulo en negrita y un tamaño de letra definido, y cada uno de ellos lanza la función primero() y segundo() del script 'botones'. La barra inclinada a la izquierda sirve para partir comandos en varias líneas

 

Botones al pie

Los botones Siguiente y Anterior, permiten desplazarse por la lista de tipos y clases igual que si fuese una ventana de propiedades.