⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demomain.pas

📁 一个好的word的控件
💻 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 + -