Seite 1 von 1
LoadComponentFromURL
Verfasst: Do, 19.08.2004 16:05
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
Verfasst: Do, 19.08.2004 20:41
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
Verfasst: Fr, 20.08.2004 08:52
von Andrew
Hallo Stephan !
Vielen Dank für die Antwort.
Hat prima geklappt.
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;