OLE AUTOMATION FOR POWERPOINT!!!(200分)

  • 主题发起人 主题发起人 titi
  • 开始时间 开始时间
T

titi

Unregistered / Unconfirmed
GUEST, unregistred user!
我的毕设是设计一个 powerpoint 的OLE AUTOMATION 的客户控制器,
DELPHI中的三个组件TPowerPointApplication、TPowerPointSlide、
TPowerPointPresentation怎么没HELP?难道只有一个自带的范例?
而且,在引入类型库时(Inport Type Library Create Unit)系统
显示"a class named TpowerPointApllication already installed"
请问powerpoint的三个组件和类型库如何使用?
 
我决定再加200
 
Delphi中没有对Sever组件的帮助信息。包括Word也是一样,只有例子。
 
我曾见过一篇用Ms 的构件来替换delphi本身的文章,似乎要先将delphi的构件先移走,
然后再安装。
至于delphi的组件如何使用,你还是看宏代码,然后再转换成delphi支持的,一般很容易转的
我用过wordapplication等关于word的组件,很容易的。
 
以前写的一些关于PowerPoint的代码,另外看一下office2000的一个帮助VBAPPT9.CHM,
在光盘上有,里面有十分详细的PowerPoint对象结构图,可以说把这个结构图搞清楚了,
你看怎么玩就怎么玩了.

unit fmpptDemp;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSPpt2000, OleServer, Office2000;

type
TForm1 = class(TForm)
pptA: TPowerPointApplication;
pptP: TPowerPointPresentation;
pptS: TPowerPointSlide;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
connected: boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
const
LoopCnt = 3;
{$R *.dfm}
var
ssSet: SlideShowSettings;
ssWin: SlideShowWindow;

// 打开一个ppt文件,并进入放映模式
procedure TForm1.Button1Click(Sender: TObject);
begin
if not connected then
begin
pptA.Connect;
connected := True;
end;

pptA.Visible := msoTrue;
PPtP.ConnectTo(pptA.Presentations.Open('e:/sy/study/sample/test.ppt', msoFalse, msoFalse, msoTrue));
ssSet := PPtP.SlideShowSettings;
ssSet.LoopUntilStopped := msoFalse;
ssSet.ShowType := ppShowTypeSpeaker;
ssSet.Run;
ssWin := PPtP.SlideShowWindow;
PPts.ConnectTo(PPtP.Slides.Item(1));
end;

//下一张幻灯片
procedure TForm1.Button2Click(Sender: TObject);
begin
ssWin.View.Next;
end;

// 停止放映
procedure TForm1.Button3Click(Sender: TObject);
begin
ssWin.View.Exit;
end;

// 关闭PowerPoint
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
pptA.Disconnect;
pptA.Quit;
if assigned(pptA) then pptA.Free;
except
showmessage('PowerPoint has already closed!');
end;
end;

// 改动幻灯片
procedure TForm1.Button5Click(Sender: TObject);
var
objShape: MSPpt2000.Shape;
begin
objShape := pptS.Shapes.AddLabel(msoTextOrientationHorizontal, 1, 1, 10, 12);
objShape.Name := 'myobj1';
pptA.ActiveWindow.Selection.TextRange.Text := 'add by programmer';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
connected := False;
end;

end.
 
其实最好的方法是看它的类型库,
导入类型库的时候,它报‘a class named TpowerPointApllication already installed’;
你换一个目录,再把导入的类的类名改一下。
其实你看OFFICE_TLB这个类型库就够了。
 
如bluerain所述方法,确实可播放及编辑powerpoint文件,但能定位播放吗?比如要在双显示器的第二个显示器中播放powerpoint文件?
 
后退
顶部