Мельница данных- Интерфейс ITypeInfo  (раздел целиком)  (02.08.2021)
Интерфейс ITypeInfo
Информация о типах полей поставляется в виде набора объектов, каждый из которых реализует интерфейс (наследник INamedItemInfo )
  ITypeInfo = interface(INamedItemInfo)
    ['{2B6A5E20-3C36-4574-89DB-7C873A5C4A00}']
    function Get_Required: WordBool; safecall;
    function Get_SimpleType: TSimpleType; safecall;
  end;
Информация о конкретном типе передается при помощи реализации одного из наследников этого интерфейса.
  • функция Get_Required возвращает True, если значение поля обязательно для задания.
  • функция Get_SimpleType возвращает информацию о простом типе данных. В зависимости от возвращаемого значения объект должен также реализовывать один из интерфейсов конкретных типов (см. далее). Возможные значения (тип TSimpleType ):

1. Интерфейс ITypeInfo2
Информация о предоставляемых провайдером дополнительных возможностях фильтрации (наследник интерфейса ITypeInfo)
  ITypeInfo2 = interface(ITypeInfo)
    ['{77F58BDF-F01C-40F3-B193-1027AD8C4EDA}']
    function GetSpecialFilterCount: Integer; safecall;
    function GetSpecialFilterText(Index: Integer): WideString; safecall;
    function EditSpecialFilter(Index: Integer; var Filter: WideString): WordBool; safecall;
  end;
  • функция GetSpecialFilterCount возвращает количество дополнительных элементов списка, выпадающего при выборе фильтра по колонке.
  • функция GetSpecialFilterText возвращает текст дополнительного элемента списка, выпадающего при выборе фильтра по колонке, с номером Index.
  • функция EditSpecialFilter вызывается в момент выбора пользователем дополнительного элемента списка, выпадающего при выборе фильтра по колонке, с номером Index. Значение выражения фильтра передается и возвращается в параметре Filter. Функция возвращает True в случае, если выражение, возвращенное в параметре Filter нужно применить для фильтрации столбца запроса, False - в противном случае.

2. Интерфейс IStringInfo
Информация о строковом типе (наследник интерфейса ITypeInfo)
  IStringInfo = interface(ITypeInfo)
    ['{74AC4C03-E803-421B-B30D-1A2D2C49827F}']
    function Get_Length: Integer; safecall;
  end;
  • функция Get_Length возвращает максимальную длину строки.

3. Интерфейс IIntegerInfo
Информация о целочисленном типе (наследник интерфейса ITypeInfo)
  IIntegerInfo = interface(ITypeInfo)
    ['{9003B25E-926D-42AE-A907-813DF3A8343E}']
    function Get_MaxValue: Integer; safecall;
    function Get_MaxValueUsed: WordBool; safecall;
    function Get_MinValue: Integer; safecall;
    function Get_MinValueUsed: WordBool; safecall;
  end;
  • функция Get_MaxValueUsed возвращает True, если значение имеет верхнюю границу.
  • функция Get_MaxValue возвращает верхнюю границу значения, если есть.
  • функция Get_MinValueUsed возвращает True, если значение имеет нижнюю границу.
  • функция Get_MinValue возвращает нижнюю границу значения, если есть.

4. Интерфейс IFloatInfo
Информация о вещественном типе (наследник интерфейса ITypeInfo )
  IFloatInfo = interface(ITypeInfo)
    ['{E9B56C6D-47DC-4AB9-9E80-6EEF77708704}']
    function Get_MaxValue: Double; safecall;
    function Get_MaxValueUsed: WordBool; safecall;
    function Get_MinValue: Double; safecall;
    function Get_MinValueUsed: WordBool; safecall;
    function Get_Precision: Integer; safecall;
    function Get_Scale: Integer; safecall;
  end;
  • функция Get_MaxValueUsed возвращает True, если значение имеет верхнюю границу.
  • функция Get_MaxValue возвращает верхнюю границу значения, если есть.
  • функция Get_MinValueUsed возвращает True, если значение имеет нижнюю границу.
  • функция Get_MinValue возвращает нижнюю границу значения, если есть.
  • функция Get_Precision возвращает максимальное количество значащих десятичных цифр в значении.
  • функция Get_Scale возвращает максимальное количество десятичных цифр после запятой.

5. Интерфейс IDateInfo
Информация о типе "Дата" (без времени) (наследник интерфейса ITypeInfo )
  IDateInfo = interface(ITypeInfo)
    ['{DA392510-105F-4655-9A38-18ECA2FBEB97}']
  end;
Не имеет методов.

6. Интерфейс ITimeInfo
Информация о типе "Время" (без даты) (наследник интерфейса ITypeInfo )
  ITimeInfo = interface(ITypeInfo)
    ['{D7067CAC-67A5-41DB-8D95-40409D8658AB}']
  end;
Не имеет методов.

7. Интерфейс IDateTimeInfo
Информация о типе "Дата со времемем" (наследник интерфейса ITypeInfo )
  IDateTimeInfo = interface(ITypeInfo)
    ['{7F5CC8F9-8CE1-4DB7-8932-884EF3BAB538}']
  end;
Не имеет методов.

8. Интерфейс IBooleanInfo
Информация о логическом типе (наследник интерфейса ITypeInfo )
  IBooleanInfo = interface(ITypeInfo)
    ['{8256EDF9-8613-4970-850C-50047839D6BF}']
    function Get_TrueValue: WideString; safecall;
    function Get_FalseValue: WideString; safecall;
  end;
  • функция Get_TrueValue возвращает отображаемую строку для значения True (например, "Да").
  • функция Get_FalseValue возвращает отображаемую строку для значения False (например, "Нет").

9. Интерфейс IEnumerationInfo
Информация о перечислимом типе (наследник интерфейса ITypeInfo )
  IEnumerationInfo = interface(ITypeInfo)
    ['{B58A3F23-1AAC-4420-ADFF-B23B9938A994}']
    function Get_ItemCount: Integer; safecall;
    function Get_Item(Index: Integer): IEnumerationItem; safecall;
  end;
Перечислимый тип определяет набор значений, которые может принимать поле. Значения в таблице трактуются как равные имени элемента перечисления.
  • функция Get_ItemCount возвращает количество элементов перечисления.
  • функция Get_Item возвращает ссылку на элемент перечисления с номером Index, реализующий интерфейс IEnumerationItem

10. Интерфейс IReferenceInfo
Информация о типе "ссылка" (наследник интерфейса ITypeInfo )
  IReferenceInfo = interface(ITypeInfo)
    ['{309C8CB1-4A1C-4E58-BC3F-D1AF27861A8F}']
    function Get_TargetTable: ITableInfo; safecall;
  end;
  • функция Get_TargetTable возвращает ссылку на таблицу, с которой осуществляется связь. Возвращается ссылка на интерфейс ITableInfo

11. Интерфейс IBlobInfo
Информация о типе "больших двоичных объектов" (наследник интерфейса ITypeInfo )
  IBlobInfo = interface(ITypeInfo)
    ['{3905C9C4-EAEB-4844-BB55-3F524F1F3FAC}']
    function Get_SubType: TBlobSubType; safecall;
  end;
  • функция Get_SubType возвращает подтип большого двоичного объекта. Одно из следующих значений (тип TBlobSubType ):
    • bsText - текст
    • bsImage - изображение
    • bsBinary - двоичные данные