Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум программистов _ Delphi - СОМ _ Автоматизация PowerPoint в Delphi.

Автор: Mick Winder 15:02:2005, 14:36

Необходимо добавить объект 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. В чем ошибка? Не врублюсь... Я итак и эдак...

Автор: Серёга 15:02:2005, 19:42

Mick Winder
с Office сильно не работал в Delphi, вот посмотри код http://www.rdpslides.com/pptfaq/FAQ00486.htm
а так надо смотреть соответсивие типов, к сожалнию в моей делфе нету компонентов под офис sad.gif

Автор: Barmutik 16:02:2005, 07:15

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

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

Автор: Mick Winder 16:02:2005, 07:55

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

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

Автор: Mick Winder 16:02:2005, 11:00

Серёга
Barmutik

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

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


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

Автор: Серёга 16:02:2005, 11:17

Mick Winder

Цитата
достаточно импортировать бибьлиотеки. Если хочешь, могу подсказать как, может пригодиться для тебя.

буду рад узнать smile.gif

Автор: Mick Winder 16:02:2005, 14:20

Серёга
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 16:02:2005, 16:12

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

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

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

Автор: Серёга 16:02:2005, 19:55

Mick Winder
спасибо.
я просто не работал никогда с офисом в делфи, не приходилось, но теперь буду знать smile.gif

Автор: Mick Winder 17:02:2005, 12:49

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

Автор: Barmutik 17:02:2005, 12:57

smile.gif Ура biggrin.gif biggrin.gif

PowerPoint повержен ... только сильно крепко не жми .. а то рука болеть будет .. а ей на клавиши жать надо wink.gif

Автор: mrDuke 17:12:2007, 12:11

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

Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)