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

Тема в разделе "Delphi - СОМ", создана пользователем Mick Winder, 21 июл 2005.

  1. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Всем привет! Давненько здесь не было! Как здорово всё изменилось!!! Класс!
    итак сам вопрос...
    Как определить к какому типу принадлежит ВЫДЕЛЕННЫЙ объект на слайде, например, к msoPicture, msoTable, msoChart и т.д.?
     
  2. Barmutik

    Barmutik Гость

    Репутация:
    0
    Хмм.. а попробовать по Type? или перебрать перебором типов .. что подойдёт того типа и есть ...
     
  3. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Пробовал... Не получается...
     
  4. Barmutik

    Barmutik Гость

    Репутация:
    0
    Что конкретно не получается ? Пройтись по списку объектов или QueiryInterface на соответствие типу?
     
  5. Mick Winder

    Mick Winder Гость

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

    Barmutik Гость

    Репутация:
    0
    Ваш Код в студию пожалуйста... если возможно вместе с презентацией .. что б было на чём посмотреть ...
     
  7. Mick Winder

    Mick Winder Гость

    Репутация:
    0
    Код (Text):
    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.
     
  8. Barmutik

    Barmutik Гость

    Репутация:
    0
    Мне кажется что стоит попробовать так:

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

    Mick Winder Гость

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

    Barmutik Гость

    Репутация:
    0
    Проблема понятна ;)

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

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

    Mick Winder Гость

    Репутация:
    0
    Спасибо!!!
     
  12. Barmutik

    Barmutik Гость

    Репутация:
    0
    Удачи!
     
Загрузка...

Поделиться этой страницей