Compartir a través de


Estructura de flujo FieldDefinition

Hace referencia a: Outlook 2013 | Outlook 2016

Una estructura de flujo FieldDefinition contiene la definición de campo de un campo definido por el usuario o un conjunto de opciones de enlace de datos para un campo integrado.

Puede manipular mediante programación una estructura de flujo FieldDefinition si la estructura contiene la definición de campo de un campo definido por el usuario. No debe intentar crear o modificar mediante programación una estructura FieldDefinition si la estructura contiene la configuración de un campo integrado. Debe usar el Designer de Formularios de Microsoft Outlook para mantener dicha configuración para los campos integrados.

Nota:

Outlook admite dos formatos de definiciones de campo: PropDefV1 y PropDefV2. El formato PropDefV1 de las definiciones de campo contiene los siguientes elementos de datos: Flags, VT, DispId, NmidNameLength, NmidName, NameANSI, FormulaANSI, ValidationRuleANSI, ValidationTextANSI y ErrorANSI. El formato PropDefV2 contiene los mismos elementos y los elementos InternalType y SkipBlocks.

Outlook no mantiene una versión Unicode para los elementos de datos FormulaANSI, ValidationRuleANSI y ValidationTextANSI en el formato de definición de campo PropDefV2. Si estos elementos contienen caracteres no ASCII, esos caracteres pueden interpretarse de forma incoherente en función de la página de códigos ANSI del equipo en el que se ejecuta Outlook. Por lo tanto, solo debe usar valores de cadena que constan completamente de caracteres ASCII para estos elementos de datos.

Los elementos de datos de esta secuencia se almacenan en orden de bytes little-endian, inmediatamente después entre sí en el orden especificado a continuación.

  • Marcas: DWORD (4 bytes), una combinación de cero o más marcas cuyos valores y significados se enumeran en la tabla siguiente.

    Nombre de marca Valor Descripción
    PDO_IS_CUSTOM
    0x00000001
    La estructura FieldDefinition contiene una definición de un campo definido por el usuario.
    PDO_REQUIRED
    0x00000002
    Para un control de formulario enlazado a este campo, la casilla de verificación Un valor es necesaria para este campo está seleccionada en la pestaña Validación del cuadro de diálogo Propiedades .
    PDO_PRINT_SAVEAS
    0x00000004
    Para un control de formulario enlazado a este campo, la casilla Incluir este campo para imprimir y Guardar como está seleccionada en la pestaña Validación del cuadro de diálogo Propiedades .
    PDO_CALC_AUTO
    0x00000008
    Para un control de formulario enlazado a este campo, la casilla Calcular esta fórmula se selecciona automáticamente en la pestaña Valor del cuadro de diálogo Propiedades .
    PDO_FT_CONCAT
    0x00000010
    Se trata de un campo de tipo Combinación y tiene la opción Combinar campos y fragmentos de texto entre sí seleccionada en su cuadro de diálogo Campo de fórmula de combinación .
    PDO_FT_SWITCH
    0x00000020
    Este campo es de tipo Combinación y tiene la opción Mostrar solo el primer campo no vacío, omitiendo los siguientes seleccionados en el cuadro de diálogo Campo de fórmula de combinación .
    PDO_PRINT_SAVEAS_DEF
    0x00000040
    Outlook no usa esta marca, pero se incluye para todas las definiciones de campo definidas por el usuario.
  • VT: WORD (2 bytes), el tipo de datos del campo, que es una constante de la enumeración VARENUM .

  • DispId: DWORD (4 bytes), el identificador de distribución del campo. Para un campo definido por el usuario, el valor es 0.

  • NmidNameLength: WORD (2 bytes), el número de elementos de la matriz NmidName.

  • NmidName: matriz de WCHAR. Para una definición de campo definida por el usuario, esta es la representación Unicode (UTF-16) del nombre del campo. El recuento de esta matriz es igual a NmidNameLength.

  • NameANSI: estructura de flujo PackedAnsiString . Esta es la representación ANSI del nombre del campo.

  • FormulaANSI: estructura de flujo PackedAnsiString. Se trata de una representación ANSI de la fórmula de cálculo para el campo. Se muestra en la sección Valor inicial de la pestaña Valor del cuadro de diálogo Propiedades de un control de formulario enlazado a este campo.

  • ValidationRuleANSI: estructura de flujo PackedAnsiString. Se trata de una representación ANSI de la fórmula de validación del campo. Se muestra en el cuadro de texto de Fórmula de validación en la pestaña Validación del cuadro de diálogo Propiedades de un control de formulario enlazado a este campo.

  • ValidationTextANSI: estructura de flujo PackedAnsiString. Se trata de una representación ANSI del texto de error de validación del campo. Se muestra en el cuadro de texto Mostrar este mensaje si se produce un error en la validación en la pestaña Validación del cuadro de diálogo Propiedades de un control de formulario enlazado a este campo.

  • ErrorANSI: estructura de flujo PackedAnsiString. Outlook no usa este elemento; debe establecer este elemento en una cadena vacía.

  • InternalType: DWORD (4 bytes), el tipo interno del campo. Este elemento de datos solo está presente si el formato de definición de campo es PropDefV2. El tipo interno es uno de los siguientes valores, cada uno de los cuales corresponde a un tipo en el cuadro de diálogo Nuevo campo para campos definidos por el usuario.

    Nombre de tipo interno Valor Tipo correspondiente en el cuadro de diálogo Nuevo campo
    iTypeString
    0
    Text
    iTypeNumber
    1
    Number
    iTypePercent
    2
    Percent
    Moneda
    3
    Moneda
    iTypeBool
    4
    Sí/No
    iTypeDateTime
    5
    Fecha y hora
    iTypeDuration
    6
    Duración
    iTypeCombination
    7
    Combinación, con la opción Mostrar solo el primer campo no vacío, omitiendo los siguientes seleccionados en el cuadro de diálogo Campo de fórmula de combinación .
    iTypeFormula
    8
    Formula
    iTypeResult
    9
    Este tipo no se usa para campos definidos por el usuario.
    iTypeVariant
    10
    Este tipo no se usa para campos definidos por el usuario.
    iTypeFloatResult
    11
    Este tipo no se usa para campos definidos por el usuario.
    iTypeConcat
    12
    Combinación, con la opción Combinar campos y fragmentos de texto entre sí seleccionada en el cuadro de diálogo Campo de fórmula de combinación .
    iTypeKeywords
    13
    Palabra clave
    iTypeInteger
    14
    Integer
  • SkipBlocks: una serie de una o varias estructuras de flujo SkipBlock . Este elemento de datos solo está presente si el formato de definición de campo es PropDefV2. Si el formato de definición de campo es PropDefV2, la serie debe contener al menos una estructura SkipBlock, la estructura SkipBlock que tiene el elemento de datos Size igual a 0 y la serie debe comenzar y finalizar con esta estructura SkipBlock.

    El propósito de una estructura SkipBlock depende de su posición relativa en la serie SkipBlocks. Si la definición de campo está en formato PropDefV2 y la primera estructura no es la estructura de terminación (el elemento de datos Size es mayor que 0), Outlook asume que la primera estructura SkipBlock especifica el nombre del campo en Unicode (UTF-16).

    Importante

    Si el primer SkipBlock es la estructura de terminación, se usa el elemento de datos NameANSI para determinar el nombre del campo. Si esa cadena contiene caracteres que no sean ASCII, esos caracteres pueden interpretarse de forma incoherente en función de la página de códigos ANSI del equipo en el que se ejecuta Outlook. Para evitar estas incoherencias, asegúrese de especificar siempre el primer SkipBlock en las definiciones de campo que cree, al menos cuando el nombre del campo incluya caracteres no ASCII.

    Si una versión futura de un formato de definición de campo introduce fragmentos adicionales de datos en el flujo FieldDefinition, estos datos se pueden almacenar como estructuras de flujo SkipBlock adicionales en la serie SkipBlocks antes de que finalice la estructura SkipBlock que tiene el elemento de datos Size igual a 0. Las versiones anteriores de Outlook pueden omitir de forma segura estas estructuras SkipBlock adicionales hasta la estructura SkipBlock de terminación y seguir procesando correctamente todos los bloques que admiten.

Vea también