- -
Word+Delphi
(
http://forum.oszone.net/showthread.php?t=30364)
Prisoner |
08-08-2003 22:34 208356 |
Вот скажем нашел я в одном документе все что мне нать, необходимо все это добро вставить в другой документ и сохранить, не закрывая первый (не все добро повыбирали, жадные мы :)). А получается все время вывод в первый док, причем с затиранием всего его содержимого...
Даже такой код творит что-то странное имхо:
Код:
WordConnect(dmData.WordApplication);
FileName:=dmData.odInFile.FileName;
dmData.WordApplication.Documents.Open(FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam);
frMain.Caption:=IntToStr(dmData.WordApplication.Documents.Count);
frMain.Caption:=frMain.Caption+'->'+dmData.WordApplication.Documents.Item(DocIndex).Name;
dmData.WordApplication.Documents.Add(EmptyParam,NewTemplate,EmptyParam,EmptyParam);
DocIndex:=DocIndex+1;
dmData.WordDocument.ConnectTo(dmData.WordApplication.Documents.Item(DocIndex));
frMain.Caption:=frMain.Caption+'*'+IntToStr(dmData.WordApplication.Documents.Count);
frMain.Caption:=frMain.Caption+'->'+dmData.WordApplication.Documents.Item(DocIndex).Name;
В результате в кэпшене: 1->Test3.doc*2->Test3.doc хотя существуют два окна ворда с заголовками Test3.doc и Документ2.doc. Что за грабли?
|
Prisoner |
09-08-2003 20:16 208357 |
Победил... причем решение лежало на поверхности. Вот скажем так можно без проблем реализовывать работу с документами, причем не задумываясь выводить в тот который нужен:
Скажем откроем доку:
Код:
dmData.WordApplication.Documents.Open(FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam);
dmData.WordDocument.ConnectTo(dmData.WordApplication.ActiveDocument);
Теперь WordDocument будет давать возможность работать с этим открытым доком.
Добавим доку:
Код:
procedure NewWordDoc(WordApplication: TWordApplication;WordDocument: TWordDocument);
Var
NewTemplate:OleVariant;
Begin
NewTemplate:=False;
WordApplication.Documents.Add(EmptyParam,NewTemplate,EmptyParam,EmptyParam);
WordDocument.ConnectTo(WordApplication.ActiveDocument);
End;
Теперь передаем в процедурку любой имеющийся экземпляр TWordDocument и работаем с ним без проблем... воть.
|
Время: 15:17.
© OSzone.net 2001-