📄 demomain.pas
字号:
unit DemoMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, AHWord97,
StdCtrls, ExtCtrls, OleCtnrs;
type
TfrmDemo = class(TForm)
Memo1: TMemo;
btnInsert: TButton;
btnOpenWord: TButton;
btnCloseWord: TButton;
btnOpenDoc: TButton;
btnClose: TButton;
Shape1: TShape;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
btnCloseDoc: TButton;
mmoInfo: TMemo;
Label5: TLabel;
procedure btnOpenWordClick(Sender: TObject);
procedure btnCloseWordClick(Sender: TObject);
procedure btnInsertClick(Sender: TObject);
procedure btnOpenDocClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnCloseDocClick(Sender: TObject);
private
WrdApp : TWordApp;
WrdDoc : TWordDoc;
wrdRange : TWordRange;
procedure WordAppQuit(Sender: TObject);
procedure WordPreClose(Sender: TObject);
procedure WordDocOpen(WordApp: TWordApp; WordDoc : TWordDoc);
procedure WordDocChange(WordApp: TWordApp; WordDoc : TWordDoc);
procedure WordDocClose(WordApp: TWordApp; WordDoc : TWordDoc);
{ Private declarations }
public
{ Public declarations }
end;
var
frmDemo: TfrmDemo;
implementation
uses
Word_TLB;
{$R *.DFM}
procedure TfrmDemo.btnOpenWordClick(Sender: TObject);
begin
WrdApp := TWordApp.Create (True, True);
WrdApp.OnQuit := WordAppQuit;
WrdApp.OnChangeDocument := WordDocChange;
WrdApp.OnOpenDocument := WordDocOpen;
WrdApp.OnPreCloseDocument := WordPreClose;
WrdApp.OnCloseDocument := WordDocClose;
WrdApp.Application.Visible := True;
btnOpenDoc.Enabled := True;
btnOpenDoc.SetFocus;
btnCloseWord.Enabled := True;
btnOpenWord.Enabled := False;
end;
procedure TfrmDemo.btnOpenDocClick(Sender: TObject);
begin
WrdDoc := TWordDoc.CreateOpenDoc (WrdApp, ExtractFilePath(Application.EXEName) + 'test.doc');
btnInsert.Enabled := True;
btnInsert.SetFocus;
btnCloseDoc.Enabled := True;
btnOpenDoc.Enabled := False;
end;
procedure TfrmDemo.btnInsertClick(Sender: TObject);
var
WrdRange2 : TWordRange;
begin
WrdRange := TWordRange.CreateFromBookMark (WrdDoc, 'To_Name_Address');
with WrdRange do
begin
Text := 'Joe Bloggs'#10 +
'1 Apple St'#10 +
'PippinVille';
CreateBookMark ('To_Name_Address'); // re-create this bookmark as an example
GotoBookmark ('From_Name_Address');
Text := 'Josephine Bloggs'#10 +
'2 Apple St'#10 +
'CoxVille';
GotoBookmark ('Dear_To_Name');
Text := 'Joe';
GotoBookMark ('Letter_Text');
Text := Memo1.Text;
//Position cursor at end of line
Collapse (wdCollapseEnd);
end;
//Get the Word '4'
WrdRange2 := TWordRange.CreateFromRange (WrdDoc, WrdRange.GetPreviousRange (wdWord, 2));
//Extend back to include 'Delphi'
WrdRange2.MoveStart (wdWord, -2);
WrdRange2.Italic := True;
WrdRange2.Select;
WrdRange.Free;
WrdRange2.Free;
btnCloseDoc.SetFocus;
end;
procedure TfrmDemo.btnCloseDocClick(Sender: TObject);
begin
if Assigned (wrdDoc) then
begin
WrdDoc.CloseDoc (wdDoNotSaveChanges);
WrdDoc := nil;
end;
btnCloseDoc.Enabled := False;
btnOpenDoc.Enabled := True;
btnCloseWord.SetFocus;
end;
procedure TfrmDemo.btnCloseWordClick(Sender: TObject);
begin
if Assigned (WrdApp) then
begin
WrdApp.CloseApp (wdDoNotSaveChanges);
WrdApp := nil;
end;
btnOpenWord.Enabled := True;
btnOpenDoc.Enabled := False;
btnCloseDoc.Enabled := False;
btnInsert.Enabled := False;
btnCloseWord.Enabled := False;
btnClose.SetFocus;
end;
procedure TfrmDemo.btnCloseClick(Sender: TObject);
begin
Close
end;
procedure TfrmDemo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned (WrdApp) then WrdApp.Free;
end;
procedure TfrmDemo.WordAppQuit(Sender: TObject);
begin
mmoInfo.Lines.Add ('WordAppQuit');
end;
procedure TfrmDemo.WordPreClose(Sender: TObject);
begin
// happens before the document has been closed so you can still
// "get at it". Also, if the document is not "dirty" then Word will
// display a "Do you want to save..." dialog. If the user presses cancel
// then the document WILL NOT BE CLOSED
mmoInfo.Lines.Add ('WordPreClose');
end;
procedure TfrmDemo.WordDocChange(WordApp: TWordApp; WordDoc : TWordDoc);
begin
mmoInfo.Lines.Add ('WordDocChange: ' + WordDoc.FullName);
end;
procedure TfrmDemo.WordDocOpen(WordApp: TWordApp; WordDoc : TWordDoc);
begin
mmoInfo.Lines.Add ('WordDocOpen: ' + WordDoc.FullName);
end;
procedure TfrmDemo.WordDocClose(WordApp: TWordApp; WordDoc : TWordDoc);
begin
// Note you cannot do anything with WordDoc that would involve
// accessing the COM document as it has already gone - see WordPreClose
mmoInfo.Lines.Add ('WordDocClose: ' + WordDoc.FullName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -