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([0, 0], 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; |