Наша схема использует 2 интерфейсных метода из 5
Тогда она должна использовать интерфейс, в котором есть только эти 2 метода.

Выход - сделать несколько интерфейсов с разным набором методов. Вот только выбор интерфейса должен происходить во время компиляции. Таким образом, по аналогии с ReadArray, нужно иметь ReadDatabase, но не одну, а на каждый набор методов: ReadDatabase_Db2, ReadDatabase_Db5. А компонент Database имея одну var-точку Database должен предлагать несколько функций запроса этой переменной: _var_Database_Db2, _var_Database_Db5 возвращающие соответствующие интерфейсы. Обобщив сказанное делаем вывод: среда должна поддерживать типы точек. То есть, сейчас: одна точка - одна функция, возвращающая/передающая тип TData. А должно быть: одна точка - несколько функций, для каждого типа данных. Соответственно и несколько типов событий: THI_Event_Db2,THI_Event_Db5. Если data-точка имеет тип THI_Event_Db2, то связываем её с _var_Database_Db2, а если THI_Event_Db5, то с _var_Database_Db5. Это уже в CodeGen учитывать. Но он должен получить от среды тип точки. Var и Work точки должны иметь список поддерживаемых типов, а Data и Event точки - требуемый тип. Если требуемого типа нет в наличии - не соединять такие точки. Для совместимости - все компоненты сейчас предлагают и требуют тип TData.