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

  • Автор темы Mick Winder
  • Дата начала
M

Mick Winder

#1
Всем привет! Давненько здесь не было! Как здорово всё изменилось!!! Класс!
итак сам вопрос...
Как определить к какому типу принадлежит ВЫДЕЛЕННЫЙ объект на слайде, например, к msoPicture, msoTable, msoChart и т.д.?
 
B

Barmutik

#2
Хмм.. а попробовать по Type? или перебрать перебором типов .. что подойдёт того типа и есть ...
 
B

Barmutik

#4
Что конкретно не получается ? Пройтись по списку объектов или QueiryInterface на соответствие типу?
 
M

Mick Winder

#5
Смотрел уже файл PowerPoint_TLB - пальцем водил последовательность списка нужных мне объектов, попробовал прописать, но... выдается сообщение, что, мол, неверно составлена последовательность объектов...
Перепробовал все варианты... Тут черт голову сломает!
 
B

Barmutik

#6
Ваш Код в студию пожалуйста... если возможно вместе с презентацией .. что б было на чём посмотреть ...
 
M

Mick Winder

#7
Код:
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.
 
B

Barmutik

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

Код:
if PowerPointApp.ActiveWindow.Selection.ShapeRange.Type_ = msoPicture then
ShowMessage('Сработало!')
else
ShowMessage('Не то!');   
end;
Опять же есть оговорки... сначала вообще у селекшина нужно проверять его тип.. только потом если он = ppSelectionShapes то брать ShapeRange... да и в общем случае выделено может быть не одна фигура .. их нужно перебирать и смотреть по типу потом уже.. но для конкретного случая должно сработать...
 
M

Mick Winder

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

Barmutik

#10
Проблема понятна ;)

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

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