Программисты -> OleContainer




Правила конференции





 

Ирина Melissa Чекрышова

пише?22 июл 2007 в 16:21

кто-нибудь знает как толково обращаться с OLE-контейнером? нужна работа с формулами из ворда. Помогите, плз...

Апшев al_capone Анзор

пише?22 июл 2007 в 20:09

С OLE-контейнером из VCL?

Ирина Melissa Чекрышова

пише?22 июл 2007 в 22:24

Из Delphi

Апшев 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;



Апшев al_capone Анзор

пише?23 июл 2007 в 2:08

Извините за флад, но у меня нет выхода

У меня есть cbuilderx 1.0 а он (сволочь) не поддерживает symbian sdk 2.1 for METROWERKS CODEWARRIOR(((.
БОЛЬШАЯ ПРОСЬБА: Если у вас есть BuilderX 1.5, пришлите мне пожалуйста файлы из каталога CBuilderX/sdktemplate (в архиве должно весить не больше 50 кб) на ящик al_capone212@mail.ru.

заранее спасибо))

Ирина Melissa Чекрышова

пише?23 июл 2007 в 2:23

Спасиб тебе огромное!!! Слушай, а у тебя случаем нет никакой учеб.литературы на эту темку (соответственно электронной), я была оч признательна, если б ты мне ее скинул, например, вот сюда melissa@aport.ru ...

Апшев al_capone Анзор

пише?23 июл 2007 в 18:26

У меня есть книжка про delphi<->OLE<->MSOffice, но к сожалению (для тебя, и к счастью для меня=)) ) она не электронная. Называеться "Программирование документов и приложений MS Office в Delphi" автор Василий Корняков. Книженция очень простая: сначала идет краткая теория, потом много практики)). За вечер осилить можно. Других книг по данной тематике не читал и не видел.

Ирина Melissa Чекрышова

пише?23 июл 2007 в 22:20

Но все равно большое спасибо!

Апшев al_capone Анзор

пише?24 июл 2007 в 13:52

Обращайся))

Vadim Pascal Ershov

пише?26 июл 2007 в 15:54

2Апшев al_capone Анзор , ну вставили мы объект Equation в документ, а как закорячить туда формулу не подскажешь???

Апшев al_capone Анзор

пише?28 июл 2007 в 22:29

ручками набирать )))

Vadim Pascal Ershov

пише?29 июл 2007 в 21:42

2Апшев al_capone Анзор, ну я собственно так и думал, что только руками. Неужели эта активиксина не предоставляет никакого интерфейса для програмного её определения?

Апшев al_capone Анзор

пише?30 июл 2007 в 16:15

фиг его знает я так далеко в это дело не лез... и вообще я не понимаю почему это тебе нужно, там тулбар появляется пусть юзер с ним работает, смысл оле в том чтобы использовать готовое, не надо усложнять себе жизнь ... don't worry- be happy ;)

Vadim Pascal Ershov

пише?30 июл 2007 в 18:25

Так то оно конечно так, но ведь юзер не любит решать задачи, и программа должна решить эту задачку за него и предоставить решение с формулами ;)
Вот и приходится из за е#анного некрософта, рисовать эти самые формулы на канве.

Апшев al_capone Анзор

пише?31 июл 2007 в 23:38

Cочуствую;) Но если просто нужно нарисовать решение в виде формулы то не спеши канвасить. Кроме е#анного Майкрософта в мире есть еще кто то)).
Например, небезызвестный Дональд Кнут.
http://ru.wikipedia.org/wiki/TeX
http://www.intuit.ru/department/publish/latex/
Так решение твоей проблемы станет гораздо интереснее, чуть сложнее а может и намного проще. Но это лучше чем тупо рисовать на канве,согласись. Заодно и ТеХ поучишь. У меня вот руки не доходят…. хотя очень хочется.

Vadim Pascal Ershov

пише?1 авг 2007 в 11:23

Все правильно, рисовать я бы все равно не стал! а вот найти в сети компонент который это делает это уже что то )))

Ирина Melissa Чекрышова

пише?2 авг 2007 в 3:13

А тебе то это зачем???

Ирина Melissa Чекрышова

пише?2 авг 2007 в 3:14

Если не секрет, конечно...

Апшев al_capone Анзор

пише?2 авг 2007 в 20:00

2Vadim Pascal Ershov
Нет! ты меня не понял... хотя поступай как знаешь.

Vadim Pascal Ershov

пише?2 авг 2007 в 22:44

2Ирина Melissa Чекрышова, да так, девушке одной помогал, у нее как раз такая же задача......и зовут её кажется Ирина


Top
 



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
[ Time : 0.084s | 10 Queries | GZIP : Off ]