Класс предназначен для работы с компонентом MaSubMatrix. Он является потомком класса TmaMatrix для доступа к созданной подматрице.
При использовании этого класса для чтения или записи данных происходит преобразование индекса ячейки, заданное с помощью фукнций класса, и затем выполняется запись или считывание в/из родительской матрицы по преобразованному индексу.

###### Свойства и функции класса TmaSubMatrix

- constructor Create
- constructor Create(matrix: ImaSubMatrix)
- constructor Create(matrix: ImaMatrix)
- constructor Create(cell: TmaCell)
- property Parent: TmaMatrix
- procedure ClearStructure
- function VerifyStructure: Boolean
- procedure SetDim(parentDim: integer; dim: integer; Size: integer)
- procedure SetDim(parentDim: integer; dim: integer; Size: integer; index: PInteger)
- procedure FixDim(parentDim: integer; index: integer)
- procedure SetIdentityDim(dim:integer)

    constructor Create

Создание новой подматрицы.

    constructor Create(matrix: ImaSubMatrix)

Присоедимяет класс к уже существующему классу с интерфейсом ImaSubMatrix.

Параметры:

matrix указатель на существующий интерфейс

    constructor Create(matrix: ImaMatrix)

Присоедимяет класс к уже существующему классу с интерфейсом ImaMatrix. Класс должен поддерживать интерфейс ImaSubMatrix.

Параметры:

matrix указатель на существующий интерфейс

    constructor Create(cell: TmaCell)

Присоединяет класс к интерфейсу, хранящемуся в ячейке.

Параметры:

cell ячейка, из которой копируется значение

    property Parent: TmaMatrix

Свойство позволет получить и установить родительскую матрицу для подматрицы. При вызове также сбрасывается преобразование индекса.

    procedure ClearStructure

Сбрасывает преобразование индекса так, что преобразование индекса не производится.

    function VerifyStructure: Boolean

Функция проверяет правильность задания преобразования: каждой незафиксированной размерности родительской матрицы должна соответствовать размерность в подматрице.

Возвращаемое значение:

true если преобразование задано правильно

    procedure SetDim(parentDim: integer; dim: integer; Size: integer)

Функция устанавливает соответствие между размерностью parentDim родительской матрицы и размерностью dim подматрицы.
Если size=0, то таблица преобразования и аргумент index не используется.
Если size≠0 то таблица преобразования берется из ранее заданного соответствия с тем же parentDim и длина этой таблицы (и размер подматрицы по размерности dim) устанавливается равным size.

Параметры:

parentDim размерность родительской матрицы, которой будет соответствовать размерность dim в подматрице
dim изменяемая размерность в подматрице
size длина таблицы преобразования или 0, если таблица не используется

    procedure SetDim(parentDim: integer; dim: integer; Size: integer; index: PInteger)

Функция устанавливает соответствие между размерностью parentDim родительской матрицы и размерностью dim подматрицы.
Таблица преобразования задается параметром index и длина этой таблицы (и размер подматрицы по размерности dim) устанавливается равным size. При этом таблица преобразования не копируется и все изменения массива index будут влиять на преобразование индексов.

Параметры:

parentDim размерность родительской матрицы, которой будет соответствовать размерность dim в подматрице
dim изменяемая размерность в подматрице
size длина таблицы преобразования или 0, если таблица не используется
index не используется, если size==0; таблица преобразования или NULL, если size≠0

    procedure FixDim(parentDim: integer; index: integer)

Функция фиксирует размерность parentDim родительской матрицы и делает ее равной index.

Параметры:

parentDim фиксируемая размерность родительской матрицы
index фиксируемая координата по размерности parentDim родительской матрицы

    procedure SetIdentityDim(dim:integer)

Функция увеличивает размерность подматрицы, добавляя размерность длины 1.

Параметры:

dim номер добавляемой размерности. При добавлении существующие размерности dim, dim+1,dim+2... "сдвигаются" на одну, сохраняя соответствия с размерностями родительской матрицы