Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > отображать документ word с картинками и таблицами


Автор: Savior 12.10.2009, 21:03
Нужно отобразить в Дельфи документ *.doc. 
- Если открывать с помощью RichEdit, картинки и таблицы не отображаются. 
- Можно отображать с помощью WebBrowser, но там он, во-первых, выдаёт окно типа сохранить или открыть, но это ещё ладно, но после нажатия открыть, он показывает ненужные панели инструментов (линейки и т.д.), к тому же документ можно изменять, что мне не надо, а на WebBrowser readonly не поставишь
- OleContainer показывает часть документа, а как делать полосу прокрутки я так и не понял.
Если это можно сделать как-то с помощью вышеуказанных компонентов (или как-то иначе), буду очень благодарен.

Автор: Hexel 22.10.2009, 14:01
WebBrowser
Word, кажется, умеет сохранять в ХТМЛ

Автор: zhefran 18.12.2009, 13:56
Savior, 
Я делал так, прятал панели, поверх окна ставил прозрачную форму (она у меня появлялась когда в урл была строчка .doc)!
Что бы не было окна открыть/сохранить пошамань в ИЕ, где-то оно должно отключаться. Все зависти правда от движка. Для ИЕ7 и 8 есть специальный рег файл которые это убирает.
При перемещении мышки по окну делал скролл. Если человек водит по окну, то поменять он ничего не сможет!
Панели можна прятать с помощью VB!  

Автор: Teleport 18.12.2009, 17:44
Через OleContainer делал так:
Код

procedure TForm1.Button1Click(Sender: TObject);

var
  ev: OleVariant;
  i: integer;
begin
  OleContainer1.CreateObjectFromFile(GetCurrentDir() + '\my_file.doc', False);
  OleContainer1.DoVerb(ovShow); { Активизируем OLE объект, причем методом Show }
  ev := 2; { <--- степень защиты OLE - объекта, "только чтение" }

  // Проходим по всем тулбарам связанного с контейнером приложения
  // и устанавливаем всем невидимость, чтоб не мешали ...
  for i:=1 to OleContainer1.OleObject.CommandBars.Count do
      if OleContainer1.OleObject.CommandBars.Item[i].Visible= true then
        OleContainer1.OleObject.CommandBars.Item[i].Visible:=False;

    // Ну, и наконец - устанавливаем желаемый уровень защиты
    OleContainer1.OleObject.Protect(ev);
    OleContainer1.OleObject.ActiveWindow.ActivePane.DisplayRulers := false;

end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)