Автоматизация PowerPoint в Delphi.

Тема в разделе "Delphi - СОМ", создана пользователем Mick Winder, 15 фев 2005.

Статус темы:
Закрыта.
  1. Mick Winder

    Mick Winder Гость

    Необходимо добавить объект Point в презентацию. Используется функция AddOLEObject.
    Его конструкция в http://msdn.microsoft.com/library/default...._HV05192052.asp
    и в PowerPoint_TLB:
    Код (Text):
    function AddOLEObject(Left: Single; Top: Single; Width: Single; Height: Single;
                const ClassName: WideString; const FileName: WideString;
                DisplayAsIcon: MsoTriState; const IconFileName: WideString;
                IconIndex: SYSINT; const IconLabel: WideString; Link: MsoTriState): Shape;
    Написал такой следующий код:
    Код (Text):
    PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(120, 110, 480,
    320, 'Paint.Picture', EmptyParam, msoFalse, EmptyParam, 0, EmptyParam, msoFalse).Select;
    Вызывает ошибку: Type mismatch. В чем ошибка? Не врублюсь... Я итак и эдак...
     
  2. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Mick Winder
    с Office сильно не работал в Delphi, вот посмотри код http://www.rdpslides.com/pptfaq/FAQ00486.htm
    а так надо смотреть соответсивие типов, к сожалнию в моей делфе нету компонентов под офис <_<
     
  3. Barmutik

    Barmutik Гость

    Если нужно вставить всего-то картинку .. то можно попробовать метод AddPicture..он работает ..

    Просто насколько мне не изменяет память MS Paint не реализует COM интерфейса для возможности его использования в качестве встроенного OLE объекта.
     
  4. Mick Winder

    Mick Winder Гость

    Серёга
    Спасибо за ссылку... Но именно это я и получил в виде макроса. Все типы я указал выше, что в MSDN и что в библитеке PowerPoint типы одинаковые.
    Компоненты устанавливать в Дельфи необязательно, достаточно импортировать бибьлиотеки. Если хочешь, могу подсказать как, может пригодиться для тебя.

    Barmutik
    Должен реализовывать, если в библиотеке PowerPoint_TLB предусмотрены такие функции.
    Мне нужно не просто рисунок вставить от "делать нечего", а в этот объект вставить часть таблицы Excel, чтобы выставить в виде рисунка. Поэтому мне придется потом использовать функцию Activate.
    У меня складывается такое впечатление, что Дельфи просто вредничает!
     
  5. Mick Winder

    Mick Winder Гость

    Серёга
    Barmutik

    Спешу поделиться решением проблемы! :)

    Код (Text):
    PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120, Top:=130,
    Width:=480, Height:=340, ClassName:='Paint.Picture', Link:=msoFalse).Select;
    Вот теперь буду ломать голову, чтобы вставить в этот объект таблицу из буфера... Функции я, увы, не нашел... :(
     
  6. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Mick Winder
    буду рад узнать <_<
     
  7. Mick Winder

    Mick Winder Гость

    Серёга
    <_<

    Ну, например, подключение библиотеки PowerPoint_TLB.

    В Delphi: Project - Import Type Library... Ищем в списке Microsoft PowerPoint Library(Version 2.7), если нету, то c помощью кнопки Add... ищем библиотеку С:\Program Files\Microsoft Office\Office10\msppt.olb и подключаем ее с помощью кнопки Install (устанавливается как правило в папку Import). Можно сформировать unit этой библиотеки, чтобы просмотреть все функции, процедуры и свойства этой библиотеки, с помощью кнопочки Create Unit.
    Далее используем эту библиотеку...
    Код (Text):
     uses
    PowerPoint_TLB;
    Вот и всё. Думаю, ты и сам знал, пригодится и другим, кто не знает. :angry:
     
  8. Barmutik

    Barmutik Гость

    Так а почему пытаемся вставить Paint.Picture если нужня таблица Экселя? Или я что-то не так понял?

    Для вставки таблицы Экселя:

    Код (Text):
    Slide.Shapes.AddOLEObject(x,y,width,height,'Excel.Sheet','',0,'',0,'',0);
     
  9. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Mick Winder
    спасибо.
    я просто не работал никогда с офисом в делфи, не приходилось, но теперь буду знать <_<
     
  10. Mick Winder

    Mick Winder Гость

    Barmutik!!!!
    Жму крепко твою руку за идею! Ты меня спас! :unsure:
     
  11. Barmutik

    Barmutik Гость

    :unsure: Ура :unsure: :blink:

    PowerPoint повержен ... только сильно крепко не жми .. а то рука болеть будет .. а ей на клавиши жать надо :blink:
     
  12. mrDuke

    mrDuke Гость

    Подскажите пожалуйста... На слайде есть 10 кнопок с ссылками на другие слайды... а так же кнопки ттипа "назад" и "далее". Как программно из Delphi нажать любую из них?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей