Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автоматизация PowerPoint в Delphi.
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - СОМ
Mick Winder
Необходимо добавить объект Point в презентацию. Используется функция AddOLEObject.
Его конструкция в http://msdn.microsoft.com/library/default...._HV05192052.asp
и в PowerPoint_TLB:
Код
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;


Написал такой следующий код:
Код
PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(120, 110, 480,
320, 'Paint.Picture', EmptyParam, msoFalse, EmptyParam, 0, EmptyParam, msoFalse).Select;


Вызывает ошибку: Type mismatch. В чем ошибка? Не врублюсь... Я итак и эдак...
Серёга
Mick Winder
с Office сильно не работал в Delphi, вот посмотри код http://www.rdpslides.com/pptfaq/FAQ00486.htm
а так надо смотреть соответсивие типов, к сожалнию в моей делфе нету компонентов под офис sad.gif
Barmutik
Если нужно вставить всего-то картинку .. то можно попробовать метод AddPicture..он работает ..

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

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

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

Код
PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.AddOLEObject(Left:=120, Top:=130,
Width:=480, Height:=340, ClassName:='Paint.Picture', Link:=msoFalse).Select;


Вот теперь буду ломать голову, чтобы вставить в этот объект таблицу из буфера... Функции я, увы, не нашел... :(
Серёга
Mick Winder
Цитата
достаточно импортировать бибьлиотеки. Если хочешь, могу подсказать как, может пригодиться для тебя.

буду рад узнать smile.gif
Mick Winder
Серёга
rolleyes.gif

Ну, например, подключение библиотеки 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.
Далее используем эту библиотеку...
Код
uses
PowerPoint_TLB;

Вот и всё. Думаю, ты и сам знал, пригодится и другим, кто не знает. cool.gif
Barmutik
Так а почему пытаемся вставить Paint.Picture если нужня таблица Экселя? Или я что-то не так понял?

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

Код
Slide.Shapes.AddOLEObject(x,y,width,height,'Excel.Sheet','',0,'',0,'',0);
Серёга
Mick Winder
спасибо.
я просто не работал никогда с офисом в делфи, не приходилось, но теперь буду знать smile.gif
Mick Winder
Barmutik!!!!
Жму крепко твою руку за идею! Ты меня спас! blink.gif
Barmutik
smile.gif Ура biggrin.gif biggrin.gif

PowerPoint повержен ... только сильно крепко не жми .. а то рука болеть будет .. а ей на клавиши жать надо wink.gif
mrDuke
Подскажите пожалуйста... На слайде есть 10 кнопок с ссылками на другие слайды... а так же кнопки ттипа "назад" и "далее". Как программно из Delphi нажать любую из них?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.