LoadComponentFromURL

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Andrew
Beiträge: 5
Registriert: Fr, 04.06.2004 11:14

LoadComponentFromURL

Beitrag von Andrew »

Hallo Leute!
Ich öffne von Delphi ein Dokument auf Basis einer Vorlage,
was auch prima klappt.

Code: Alles auswählen

VDoc := StarDesktop.LoadComponentFromURL( Pfad + Datei, '_blank', 0, VarArrayCreate([0, - 1], varVariant));
Nun möchte ich aber nicht das ein leeres Dokument auf Basis meiner Vorlage geöffnet wird, sondern meine Vorlage selbst.
Also ich nehme mal an, das " '_blank' " der zu tauschende Parameter ist.
Aber was muß statt dessen übergeben werden ?

Danke für Eure Antworten
Andree
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Hallo Andrew,

Das hier funktioniert unter StarBasic, es sollte in diesem Sinne auch unter Delphi funktionieren:

Code: Alles auswählen

Sub Vorlage_bearbeiten
Dim oDokument as Object
Dim sUrl as String
Dim Dummy(0) as New com.sun.star.beans.PropertyValue
Dummy(0).Name = "AsTemplate"
Dummy(0).Value = "False"
sUrl = "file:///C:/Programme/StarOffice7/share/template/german/personal/faxpriv.stw"
oDokument = StarDesktop.loadComponentFromURL ( sUrl , "_blank", 0, Dummy() )
End Sub
Hinweis:
"_blanc" ist allgemein der Name für das Fenster/Frame in welches das Dokument geladen werden soll, hier ebend ein neues Fenster (_blanc ist reserviertes Wort). Ist bereits ein Dokument geöffnet, und das entsprechende Fenster hat einen Namen, kannst Du den Namen des Fensters in welchem das Dokument "läuft" ermitteln und beliebige andere Dokumentew in dieses Fenster laden (Effekt ist da Du kein neues Fenster erzeugst und ein solches auch nicht in der Taskleiste angezeigt wird).


Gruß
Stephan
Andrew
Beiträge: 5
Registriert: Fr, 04.06.2004 11:14

Beitrag von Andrew »

Hallo Stephan !
Vielen Dank für die Antwort.
Hat prima geklappt. :lol:

Code: Alles auswählen

procedure TForm1.CallStaroffice;
var
  sPfad,                    //Pfad der Vorlage, mit Dateinamen
  sDocument: String;        //Dokumentenpfad
  vDocument,                //
  vServiceManager,          //Ole-Objekt
  vStarDesktop,             //Instanz von vServiceManager
  ooValue,
  ooReflection,
  ooParams: Variant;

begin
  sPfad := GetCurrentDir + '\StarVor.stw';
  sDocument := 'file:///' + StringReplace(sPfad, '\', '/', [rfReplaceAll]);

  vServiceManager := CreateOleObject('com.sun.star.ServiceManager');
  vStarDesktop := vServiceManager.createInstance('com.sun.star.frame.Desktop');

  ooParams := VarArrayCreate([0, 0], varVariant);
  ooReflection := vServiceManager.createInstance('com.sun.star.reflection.CoreReflection');
  ooReflection.forName('com.sun.star.beans.PropertyValue').createObject(ooValue);
  ooValue.Name := 'AsTemplate';
  ooValue.Value := False;
  ooParams[0] := ooValue;

  vDocument := vStarDesktop.LoadComponentFromURL( sDocument, '_blank', 0, ooParams);


end;
Antworten