请问如何把PPT在窗体里浏览,同时在窗体内有按钮控制上一张,下一张PPT???(100分)

  • 主题发起人 主题发起人 virocn
  • 开始时间 开始时间
V

virocn

Unregistered / Unconfirmed
GUEST, unregistred user!
救命啊!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!急!!
 
用ie控件
 
上下一张PPT的按钮事件怎么写??谢谢!
 

MySlideShowWindow := PPA_1.Presentations.Item(1).SlideShowSettings.Run;
MySlideShowWindow._AddRef;
MyView := MySlideShowWindow.View;
MyView._AddRef;
MyView.Next;
MySlideShowWindow._Release;
MyView._Release;
 
看不懂,请问是把PPT在窗体里浏览吗?那PPT放在什么控件里呢?

那请问上一页、下一页的事件怎么写?
 
我也想知道,帮你提!
 
这个问题我也搞了好久了:)
还是没根本解决。
以下是我的一点经历:
用server组件页的ppt控件:优点:能控制播放、用按钮控制上下翻页
缺点:不能放在一个窗口中,且一定要打开microsoft powerpoint。
用olecontainer:优点:打开
缺点:不能翻页
用webbrowser:优点:在窗口中播放、上下翻页
缺点:无法用按钮控制

如果有什么进展的话,也请告诉我一声!
我的Email是:yyq_xiaoyu@263.net
 
和我目前的经历一样!有没有高手解决了吗?
 
在窗口里放一个 webbrowser ,用webbrowser 打开ppt文件

用server组件页的ppt控件连接上这个webbrowser 其实也就是连接上ppt程序(webbrowser打开ppt文件的时候,会在后台打开一个ppt程序) 用ppt控件翻页 就是如上的代码,可以前,后,到指定页
 
to felixsun:
你说的方法我已实现!
但还有几个问题想请教一下!
1.用webbrowser 打开ppt后,它会自动翻页。如何制止?
2.用webbrowser 打开ppt时,会跳出一个“打开、保存”对话框,如何去掉?
3.用server组件页的ppt控件连接上这个webbrowser 后,打开ppt的时候后台有两个ppt程序,可以去掉一个否?
145分相送(只有这些分了[:D])
 
能不能贴源码给俺看看?谢谢啦!
 
unit MainUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, PowerPointXP, OleServer;

type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Button3: TButton;
LinkButton: TButton;
ExitButton: TButton;
Edit1: TEdit;
Panel1: TPanel;
WebBrowser1: TWebBrowser;
Memo1: TMemo;
ppta: TPowerPointApplication;
pptp: TPowerPointPresentation;
procedure WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant;
var Cancel: WordBool);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
HistoryList: TStringList;
HistoryIndex: Integer;
UpdateCombo: Boolean;
procedure FindAddress;
end;


var
Form1: TForm1;
global_url:string;
ghh: integer = 0;

implementation

{$R *.dfm}

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant;
var Cancel: WordBool);
begin

global_url := URL;
memo1.Lines.Add(global_url);
end;


//open file
procedure TForm1.Button1Click(Sender: TObject);
begin

if OpenDialog1.Execute then

begin

global_url := OpenDialog1.filename;
Form1.FindAddress;
pptA.Visible := 1;
PPtP.ConnectTo(pptA.Presentations.Open(opendialog1.FileName, 0, 0, 1));
end;

end;


//link to webbrowser
procedure TForm1.FindAddress;
var
Flags: OLEVariant;
begin

Flags := 0;
UpdateCombo := True;
WebBrowser1.Navigate(WideString(global_url), Flags, Flags, Flags, Flags);
end;


//preview
procedure TForm1.Button3Click(Sender: TObject);
var
MySlideShowWindow: SlideShowWindow;
MyView:SlideShowview;
begin

MySlideShowWindow:= ppta.Presentations.Item(1).SlideShowSettings.Run;
MySlideShowWindow._AddRef;
MyView := MySlideShowWindow.View;
MyView._AddRef;
MyView.Previous;
MySlideShowWindow._Release;
MyView._Release;

end;


//next
procedure TForm1.Button2Click(Sender: TObject);
var
MySlideShowWindow: SlideShowWindow;
MyView:SlideShowview;
begin

MySlideShowWindow:= ppta.Presentations.Item(1).SlideShowSettings.Run;
MySlideShowWindow._AddRef;
MyView := MySlideShowWindow.View;
MyView._AddRef;
MyView.Next;
MySlideShowWindow._Release;
MyView._Release;
end;



end.
 
可试试 ppa的ConnectKind 属性,
 
看来还只能做成HTML用Webbrowser来翻页好了。。不过维护好麻烦!
 
“3.用server组件页的ppt控件连接上这个webbrowser 后,打开ppt的时候后台有两个ppt程序,可以去掉一个否?”

我用ppta.ConnectKind := ckRunningInstance;
去掉PPtP.ConnectTo(pptA.Presentations.Open(opendialog1.FileName, 0, 0, 1));
可以解决这个问题!!
其他两个问题大侠再提点建议吧!
 
1.用webbrowser 打开ppt后,它会自动翻页。如何制止?
看看你的ppt是不是自动播放的, 我这里打开不会自动播放
2.用webbrowser 打开ppt时,会跳出一个“打开、保存”对话框,如何去掉?
这个问题很难办,
试着不在主线程里打开
试试WebBrowser.Navigate(File);

 
"不在主线程里打开":能具体说说吗?
 
到此为止了,我也只能说这么多了
 
谢谢!结束问题了。。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
488
import
I
I
回复
0
查看
614
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部