Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO Access поля типа OLE-объект [D6, Access]


Fanta ©   (2004-05-13 07:58:00) 

Простите заранее за дебильный вопрос: просмотрела много форумов и FAQов на разных сайтах, потратила кучу времени, нашла много людей, столкнувшихся с такой же проблемой и так и не нашедших решения...
В общем, так. Есть база Access с полем типа Ole-объект (если говорить вообще, то в этом поле должен быть всего лишь рисунок любого формата, почти любого, из самых распространенных). И есть приложение, которое должно из этой Access базы выводить поле с ole-объектом (т.е. с рисунком).
Вопрос в том, какой компонент лучше использовать для вывода рисунка. Если это OleContainer, то он не хочет читать из потока ни в какую:
procedure TForm1.OleContainer1Activate(Sender: TObject);
var
 stream: TStream;
begin
 ADOTable1.First;
 stream := ADOTable1.CreateBlobStream(DataSource1.DataSet.FieldByName('Picture'), bmRead);
 OleContainer1.LoadFromStream(stream);
 OleContainer1.Run;
 OleContainer1.DoVerb(ovShow)
end;
Конечно, можно было БЫ использовать DBImage, но он сообщает об ошибке при попытке свойству DataField присвоить то самое поле типа ole-объект.
Такая вот задача. Если кто знает, что надо делать, пожалуйста, подскажите!


sniknik   (2004-05-13 09:04:00) [1]

> И перед добавлением в OleContainer я должна этот префикс удалить?
скорее добавить.

> Так получается? Sniknik, я тут что, сама с собой разговариваю?
здесь не чат, глупо ожидать ответов через пять мин. (а счас я вообще на работу пойду и ~1.5часа меня здесь не будет)

я тебе дал (помоему) вполне достаточно чтобы понять где "копать", тебе нужно понять разницу между рисунком положенным тобой и аксессом. именно на эту разницу я указал.
но дальше твоя забота, тем более конкретно этим я не занимался, формат префикса не знаю (иначе бы дал), oleContainer считаю лишним (если только для рисунков), чего ты хочеш добится этим не знаю, за тебя делать не буду ... и т.д.

p.s. попроси татьяну выслать тебе пример, там разницу видно наглядно
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1084337455&n=1


Fanta   (2004-05-13 08:45:00) [2]

Это то есть в oleContainer надо грузить поток со смещением в 82 байта. Так получается? Sniknik, я тут что, сама с собой разговариваю? Отзовись!


Fanta   (2004-05-13 08:33:00) [3]

В смысле "ложить" в OleContainer?
И перед добавлением в OleContainer я должна этот префикс удалить?
Чуть подробнее!


sniknik   (2004-05-13 08:15:00) [4]

если записывать рисунок в самом аксессе (например перетащив bmp с проводника в поле), то он добавит к рисунку 82 байта, свой префикс (и поле в нем так и будет называться "рисунок паинт браш").
если пытаешся положить сам в такомже формате тебе нужно или найти описание этого префикса или самому разобрать формат, и ложить также. читать тоже с учетом этого.

> Конечно, можно было БЫ использовать DBImage
а вот этого сделать никак не получится если хочеш читать/писать "родные" поля.


Наверх

Титульная страница Поиск, карта сайта Написать письмо