Апшев al_capone Анзор
пише?23 июл 2007 в 2:02
Прежде всего, нужно создать объект
Это можно сделать так :
OleContainer.CreateObject('WORD.DOCUMENT',false);
Но я рекомендую сначала создать файл-шаблон, который будет распространяться с программой, и подгружаться в контейнер. Это будет удобней и безопасней.
Подгрузить его можно вот так:
OleContainer.CreateObjectFromFile('template.doc',false);
Полезные методы :
OleContainer.DoVerb(verb:integer) выполняет команды контекстного меню обекта. Их список храниться в OleContainer.ObjectVerbs.
OleContainer1.SaveAsDocument('save.doc') так можно сохранить документ после редактирования.
OleContainer1.OleObject- это наверное самое важное property. С его помощью можно получить подгруженный в контейнер объект(в данном случае это будет документ ворда). Дальше с ним через OLE можно делать все что угодно))
oleContainer.DestroyObject; закрывает сервер ole, разрушает объект, очищает ресурсы. Все несохраненные изменения будут потеряны.
Вот практически и все.
-----------------------------------------------
Немного кода =))
Вот так контейнер закрываеться
if OleContainer.Enabled then
begin
OleContainer.Close;
oleContainer.DestroyObject;
OleContainer.Enabled:=false;
end;
Вот так контейнер открывается
if OpenDialog.Execute then
begin
*здесь нужно закрыть контейнер как показано выше *
OleContainer.CreateObjectFromFile(OpenDialog.FileName,False);
OleContainer.Enabled:=true;
OleContainer.DoVerb(0);
end;
Вот так можно распечатать
OleContainer1.OleObject.PrintOut;
Вот так можно вставить объект формулу в документ:
var WordDoc:variant;
var WordAppl:variant;
begin
WordDoc:=OleContainer1.OleObject; (*получаем объект документ ворд*)
WordAppl:=WordDoc.Application; (*получаем объект приложение ворд*)
WordAppl.Selection.InlineShapes.AddOLEObject(ClassType:='Equation', FileName:='',
LinkToFile:=False, DisplayAsIcon:=False) ;(*вставка объекта Microsoft Equation *)
WordAppl.visible:=false;(*это вообще то не нужно, но я заметил что при вставке формулы вылезает окно ворда, вообще тут много будет такой мороси, так что привыкай=)) *)
end;