Вниз
Скачать: CL | DM;

Загрузка в "WordApplication1" файл из TMemoryStream   Найти похожие ветки 

← →
Chaser ©   (2007-07-17 12:08) [0]

Всем привет.

Возникла необходимость загружать в "WordApplication1" файл из TMemoryStream.
Конечно можно сначала сохранять файл на диск, а потом делать "WordApplication1.Documents.Open(...)", а затем удалять фал, но то как-то некрасиво получается.
Загрузку из потока в WordApplication не нашел.
Подкажите, есть ли решение данного вопроса?


← →
umbra ©   (2007-07-17 12:15) [1]


> есть ли решение данного вопроса?
>

скорее всего нет.


← →
Сергей М. ©   (2007-07-17 12:16) [2]

Используй TOleContainer + TOleStream


← →
Chaser ©   (2007-07-17 13:02) [3]

Через TOleContainer геморно...


← →
Сергей М. ©   (2007-07-17 13:13) [4]

Чтой-то вдруг ?


← →
Chaser ©   (2007-07-17 13:21) [5]

Да вот нашел всего пару примеров, и то в одном случае загружает, но не печатает, выдает ошибку.
А есть простой пример по TOleContainer + TOleStream?


← →
Сергей М. ©   (2007-07-17 13:25) [6]


> А есть простой пример по TOleContainer + TOleStream?


У тебя ж их целых два, зачем тебе еще один ?


← →
Chaser ©   (2007-07-17 13:28) [7]

Там не совсем то ))


← →
Сергей М. ©   (2007-07-17 13:34) [8]


> Там не совсем то


Как это "не совсем то" ?
LoadFromStream там используется ? Вот от него и пляши, это ключевой метод.


← →
Chaser ©   (2007-07-17 15:09) [9]

К примеру есть код:


var
 MSWord: Variant;
 ms: TMemoryStream;
begin
if OpenDialog1.Execute
then
 begin
  try
   MSWord:=CreateOleObject("Word.Application"); // для остальных
  except
   MSWord:=CreateOleObject("Word.Application.10"); // для Office XP
  end;

  // ms:=TmemoryStream.Create;
  //...
  // OleContainer1.LoadFromStream(ms);
  // ms.Free;

  MSWord.Documents.Open(OpenDialog1.FileName);
  MSWord.PrintOut;
  MSWord.Quit;
  MSWord:=Unassigned;
 end
end;


Но как загрузить в MSWord содержимое объекта OleContainer1 не понятно.
Есть какое-то присвоение? Так как у MSWord кроме Insert, Open и Add больше ничего полезного нет.


← →
Сергей М. ©   (2007-07-17 15:11) [10]


> К примеру есть код


Выкинь его нафих.

Все тоже самое делает OleContainer, имеющий при этом то что тебе нужно - метод LoadFromStream.


← →
Сергей М. ©   (2007-07-17 15:21) [11]


> как загрузить в MSWord содержимое объекта OleContainer1
> не понятно


Положись на OleLoad, к вызову которого в конечном итоге сводится вызов OleContainer.LoadFromStream. Он тебе и сам Word загрузит и скомандует Ворду открыть документ, хранящийся в потоке.

Поток должен быть представлен объектом TOleStream, который, в свою очередь, берет данные из интерфейса IStream, представляемого с пом. объекта класса TStreamAdapter.

Обязательно следует учесть, что стрим, хранящий образ документа и используемый для его загрузки методом TOleContainer.LoadFromStream, должен начинаться с данных в формате TStreamHeader (см. olectrns.pas)


← →
Chaser ©   (2007-07-17 15:40) [12]

ОК, спасибо за информацию, буду разбираться.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
2-1188920622
General
2007-09-04 19:43
2007.09.30
Копирование имени файла


2-1188251587
Dummy
2007-08-28 01:53
2007.09.30
Как узнать погоду через инет средствами Дельфи 5?


10-1137574629
Bratskiy
2006-01-18 11:57
2007.09.30
Поиск в Word


15-1188675443
vpbar
2007-09-01 23:37
2007.09.30
Организм не принимает С++


3-1179990389
олег_л
2007-05-24 11:06
2007.09.30
Quick Report




   Наверх