Форум: "Начинающим";
Текущий архив: 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.003 c