Newsgroup: it.comp.lang.delphi
Titolo: Delphi, OpenOffice e OLE Automation

Ciao a tutti, vi porto un domandone :
come si possono usare le API di OpenOffice da Delphi?
e come implemento l'Automazione OLE?
Grazie mille

ti serve la descrizione della interfaccia fornita dal server com.
Ovvero, elenco di metodi e proprietą disponibili.
Poi, vedi la funzione CreateOleObject.
Bye
A.

Ok, infatti mi sono tirato giů la documentazione dal sito 
www.openoffice.org
e ho scritto del codice per far partire il server OLE e poi eventualmente
aprire un documento.
Perň, al mio tentativo di far partire il server OLE, parte Openoffice (ho
installato la 6.25) con la sua Splash, e poi mi si schianta con "Server
execution failed"
Ho del codice che potrei postare, non č molto, se ti va di dargli
un'occhiata.
Grazie per la tua attenzione

Se posti gli do un occhiata rapida.
A.

eccolo
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Document   : Variant;
    StarOffice : Variant;
    function Connect : Boolean;
    function LoadDocument(const FileName : String; Visible : Boolean):
Boolean;
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.Connect : Boolean;
begin
   if VarIsEmpty(StarOffice) then
      StarOffice := CreateOleObject('com.sun.star.ServiceManager');    <----
Schianta
   Result := not(VarIsEmpty(StarOffice) or VarIsNull(StarOffice))
end;
function TForm1.LoadDocument(const FileName : String; Visible : Boolean):
Boolean;
var
   StarDesktop : Variant;
   LoadParams : Variant;
   PropertyValue : Variant;
   CoreReflection : Variant;
begin
   StarDesktop := StarOffice.Createinstance('com.sun.star.frame.Desktop');
   LoadParams := VarArrayCreate([0, 0], varVariant);
   CoreReflection :=
StarOffice.CreateInstance('com.sun.star.reflection.CoreReflection');
CoreReflection.ForName('com.sun.star.beans.PropertyValue').CreateObject(Prop
ertyValue);
   PropertyValue.Name := 'Hidden';
   PropertyValue.Value := not Visible;
   LoadParams[0] := PropertyValue;
   Document := StarDesktop.LoadComponentFromURL(FileName, '_blank', 0,
LoadParams);
   Result := not(VarIsEmpty(Document) or VarIsNull(Document));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   Connect;
end;
end.

se lacni openoffice come programma standard funziona bene?
Sei sicuro che la classe da indicare come param in CreateOleObject sia
quella indicata?
Bye
A.

 quella indicata?
La documentazione e gli esempi della Sun dicono questo
???
Non so proprio dove battere il capoccio

prova a crearti una type lib x questo server com e vedi se ti fa problemi.
A.

Dopo aver installato la nuova versione di openoffice non ho più lo stesso
problema, mi apre il server ma non mi apre il documento.
Marianna Campagnola !!!!!!!!!

 Marianna Campagnola !!!!!!!!!
Chi č 'sta tipa? una tosta? ahahahahahahahah!
A.

ce l'ho fattaaaaaaa!!!!!!!!

In pratica io cercavo di fare
      LoadDocument('C:/PADULO.doc', True);
ma lui vuole
      LoadDocument('file:///C://PADULO.doc', True);
e ora funzionaaaaaa evvivaaaaaa
Grazie ancora per l'enorma pazienza e disponibilità che hai avuto con me

dopo la createoleobject, prima di fargli caricare il doc,
metti visible := False
poi lo metti a true dopo aver caricato il doc.
Bye
A.

grazie...
alla prossima