Быстрый доступ к значениям записи.

Для доступа к значениям полей конкретной записи в стандартном DataSet’е необходимо вначале перейти на нужную запись. Это не всегда удобно т.к. переход на запись методами MoveBy, RecNo, Bookmark активизирует события об изменении записи, что может привести к большим задержкам и перерисовкам экрана.

Для быстрого получения значения из конкретно записи без активизации события об изменении в MemTableEh можно использовать несколько способов.

Использовать методы DisableControls, EnableControls для деактивизации событий об изменениях в DataSet’е. Недостаток этого способа в том что EnableControls вызывает событие об изменении датасета что приведет к перерисовке визуальных компонент подключенных к DataSet’у.

Использовать методы InstantReadEnter, InstantReadLeave для перехода в режим InstantRead.

InstantReadEnter входит в режим просмотра записей и переходит на запись в DataSet’е определенную параметром RowNum. После этого вы можете читать значения записи. Каждому вызову метода InstantReadEnter, должен соответствовать вызов InstantReadLeave – выход из режима чтения записей. В режиме InstantRead нельзя менять значения полей записи. Методы InstantReadEnter, InstantReadLeave не посылают события об изменении позиции записи внешним компонентам.

Использовать свойства для доступа к внутренним объектам хранения данных. Внутренние объекты позволяют иметь доступ к значениям записей как к массиву данных по индексу. Кроме того вы можете обратится ко всем записям внутреннего массива данных без учета локального фильтра. Для доступа к внутренним структурам данных используйте следующие свойства объектам TMemTableEh:

RecordsView: TRecordsViewEh – ссылка на отфильтрованный список записей.

RecordsView.Rec[Index: Integer]: TMemoryRecordEh– доступ к конкретной записи в массиве отфильтрованных значений.

RecordsView.Count: Integer – количество записей в отфильтрован списке. В режиме TreeView учитываются только раскрытые ветви.

RecordsView.MemTableData.RecordsList[Index: Integer]: TMemoryRecordEh – доступ к конкретной записи в массиве всех записей.

RecordsView.MemTableData.RecordsList.Count –количество записей в списке всех записей.

RecordsView.MemTableData.RecordsList[Index: Integer].DataValues[const FieldNames: string; DataValueVersion: TDataValueVersionEh]: Variant – доступ к значению поля(ей) в записи с номером Index.