Для хранения OLE-объектов могут быть использованы как поля специальных типов (поддерживаемые, например, Paradox или dBase)., так и обычные blob-поля.
Основная идея такого приложения заключается в том, что OleContainer позволяет сохранить содержащийся в нем объект в файле или в памяти, а затем поместить его в blob-поле.
Модифицируем созданное приложение, добавив компоненты TTable, TdataSource и TDBNavigator и заменив надписи на кнопках на "Сохранить" и "Показать". Создадим копию таблицы biolife.db из набора демонстрационных примеров, свяжем с ней компонент TTable и создадим набор объектов TFields. Свяжем TDataSource c TTable и TDBNavigator с TDataSource.
Изменим обработчики событий:
void __fastcall TForm1::Button2Click(TObject *Sender) { if (OleContainer1->OleObjectInterface!=NULL)// определим, не пуст ли контейнер {OleContainer1->SaveToFile("aaa.dat"); Table1->Edit(); Table1Graphic->LoadFromFile("aaa.dat");} } //----------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Table1Graphic->SaveToFile("aaa.dat"); OleContainer1->LoadFromFile("aaa.dat"); }
Теперь, если TOleContainer не пуст, при нажатии на кнопку "Сохранить" его содержимое сохранится в blob-поле таблицы, а при нажатии на кнопку "Показать" OLE-объект из blob-поля отобразится в TOleContainer.
Рис.12. Неактивный OLE-объект, изъятый из blob-поля при нажатии на кнопку "Показать"
Назад | Содержание | Вперед