singlepost

OleContainer << На главную или назад  

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

130 ответов в теме “OleContainer”

  1. 20
    Анзор Апшев ответил:

    ладно я тут кажется лишний… оставлю вас ;)

  2. 19
    Vadim Ershov ответил:

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

  3. 18
    Анзор Апшев ответил:

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

  4. 17
    Ирина Чекрышова ответил:

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

  5. 16
    Ирина Чекрышова ответил:

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

  6. 15
    Vadim Ershov ответил:

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

  7. 14
    Анзор Апшев ответил:

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

  8. 13
    Vadim Ershov ответил:

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

  9. 12
    Анзор Апшев ответил:

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

  10. 11
    Vadim Ershov ответил:

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

  11. 10
    Анзор Апшев ответил:

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

  12. 9
    Vadim Ershov ответил:

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

  13. 8
    Анзор Апшев ответил:

    Обращайся))

  14. 7
    Ирина Чекрышова ответил:

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

  15. 6
    Анзор Апшев ответил:

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

  16. 5
    Ирина Чекрышова ответил:

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

  17. 4
    Анзор Апшев ответил:

    Прежде всего, нужно создать объект
    Это можно сделать так :
    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;

  18. 3
    Анзор Апшев ответил:

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

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

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

  19. 2
    Ирина Чекрышова ответил:

    Из Delphi

  20. 1
    Анзор Апшев ответил:

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

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.