Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.26;
Скачать: CL | DM;

Вниз

PowerPoint в OleContainer   Найти похожие ветки 

 
3asys ©   (2011-11-20 01:55) [0]

Добрый день!
Необходимо показать презентацию PowerPoint на форме. Использую для этого OleContainer.
Пробовал:
var
 PowerPoint: OLEVariant;
begin
   PowerPoint := CreateOleObject("PowerPoint.Application");
   PowerPoint.Visible := True;
   if OpenDialog1.Execute then
      PowerPoint.Presentations.Open(OpenDialog1.FileName, False, False, True);
   PowerPoint.ActivePresentation.SlideShowSettings.Run;
   PowerPoint.ActivePresentation.SlideShowWindow.View.Next;
end;

но не смог добиться открытия презентации непосредственно на форме.
Теперь открываю так: if OpenDialog1.Execute then OleContainer1.CreateObjectFromFile(OpenDialog1.FileName,false);
Однако в контенере открывается только первый слайд презентации и не ясно, как (например, по нажатию кнопки) перейти к следующему слайду. Как осуществлять навигацию между слайдами?


 
KilkennyCat ©   (2011-11-20 03:00) [1]

Author: Thomas Stutz

uses
 comobj;
 
procedure TForm1.Button2Click(Sender: TObject);
var
 PowerPointApp: OLEVariant;
begin
 try
   PowerPointApp := CreateOleObject("PowerPoint.Application");
 except
   ShowMessage("Error...");
   Exit;
 end;
 // Make Powerpoint visible
 PowerPointApp.Visible := True;

 // Show powerpoint version
 ShowMessage(Format("Powerpoint version: %s",[PowerPointApp.Version]));

 // Open a presentation
 PowerPointApp.Presentations.Open("c:\MyPresentation.ppt", False, False, True);

 // Show number of slides
 ShowMessage(Format("%s slides.",[PowerPointApp.ActivePresentation.Slides.Count]));

 // Run the presentation
 PowerPointApp.ActivePresentation.SlideShowSettings.Run;

 // Go to next slide
 PowerPointApp.ActivePresentation.SlideShowWindow.View.Next;

 // Go to slide 2
 PowerPointApp.ActivePresentation.SlideShowWindow.View.GoToSlide(2);

 // Go to previous slide
 PowerPointApp.ActivePresentation.SlideShowWindow.View.Previous;

 // Go to last slide
 PowerPointApp.ActivePresentation.SlideShowWindow.View.Last;

 // Show current slide name
 ShowMessage(Format("Current slidename: %s",[PowerPointApp.ActivePresentation.SlideShowWindow.View.Slide.Name]));
 
 // Close Powerpoint
 PowerPointApp.Quit;
 PowerPointApp := UnAssigned;
end;


 
KilkennyCat ©   (2011-11-20 03:03) [2]


> но не смог добиться открытия презентации непосредственно
> на форме.

а где смог?


 
3asys ©   (2011-11-20 10:24) [3]

> KilkennyCat ©
Этот способ запускает PowerPoint и открывает в нем файл за пределами моего приложения. Мне же надо, чтобы презентация открывалась на моей форме.
>а где смог?
да собственно так, как Вы предложили и смог - вне моего приложения.

Как все-таки открыть презентацию на форме и осуществлять навигацию между слайдами?


 
sniknik ©   (2011-11-20 11:05) [4]

> Пробовал:
в дизайнере, мышкой для начала... не получается?  

> Как все-таки открыть презентацию на форме и осуществлять навигацию между слайдами?
в контейнере будет тот же обьект с теми же методами, и работать с ним также как в KilkennyCat ©   (20.11.11 03:00) [1].


 
sniknik ©   (2011-11-20 12:02) [5]

++
кстати, попробовал, что то не то с этим PP, в отличии от ворда, у него все интерфейсы "нот саппортед". чувство такое что прослойки в OleConteiner для него попросту нет...
надо добираться до реального обьекта...  OleContainer1.OleObject не пойдет.


 
3asys ©   (2011-11-20 12:14) [6]

> sniknik ©
Мышкой в дизайнере пробовал - получается тоже самое, что и в случаеif OpenDialog1.Execute then OleContainer1.CreateObjectFromFile(OpenDialog1.FileName,false);

- загружается только первый слайд, а как перемещаться между слайдами никак не пойму.
Может есть у кого решение?


 
sniknik ©   (2011-11-20 12:22) [7]

попробовал подключится к обьекту PP открытому в контейнере (GetActiveOleObject, он всегда единственный ), и ... - "нет активной презантации", похоже там не только "прослойки" нет, похоже там просто одинокая картинка...

> Может есть у кого решение?
обломайся бабка, мы на корабле. © анекдот.


 
sniknik ©   (2011-11-20 12:30) [8]

вот проверка
procedure TForm1.Button1Click(Sender: TObject);
begin
 OleContainer1.CreateObjectFromFile("F:\Video\приколы\Canlsdon.pps", false);
 OleContainer1.Run;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 PowerPointApp: OLEVariant;
begin
 PowerPointApp:= GetActiveOleObject("PowerPoint.Application");
 PowerPointApp.ActivePresentation.SlideShowWindow.View.Next;
end;


без OleContainer1.Run; операция недоступна на GetActiveOleObject, нужно жать кнопку и давить "открыть" в попап меню.
но при открытом (объект есть/картинка показана) дает - "Application.ActivePresentation : Invalid request.  There is no active presentation"


 
3asys ©   (2011-11-20 13:35) [9]

а как тогда в веб-архив ppt, pptx преобразовать (хоть в браузере показать)?
и как pps показывать?


 
sniknik ©   (2011-11-20 18:19) [10]

а зачем преобразовывать, в браузере можно как есть показывать, TWebBrowser не проверял, но IE справляется ... вот так, url открываешь, и сразу на 3й слайд...
file:///F:/Video/приколы/Canlsdon.pps#258,3,Слайд 3
значит и навигация возможна.


 
3asys ©   (2011-11-20 18:53) [11]

> sniknik ©
я так в самом начале пробовал, но у меня при вызове
     WebBrowser1.Navigate("file:///c:/ppt.ppt");
открывается диалог открыть/сохранить и если выбрать открыть, то открывается poverpoint вне моего приложения.
Может я что-то не так делаю?


 
3asys ©   (2011-11-20 19:13) [12]

Кстати, нашел ActiveX : http://www.ocxt.com/
(Edraw Office Viewer Component V7.5.0.356 Released)
он реально открывает PPT, PPTX, PPS, но работает "не очень чисто" (иногда визуализирует запущенный poverpoint, но может это я его неправильно использую) ии стоит он прилично, так что все равно нужно его чем-то заменить.


 
sniknik ©   (2011-11-20 21:22) [13]

> Может я что-то не так делаю?
скорее что-то не установлено(/не настроено соответствие, как открывать). у меня прямо в браузере (IE/и, уже проверил, TWebBrowser тоже) открывает, а вот мозила ведет себя как ты описал, предлагает открыть и открывает в PP.



Страницы: 1 вся ветка

Текущий архив: 2012.02.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1319805286
Who_are_you
2011-10-28 16:34
2012.02.26
Защита, патент


3-1272008503
Kobylyansky
2010-04-23 11:41
2012.02.26
Firebird+многопоточность


2-1321736746
bunguev
2011-11-20 01:05
2012.02.26
Вкладки в делфи(


2-1321092811
nick_delphi2010
2011-11-12 14:13
2012.02.26
Проблема с дебагером в Delphi 2010


15-1320599461
KilkennyCat
2011-11-06 20:11
2012.02.26
Как пользоваться дебаггером