API - criando documentos do OpenOffice

Top  Previous  Next

procedure TSDIAppForm.teste1Click(Sender: TObject);

var fOpenOffice : Variant;

    fDocument : Variant;

    fConnected : boolean;

    fDocumentOpened : boolean;

    fDesktop : Variant;

    wProperties : Variant;

    Texto, oDescBusca : variant;

begin

    if  VarIsEmpty(fOpenOffice) then

        fOpenOffice := CreateOleObject('com.sun.star.ServiceManager');

 

    fConnected := not (VarIsEmpty(fOpenOffice) or VarIsNull(fOpenOffice));

 

 

   if not fConnected then

      abort;

 

   fDesktop := fOpenOffice.createInstance('com.sun.star.frame.Desktop');

 

   wProperties := VarArrayCreate([00], varVariant);

   wProperties[0] := MakePropertyValue(fOpenOffice,'Hidden', false);

 

   try

     fDocument := fDesktop.loadComponentFromURL(  'file:///'

StripString('c:\teste.doc''\''/') , '_blank'0, wProperties);

     Texto := fDocument.GetText ;

   except

     fDocument := 

fDesktop.LoadComponentFromURL('private:factory/swriter','_blank'0

VarArrayCreate([0, - 1], varVariant));

     Texto := fDocument.GetText ;

     Texto.SetString('teste'#13 + 'teste'+#13);

   end;

 

   fDocumentOpened := not (VarIsEmpty(fDocument) or VarIsNull(fDocument));

 

 

   oDescBusca := fDocument.createReplaceDescriptor;

   oDescBusca.SearchWords := True;

   oDescBusca.setSearchString ('teste');

   oDescBusca.setReplaceString('texto');

   fDocument.replaceAll(oDescBusca);

 

   oDescBusca := Texto.getEnd;

   oDescBusca.SetString('xxxxxxxxx');

 

   if fDocumentOpened then

    begin

      // fDocument.Close(false);

 

       fDocumentOpened := false;

       fDocument := Unassigned;

 

       //fDesktop.Terminate;

       fDesktop := UnAssigned;

    end;

    fConnected := false;

    fOpenOffice := Unassigned;

end;