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

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

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 "на лету" перед загрузкой в браузер ?


Наверх

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