Форум: "Основная";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
ВнизЗагрузка в "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 вся ветка
Форум: "Основная";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.056 c