Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Автоматизация PowerPoint в Delphi., Функция AddOLEObject
Mick Winder
Вставить ник
сообщение 15:02:2005, 14:36
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 43
Регистрация: 31:01:2005
Из: Россия
Пользователь №: 1 306
Специализация: Delphi, VBA, C/AL Navision



Репутация: - 0 +


Необходимо добавить объект 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. В чем ошибка? Не врублюсь... Я итак и эдак...
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 11)
Серёга
Вставить ник
сообщение 15:02:2005, 19:42
Цитата Ответить 


Just me :)
*****

Группа: Админы
Сообщений: 3 112
Регистрация: 8:08:2003
Из: Minsk
Пользователь №: 1
Специализация: PHP, MySQL, Apple xcode, Delphi, Mambo CMS, CEO



Репутация: - 11 +


Mick Winder
с Office сильно не работал в Delphi, вот посмотри код http://www.rdpslides.com/pptfaq/FAQ00486.htm
а так надо смотреть соответсивие типов, к сожалнию в моей делфе нету компонентов под офис sad.gif
Подняться вверх 
 
Сообщение #2
Barmutik
Вставить ник
сообщение 16:02:2005, 07:15
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


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

Просто насколько мне не изменяет память MS Paint не реализует COM интерфейса для возможности его использования в качестве встроенного OLE объекта.
Подняться вверх 
 
Сообщение #3
Mick Winder
Вставить ник
сообщение 16:02:2005, 07:55
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 43
Регистрация: 31:01:2005
Из: Россия
Пользователь №: 1 306
Специализация: Delphi, VBA, C/AL Navision



Репутация: - 0 +


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

Barmutik
Должен реализовывать, если в библиотеке PowerPoint_TLB предусмотрены такие функции.
Мне нужно не просто рисунок вставить от "делать нечего", а в этот объект вставить часть таблицы Excel, чтобы выставить в виде рисунка. Поэтому мне придется потом использовать функцию Activate.
У меня складывается такое впечатление, что Дельфи просто вредничает!
Подняться вверх 
 
Сообщение #4
Mick Winder
Вставить ник
сообщение 16:02:2005, 11:00
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 43
Регистрация: 31:01:2005
Из: Россия
Пользователь №: 1 306
Специализация: Delphi, VBA, C/AL Navision



Репутация: - 0 +


Серёга
Barmutik

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

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


Вот теперь буду ломать голову, чтобы вставить в этот объект таблицу из буфера... Функции я, увы, не нашел... :(
Подняться вверх 
 
Сообщение #5
Серёга
Вставить ник
сообщение 16:02:2005, 11:17
Цитата Ответить 


Just me :)
*****

Группа: Админы
Сообщений: 3 112
Регистрация: 8:08:2003
Из: Minsk
Пользователь №: 1
Специализация: PHP, MySQL, Apple xcode, Delphi, Mambo CMS, CEO



Репутация: - 11 +


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

буду рад узнать smile.gif
Подняться вверх 
 
Сообщение #6
Mick Winder
Вставить ник
сообщение 16:02:2005, 14:20
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 43
Регистрация: 31:01:2005
Из: Россия
Пользователь №: 1 306
Специализация: Delphi, VBA, C/AL Navision



Репутация: - 0 +


Серёга
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
Подняться вверх 
 
Сообщение #7
Barmutik
Вставить ник
сообщение 16:02:2005, 16:12
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


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

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

Код
Slide.Shapes.AddOLEObject(x,y,width,height,'Excel.Sheet','',0,'',0,'',0);
Подняться вверх 
 
Сообщение #8
Серёга
Вставить ник
сообщение 16:02:2005, 19:55
Цитата Ответить 


Just me :)
*****

Группа: Админы
Сообщений: 3 112
Регистрация: 8:08:2003
Из: Minsk
Пользователь №: 1
Специализация: PHP, MySQL, Apple xcode, Delphi, Mambo CMS, CEO



Репутация: - 11 +


Mick Winder
спасибо.
я просто не работал никогда с офисом в делфи, не приходилось, но теперь буду знать smile.gif
Подняться вверх 
 
Сообщение #9
Mick Winder
Вставить ник
сообщение 17:02:2005, 12:49
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 43
Регистрация: 31:01:2005
Из: Россия
Пользователь №: 1 306
Специализация: Delphi, VBA, C/AL Navision



Репутация: - 0 +


Barmutik!!!!
Жму крепко твою руку за идею! Ты меня спас! blink.gif
Подняться вверх 
 
Сообщение #10
Barmutik
Вставить ник
сообщение 17:02:2005, 12:57
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 2 450
Регистрация: 27:05:2004
Из: Минск
Пользователь №: 561
Специализация: Delphi, RDBMS, C#



Репутация: - 8 +


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

PowerPoint повержен ... только сильно крепко не жми .. а то рука болеть будет .. а ей на клавиши жать надо wink.gif
Подняться вверх 
 
Сообщение #11
mrDuke
Вставить ник
сообщение 17:12:2007, 12:11
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 17
Регистрация: 17:12:2007
Пользователь №: 14 293
Специализация: инженер-конструктор



Репутация: - 0 +


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


Ответить  Новая тема 

 

RSS Текстовая версия Сейчас: 17:05:2008 - 10:09
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net