TDocument - это абстрактный базовый класс, используемый как
интерфейс между документом, его отображаемыми элементами и администратором документа. Он создает, уничтожает и посылает сообщения об отображаемом элементе, информирующие, например, об изменении документа пользователем.
Чтобы послать сообщения соответствующим отображаемым элементам, документ поддерживает список всех существующих для данного
документа отображаемых элементов и взаимодействует с ними с помощью механизма обработки событий ObjectWindows. Вместо функции
SendMessage документ обращается к таблице событий отображаемого
элемента. Отображаемый элемент может обновлять данные документа,
вызывая функцию-элемент конкретного документа. Отображаемые элементы могут также представлять формируемые документом потоки.
Документы и отображаемые элементы образуют список характеристик, используемых приложением. При их создании и уничтожении
приложению посылаются сообщения, которое может запросить характеристики для определения характера обработки или отображения документа. Пригодность для данного документа конкретного отображаемого элемента должен определять администратор документов. Так как
функции характеристик атрибутов являются виртуальными, производный класс должен переопределить характеристики, определенные в
базовом классе. Каждый производный должен класс реализовывать
свои собственные типы атрибутов на основе собственных типов атрибутов строковых или двоичных данных. Если производный класс дублирует имена характеристик родительского класса, он должен обеспечивать такое же поведение и типы данных.
Хотя документы уже связаны с файлами, он не обязательно
должны быть файлами, а могут состоять из таблиц базы данных, почтовых сообщений, данных, передаваемых по факсу или через модем,
каталогов дисков и т.д.