ОБСУЖДЕНИЕ

Определение типа объекта на слайде Powerpoint

10 ответов 8,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Всем привет! Давненько здесь не было! Как здорово всё изменилось!!! Класс!
итак сам вопрос...
Как определить к какому типу принадлежит ВЫДЕЛЕННЫЙ объект на слайде, например, к msoPicture, msoTable, msoChart и т.д.?
 
Хмм.. а попробовать по Type? или перебрать перебором типов .. что подойдёт того типа и есть ...
 
Пробовал... Не получается...
 
Что конкретно не получается ? Пройтись по списку объектов или QueiryInterface на соответствие типу?
 
Смотрел уже файл PowerPoint_TLB - пальцем водил последовательность списка нужных мне объектов, попробовал прописать, но... выдается сообщение, что, мол, неверно составлена последовательность объектов...
Перепробовал все варианты... Тут черт голову сломает!
 
Ваш Код в студию пожалуйста... если возможно вместе с презентацией .. что б было на чём посмотреть ...
 
Код:
unit Unit1;

interface

uses
... ActiveX, ComObj, PowerPoint_TLB, Office_TLB;

type
TForm1 = class(TForm)
 Button1: TButton;
 Button3: TButton;
 procedure Button1Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
end;

var
Form1: TForm1;
PowerPointApp: OLEVariant;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
PowerPointApp:= CreateOleObject('PowerPoint.Application');
except
ShowMessage('Error Powerpoint...');
exit;
end;
PowerPointApp.Visible:= True;
PowerPointApp.Presentations.Open('E:\LPT_2\Report_made.ppt', False, False, True);
 end;

procedure TForm1.Button3Click(Sender: TObject);
begin
PowerPointApp.Presentations.Item(1).Slides.Item(4).Select;
PowerPointApp.Presentations.Item(1).Slides.Item(4).Shapes.Item(3).Select;
if PowerPointApp.ActiveWindow.Selection.SlideRange.Shapes.Type = msoPicture then
ShowMessage('Сработало!')
else
ShowMessage('Не то!');   
end;

end.
 
Мне кажется что стоит попробовать так:

Код:
if PowerPointApp.ActiveWindow.Selection.ShapeRange.Type_ = msoPicture then
ShowMessage('Сработало!')
else
ShowMessage('Не то!');   
end;

Опять же есть оговорки... сначала вообще у селекшина нужно проверять его тип.. только потом если он = ppSelectionShapes то брать ShapeRange... да и в общем случае выделено может быть не одна фигура .. их нужно перебирать и смотреть по типу потом уже.. но для конкретного случая должно сработать...
 
Я это всё перепробовал... Даже если написать:
Код:
PowerPointApp.ActiveWindow.Selection.Type_ = ppSelectionShapes
То тут выводится ошибка, что "Method 'Type_' not supported by automation object" Вот из-за нее "родимой" и мучаюсь...
 
Проблема понятна ;)

Я прошёл всеь код .. стоит написать вот так:

.....Type - БЕЗ подчёркивания в конце .. и всё работает...
 
Удачи!