哪位大哥有这方面的经验啊,指点小弟一下

解决方案 »

  1.   


    unit ControlWordS;interfaceuses Classes, Sysutils, Word97;type
      TControlWord = class(TComponent)
      private
        { Private declarations }
        FWordApp : TWordApplication;
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;    function OpenWordFile(DocPath : String) : Boolean;    procedure myAppQuit(Sender: TObject);
        { 將游標移到本行第一碼 }
        procedure MoveToLineFirst;
        { 將游標移到本行最後一碼 }
        procedure MoveToLineEnd(Selected : Boolean);
        { 將游標移到本頁最前 }
        procedure MoveToPageFirst;
        { 將游標移到本頁最後 }
        procedure MoveToPageEnd;
        { 將游標向右移動N碼 }
        procedure MoveToRight(Selected : Boolean; lCount : Integer);
        { 設定書籤 }
        procedure AddBookMark(BookMarkName : String);
        { 移動到指定的書籤上 }
        function GotoBookMark(BookMarkName : String) : Boolean;
        { 切換頁首頁尾 }
        procedure ChangSeekType(ViewType : String);
        { 取得游標現在所在頁次 }
        function GetNowPageNumber : Integer;
        { 存檔 }
        procedure SaveDocument(DocPath : String);    function FindText(KeyStr : String) : Boolean;  published
        { Published declarations }
      end;
    implementation{ TControlWord }procedure TControlWord.AddBookMark(BookMarkName: String);
    var aRange, aDefaultSorting : OleVariant;
    begin
      With FWordApp Do
      Begin
        aRange := Selection.Range;
        ActiveDocument.Books.Add(BookMarkName, aRange);
        aDefaultSorting := wdSortByName;
        ActiveDocument.Books.DefaultSorting := aDefaultSorting;
        ActiveDocument.Books.ShowHidden := True;
      End;
    end;procedure TControlWord.ChangSeekType(ViewType: String);
    var aSeekTYpe : OleVariant;
    begin
      If UpperCase(ViewType) = 'PAGEFOOTER' Then
        aSeekTYpe := wdSeekCurrentPageFooter
      Else If UpperCase(ViewType) = 'PAGEHEADER' Then
        aSeekTYpe := wdSeekCurrentPageHeader
      Else aSeekTYpe := wdSeekMainDocument;
      With FWordApp Do
      Begin
        ActiveWindow.ActivePane.View.SeekView := aSeekTYpe;
      End;
    end;constructor TControlWord.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FWordApp := TWordApplication.Create(Self);
      FWordApp.OnQuit := myAppQuit;
    end;destructor TControlWord.Destroy;
    begin
      FWordApp.Disconnect;
      FWordApp.Free;
      inherited Destroy;
    end;function TControlWord.FindText(KeyStr: String): Boolean;
    begin
      //
    end;function TControlWord.GetNowPageNumber: Integer;
    var
      aPageType : OleVariant;
      NowPageNumber : Integer;
    begin
      aPageType := wdActiveEndPageNumber;
      NowPageNumber := FWordApp.Selection.Information[aPageType];
      Result := NowPageNumber;
    end;function TControlWord.GotoBookMark(BookMarkName: String): Boolean;
    var aWhat, aWhich, aCount, aName : OleVariant;
    begin
      with FWordApp Do
      Begin
        aWhat := wdGoToBook;
        aName := BookMarkName;
        Result := True;
        If ActiveDocument.Books.Exists(aName) Then
          Selection.GoTo_(aWhat, aWhich, aCount, aName)
        Else Result := False;
      End;
    end;procedure TControlWord.MoveToLineEnd(Selected: Boolean);
    var aUnit, aExtend : OleVariant;
    begin
      With FWordApp Do
      Begin
        aUnit := wdLine;
        aExtend := wdExtend;
        If Selected Then
          Selection.EndKey(aUnit, aExtend)
        Else
          Selection.EndKey(aUnit, EmptyParam);
      End;
    end;procedure TControlWord.MoveToLineFirst;
    var aUnit : OleVariant;
    begin
      With FWordApp Do
      Begin
        aUnit := wdLine;
        Selection.HomeKey(aUnit, EmptyParam);
      End;
    end;procedure TControlWord.MoveToPageEnd;
    var aUnit : OleVariant;
    begin
      With FWordApp Do
      Begin
        aUnit := wdStory;
        Selection.EndKey(aUnit, EmptyParam);
      End;
    end;procedure TControlWord.MoveToPageFirst;
    var aUnit : OleVariant;
    begin
      With FWordApp Do
      Begin
        aUnit := wdStory;
        Selection.HomeKey(aUnit, EmptyParam);
      End;
    end;procedure TControlWord.MoveToRight(Selected: Boolean; lCount: Integer);
    var
      aUnit, aExtend, aCount : OleVariant;
    begin
      With FWordApp Do
      Begin
        aUnit := wdCharacter;
        aExtend := wdExtend;
        aCount := lCount;
        If Selected Then
          Selection.MoveRight(aUnit, aCount, aExtend)
        Else
          Selection.MoveRight(aUnit, aCount, EmptyParam);    
      End;
    end;procedure TControlWord.myAppQuit(Sender: TObject);
    begin
      FWordApp.Disconnect;
    end;function TControlWord.OpenWordFile(DocPath : String): Boolean;
    var FFIleName : OleVariant;
    begin
      FFileName := DocPath;
      FWordApp.Documents.Open(FFileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
      FWordApp.Visible := True;
    end;procedure TControlWord.SaveDocument(DocPath: String);
    var
      aDocFileName , aDocFileFormat: OleVariant;
    begin
      aDocFileName := DocPath;
      aDocFileFormat := wdFormatDocument;
      FWordApp.ActiveDocument.SaveAs(aDocFileName, aDocFileFormat, EmptyParam, EmptyParam,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    end;end.