求Delphi控制word翻页显示的代码
时间:2011-12-27
来源:互联网
有一个word文档带图片和文字信息(页数不超过10页),要用delphi显示word的内容(默认显示的是第一页内容),并控制word翻页显示,多谢大家了!
作者: yct0605 发布时间: 2011-12-27
在补充一点吧:程序默认打开word的第一页,可以设置延时时间自动跳转到第二页,一次类推
作者: yct0605 发布时间: 2011-12-27
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, Word2000, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
word: Variant;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Enabled := True;
Button2.Enabled := False;
Button3.Enabled := False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
try
word.Quit;
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
word := CreateOleObject( 'Word.Application' );
word.Documents.Open('d:\test.doc');
word.Visible := True;
Button1.Enabled := False;
Button2.Enabled := True;
Button3.Enabled := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
word.Selection.GoTo(wdGoToPage, wdGoToAbsolute, '1');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
word.Selection.GoTo(wdGoToPage, wdGoToAbsolute, '4');
end;
end.
//仅示例,如何延时控制,timer你懂的。
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, Word2000, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
word: Variant;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Enabled := True;
Button2.Enabled := False;
Button3.Enabled := False;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
try
word.Quit;
except
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
word := CreateOleObject( 'Word.Application' );
word.Documents.Open('d:\test.doc');
word.Visible := True;
Button1.Enabled := False;
Button2.Enabled := True;
Button3.Enabled := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
word.Selection.GoTo(wdGoToPage, wdGoToAbsolute, '1');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
word.Selection.GoTo(wdGoToPage, wdGoToAbsolute, '4');
end;
end.
//仅示例,如何延时控制,timer你懂的。
作者: erhan 发布时间: 2011-12-27
这个是打开word来控制的,我想要集成在form里面来实现啊!
作者: yct0605 发布时间: 2011-12-27
引用 3 楼 yct0605 的回复:
这个是打开word来控制的,我想要集成在form里面来实现啊!
这个是打开word来控制的,我想要集成在form里面来实现啊!
哦,网上查了一下,要集成的话可以用OleContainer;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtnrs, ExtCtrls, OleServer, Word2000;
type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
OleContainer1: TOleContainer;
WordDocument1: TWordDocument;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
aa,bb,cc,dd: OleVariant;
begin
OleContainer1.CreateObjectFromFile('d:\test.doc',false);
OleContainer1.Show;
OleContainer1.AutoActivate:=aaGetFocus;
OleContainer1.SetFocus;
WordDocument1.ConnectTo(IUnknown(OleContainer1.OleObject) as _Document);
aa := wdGoToPage;
bb := wdGoToAbsolute;
cc := '4';
dd := '';
WordDocument1.Application.Selection.GoTo_(aa, bb, cc, dd);
end;
end.
//另:如果在单一窗体里调用OLE很容易发生OLE把整个窗体都占据的情况。建立专用的OLE窗体来避免这样的情况放生,使OLE显示在第一个窗体指定的位置(panel)
//网上有相关的美化代码,可以查到的,如需,可以提供查到的连接。
作者: erhan 发布时间: 2011-12-27
引用 4 楼 erhan 的回复:
引用 3 楼 yct0605 的回复:
这个是打开word来控制的,我想要集成在form里面来实现啊!
哦,网上查了一下,要集成的话可以用OleContainer;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form……
引用 3 楼 yct0605 的回复:
这个是打开word来控制的,我想要集成在form里面来实现啊!
哦,网上查了一下,要集成的话可以用OleContainer;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Form……
多谢了,我在网上也找了一个,就是只显示第一页和最后一页,麻烦你帮我看看。
[Delphi(Pascal) code
[code=Delphi(Pascal)] var wordapp, WordDoc, PageRange: Variant; i, nPageCounts, nStart, nEnd : Integer; sContext: string; begin wordapp := CreateOleObject('Word.Application'); try wordapp.Visible := False; if OpenDialog1.Execute = False then Exit; WordDoc := wordapp.Documents.Open(OpenDialog1.FileName); //文档总页数 nPageCounts := wordapp.Selection.Information[wdNumberOfPagesInDocument]; //如果只有一页 那么全选就OK了 if nPageCounts = 1 then begin wordapp.Selection.WholeStory; wordapp.selection.copy; if olecontainer1.canpaste then olecontainer1.paste; OleContainer1.Update; Exit; end; nStart := -1; nEnd := -1; //循环获取文档页中的内容 for i := 1 to nPageCounts do begin //定位到第i页 PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i)); //如果第i页是最后一页 那么直接将光标移动到最后 并输出内容 if i = nPageCounts then begin wordapp.Selection.EndKey(wdStory,wdExtend); wordapp.selection.copy; if OleContainer1.canpaste then OleContainer1.paste; OleContainer1.Update; Exit; end; //取第i页的页首位置作为开始位置 nStart := wordapp.Selection.Start; //定位到i+1页 PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i+1)); //取第i+1页的页首位置作为结束位置 nEnd := wordapp.Selection.Start; //根据开始位置和结束位置确定文档选中的内容(第i页的内容) WordDoc.Range(nStart,nEnd).Select; sContext := WordDoc.Range.Text; ShowMessage(sContext); // wordapp.Selection.WholeStory; // wordapp.selection.copy; { if olecontainer1.canpaste then olecontainer1.paste; OleContainer1.Update; } //Sleep(3000); nStart := -1; nEnd := -1; end; finally wordapp.Quit; end;
[/code]
作者: yct0605 发布时间: 2011-12-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28