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

📄 demo2main.pas

📁 一个好的word的控件
💻 PAS
字号:
unit Demo2Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, AHWord97,
  StdCtrls, ExtCtrls, OleCtnrs;

type
  TfrmDemo = class(TForm)
    Memo1: TMemo;
    btnInsert: TButton;
    btnOpenDoc: TButton;
    btnClose: TButton;
    Shape1: TShape;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    btnCloseDoc: TButton;
    OlecWord: TOleContainer;
    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;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDemo: TfrmDemo;

implementation

uses
  Word_TLB;

{$R *.DFM}

procedure TfrmDemo.btnOpenDocClick(Sender: TObject);
begin
  olecWord.CreateObjectFromFile (ExtractFilePath(Application.EXEName) + 'test.doc', False);
  if olecWord.State <> osInPlaceActive then olecWord.DoVerb (ovUIActivate);
  // The events don't seem to fire with OleContainer apps - haven't looked into this
  // in great depth and since you can only have one document, they are fairly useless
  WrdApp := TWordApp.CreateFromOleObject (olecWord.OleObject.Application, False);
  // WrdApp will automatically find the document and create a WrdDoc object
  // So you should not create one - just get it from WrdApp
  // NB in OleContainers, the document is the main object. There can be only one.
  WrdDoc := WrdApp.Document [0];
  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 (WrdApp) then
  begin
    // don't use WrdApp.CloseApp or try to close the document
    // if you close the document, Word will close too, which confuses my classes
    // if you use CloseApp, it fires an Application.Quit method, which the Document
    // doesn't seem to like.
    // WrdApp.Free will also free WrdDoc.
    // By all means save the document in the usual manner prior to the following...
    WrdApp.Free;
    WrdApp := nil; // necessary so that FormClose doesn't try to free it again
    olecWord.DestroyObject;
  end;
  btnCloseDoc.Enabled := False;
  btnOpenDoc.Enabled := True;
  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;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -