кто-нибудь знает как толково обращаться с OLE-контейнером? нужна работа с формулами из ворда. Помогите, плз…
кто-нибудь знает как толково обращаться с OLE-контейнером? нужна работа с формулами из ворда. Помогите, плз…
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
5 августа 2007 в 18:03
ладно я тут кажется лишний… оставлю вас
2 августа 2007 в 22:04
2Ирина Melissa Чекрышова, да так, девушке одной помогал, у нее как раз такая же задача……и зовут её кажется Ирина
2 августа 2007 в 20:00
2Vadim Pascal Ershov
Нет! ты меня не понял… хотя поступай как знаешь.
2 августа 2007 в 3:01
А тебе то это зачем???
2 августа 2007 в 3:01
Если не секрет, конечно…
1 августа 2007 в 11:02
Все правильно, рисовать я бы все равно не стал! а вот найти в сети компонент который это делает это уже что то )))
31 июля 2007 в 23:03
Cочуствую;) Но если просто нужно нарисовать решение в виде формулы то не спеши канвасить. Кроме е#анного Майкрософта в мире есть еще кто то)).
Например, небезызвестный Дональд Кнут.
//ru.wikipedia.org/wiki/TeX
//www.intuit.ru/department/publish/latex/
Так решение твоей проблемы станет гораздо интереснее, чуть сложнее а может инамного проще. Но это лучше чем тупо рисовать на канве,согласись. Заодно и ТеХ поучишь. У меня вот руки не доходят…. хотя очень хочется.
30 июля 2007 в 18:02
Так то оно конечно так, но ведь юзер не любит решать задачи, и программа должна решить эту задачку за него и предоставить решение с формулами
Вот и приходится из за е#анного некрософта, рисовать эти самые формулы на канве.
30 июля 2007 в 16:01
фиг его знает я так далеко в это дело не лез… и вообще я не понимаю почему это тебе нужно, там тулбар появляется пусть юзер с ним работает, смысл оле в том чтобы использовать готовое, не надо усложнять себе жизнь… don'tworry- be happy
29 июля 2007 в 21:04
2Апшев al_capone Анзор, ну я собственно так и думал, что только руками. Неужели эта активиксина не предоставляет никакого интерфейса для програмного её определения?
28 июля 2007 в 22:02
ручками набирать )))
26 июля 2007 в 15:05
2Апшев al_capone Анзор , ну вставили мы объект Equation в документ, а как закорячить туда формулу не подскажешь???
24 июля 2007 в 13:05
Обращайся))
23 июля 2007 в 22:02
Но все равно большое спасибо!
23 июля 2007 в 18:02
У меня есть книжка про delphi<->OLE<->MSOffice, но к сожалению (для тебя, и к счастью для меня=)) ) она не электронная. Называеться "Программирование документов и приложений MS Office в Delphi" автор Василий Корняков. Книженция очень простая: сначала идет краткая теория, потом много практики)). За вечер осилить можно. Других книг по данной тематике не читали не видел.
23 июля 2007 в 2:02
Спасиб тебе огромное!!! Слушай, а у тебя случаем нет никакой учеб.литературы на эту темку (соответственно электронной), я была оч признательна, если б ты мне ее скинул, например, вот сюда melissa@aport.ru …
23 июля 2007 в 2:00
Прежде всего, нужно создать объект
Это можно сделать так :
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;
23 июля 2007 в 2:00
Извините за флад, но у меня нет выхода
У меня есть cbuilderx 1.0 а он (сволочь) не поддерживает symbian sdk 2.1 for METROWERKS CODEWARRIOR(((.
БОЛЬШАЯ ПРОСЬБА: Если у вас есть BuilderX 1.5, пришлите мне пожалуйста файлы из каталога CBuilderX/sdktemplate (в архиве должно весить не больше 50 кб) на ящик al_capone212@mail.ru.
заранее спасибо))
22 июля 2007 в 22:02
Из Delphi
22 июля 2007 в 20:00
С OLE-контейнером из VCL?