Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
15-1319021210
Alex1983
2011-10-19 14:46
2012.02.26
Ограничение работы программы


15-1320440075
Дмитрий Белькевич
2011-11-04 23:54
2012.02.26
Изобретен холодный термоядерный синтез


2-1321607338
TeaNick
2011-11-18 13:08
2012.02.26
Проверка принадлежности перечислимому типу.


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


15-1320695289
_qwerty_
2011-11-07 22:48
2012.02.26
что подразумевается под клиентским по сетей microsoft?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский