![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WebBrowser и Word [D6, WinXP]
skiph © (2008-01-22 07:35:00)Здравствуйте.
Передо мной стоит следубщая задача. Существует некоторая база данных, в которой храняться Word-документы (это необходимо для сохранения в документах графических объектов). (Короче говоря, библиотека). Пользователь может просматривать эти документы, копироватть из них нужную информацию, но не может ее редактировать.
Для отображения документов был выбран не OLEContainer, а WebBrowser, по следующим причинам:
1. Проблемы с потерей фокуса (OLEContainer)
2. Выделить фрагмент документа (для копирования) в контейнере возможно, если документ активен (DoVerb(ovShow)), но тут возможны неосторожные действия пользователя, которые приведут к искажению документа, что потребует опять перезагрузить документ (не удобно). Опять же проблемы с потерей фокуса.
3. Кроме того при активации документа открываются панели, которые, конечно, можно отключить, но они все же немного искажают внешний вид окна.
Но при загрузке документа из базы в WebBrowser тоже возникает проблема.
(ADOQuery.FieldByNAme('Referat') as TBlobField).SaveToStream(AStream);
AStream.Seek(0, 0);
(WebBrowser1.Document as
IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
При таком открытии в браузере отображается просто неформатированное содержимое doc-файла. Кроме того при переносе фокуса на WebBrowser (после загрузки документа), приложение зависает.
DiamondShark (2008-01-24 12:21:00) [1]
> skiph (22.01.08 12:28) [3]
>
> > Не проще ли хранить в базе html-версии вордовых документов
> ?
>
> Проблема в возможных иллюстрациях. Насколько я понимаю в
> этом случае они должны храниться на винте?
Нет, не должны.
В документе делаем так:
<IMG src="img:image1234.gif">
В приложении реализуем Pluggable Protocol Handler и регистрируем для схемы "img:".
Всё. Наши картинки могут храниться где угодно.
Про Pluggable Protocol читать тут:
http://msdn2.microsoft.com/en-us/library/aa767743(VS.85).aspx
ЗЫ.
Вообще, использовать в приложении закрытый проприетарный формат документов, который для работы требует установленного платного стороннего софта -- это бяка.
skiph (2008-01-22 13:03:00) [2]
> А что тебя в этом смущает ?
Мне нужно, чтобы они хранились в самом документе, который я открываю
Сергей М. (2008-01-22 12:58:00) [3]
> skiph (22.01.08 12:28) [3]
А что тебя в этом смущает ?
skiph (2008-01-22 12:28:00) [4]
> Не проще ли хранить в базе html-версии вордовых документов ?
Проблема в возможных иллюстрациях. Насколько я понимаю в этом случае они должны храниться на винте?
> 3. Было бы логичным просматривать документы в ворде...
Было бы, но есть еще ряд примочек, благодаря которым документ должен отображаться в самом приложении.
Плохиш (2008-01-22 11:46:00) [5]1. Браузер определяет тип файла по расширению, а ты ему засовываешь набор байтов и чего-то требуешь
2. IE использует OLEConteiner
3. Было бы логичным просматривать документы в ворде...
Сергей М. (2008-01-22 11:43:00) [6]Не проще ли хранить в базе html-версии вордовых документов ? Или конвертить эти документы в html "на лету" перед загрузкой в браузер ?