AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenOffice und OLE, wie ?

Offene Frage von "thaman"
Ein Thema von JoelH · begonnen am 23. Jul 2003 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Seite 2 von 3     12 3      
leeze

Registriert seit: 13. Aug 2003
1 Beiträge
 
#11

Re: OpenOffice und OLE, wie ?

  Alt 13. Aug 2003, 17:54
Hallo!

Das Speichern eines Dokumentes mache ich immer mit der folgenden Methode:

Code:
procedure TSampleCode.SaveAs (name : string);
var saveparams : variant;
begin
  SaveParams := VarArrayCreate([0, -1], varVariant);

  Document.StoreAsURL ('file:///'+name,saveparams);
end;

Das Schließen eines Dokumentes habe ich bisher noch nicht ausprobiert. Der Aufruf müßte aber recht ähnlich aussehen.

MfG

Daniel
  Mit Zitat antworten Zitat
thaman

Registriert seit: 7. Sep 2003
1 Beiträge
 
#12

Re: OpenOffice und OLE, wie ?

  Alt 7. Sep 2003, 16:16
Hallo,
Das Dokument schließen kann man mit:
Document.close();

Und Staroffice lässt sich bei mir mit:
Desktop.terminate;

Jetzt habe ich nur noch das Problem wie ich auf Formfields zugreifen kann.
Also den Inhalt von Textfeldern und Checkboxen lesen und setzen kann.

Hat da jemand erfahrung? Ich komme irgendwie mit der Api Doku von Openoffice garnicht zurecht. Irgendwie ist immer alles querverlinkt und nicht besonders übersichtlich.

gruß thaman
  Mit Zitat antworten Zitat
Guardian of Rlyeh

Registriert seit: 21. Apr 2004
Ort: Mülheim
1 Beiträge
 
Delphi 6 Personal
 
#13

Re: OpenOffice und OLE, wie ?

  Alt 21. Apr 2004, 14:36
okay, das Laden geht ja jetzt ganz gut, aber wie minimiere ich OpenOffice direkt nach Laden des Dokuments, damit das Ding mir nicht den Bildschirm zuknallt, wenn ich mit dem eigenen Programm arbeiten will, das nur auf eine Tabelle von OO zugreift?
  Mit Zitat antworten Zitat
RasChris
(Gast)

n/a Beiträge
 
#14

Re: OpenOffice und OLE, wie ?

  Alt 16. Jul 2004, 08:50
Zitat von thaman:
...
Jetzt habe ich nur noch das Problem wie ich auf Formfields zugreifen kann.
Also den Inhalt von Textfeldern und Checkboxen lesen und setzen kann.

Hat da jemand erfahrung? Ich komme irgendwie mit der Api Doku von Openoffice garnicht zurecht. Irgendwie ist immer alles querverlinkt und nicht besonders übersichtlich.

gruß thaman

Hallo,

genau das gleiche Problem habe ich auch, ich kann einfach nicht auf die Feld-Inhalte zugreifen.

mit
Code:
...
  enum := Document.getTextFields.createEnumeration;
  while enum.hasMoreElements do
  begin
    if field.TextFieldMaster.Name = 'Name' then
    begin
      InputField := Document.createInstance('com.sun.star.text.TextField.Input');
      InputField.Content := 'Inhalt';
    end;
  end;
...
finde ich zwar die Felder anhand ihres Namens, aber kann deren Inhalt nicht ändern.


Vielen Dank im Voraus!

Grüße,
Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: hmm,

  Alt 16. Jul 2004, 09:55
Zitat von JoelH:
jetzt wo du es sagst, die OleVariant sind eigentlich völliger Unsinn, sollten normale Variants sein.
Das ist Falsch. OleVariants sollten immer dann verwendet werden, wenn du darin ein IDispatch-Interface
eines Automatisierungsobjekts oder Parameter für ein Automatisierungsmethode speichern möchtest.
Der Typ OleVariant bezeichnet eine Variante, die ausschließlich COM-kompatible Typen enthält. Wenn ein Variant-Wert einem OleVariant-Wert zugewiesen wird, werden alle nichtkompatiblen Typen in ihre kompatiblen Entsprechungen umgewandelt. Wenn z.B. eine Variante, die einen AnsiString-Wert enthält, einem OleVariant-Wert zugewiesen wird, wird AnsiString in den Typ WideString konvertiert.
Zitat von JoelH:
Btw, gibt es mittlerweile mal ne vernünftige Doku wo die ganze API mit allen Funktionen beschrieben ist?!?
Du brauchst einen Typelibrary-Viewer um alle Automatisierungsschnittstellen von OpenOffice zu untersuchen.
http://www.microsoft.com/com/resources/oleview.asp
Andreas
  Mit Zitat antworten Zitat
RasChris
(Gast)

n/a Beiträge
 
#16

Re: OpenOffice und OLE, wie ?

  Alt 20. Jul 2004, 11:24
Hallo nochmal,

habe das Problem leider immernoch nicht gelöst. Kann mir denn keiner von euch helfen



Grüße,
Chris
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#17

Re: OpenOffice und OLE, wie ?

  Alt 7. Jul 2009, 14:50
Zitat von RasChris:
...
mit
Code:
...
  enum := Document.getTextFields.createEnumeration;
  while enum.hasMoreElements do
  begin
    if field.TextFieldMaster.Name = 'Name' then
    begin
      InputField := Document.createInstance('com.sun.star.text.TextField.Input');
      InputField.Content := 'Inhalt';
    end;
  end;
...
finde ich zwar die Felder anhand ihres Namens, aber kann deren Inhalt nicht ändern.
...
Hallo,

ich habe nun in etwa das selbe Problem und konnte bisher im Netz so überhaupt keinen Lösungsansatz finden. Die Open Office API ist weiterhin eine totale Katastrophe. Den einzigen brauchbaren Lösungsansatz habe ich hier gefunden.

Allerdings meckert er bei mir hier schon rum. Da mir unklar ist, welcher Datentyp enum, field und inputfield ist, habe ich ihn standardmäßig wie das meinste OO-Zeugs auf Variant gesetzt. An der Stelle "field" allerdings meldet sich auch schon der Compiler und sagt mir, Variante referenziert kein Automatisierungsobjekt. Was ist da wieder verkehrt?

Kann jemand weiter helfen? Ist es jemanden schon gelungen, diese Placeholder zu manipulieren?
MFG
LokutusvB
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#18

Re: OpenOffice und OLE, wie ?

  Alt 8. Jul 2009, 10:35
Zitat von LokutusvB:
... konnte bisher im Netz so überhaupt keinen Lösungsansatz finden...
Hast du den OleViewer (Beitrag #15) heruntergeladen und installiert?
Ohne dieses Tool braucht du gar nicht anfangen.

Die Variable "field" wird in deinem Sourcecode nicht initialisiert.
Dann ist es logisch, dass zur Laufzeit die Exception "Variante referenziert kein Automatisierungsobjekt" kommt.
Nur wenn eine Variantvariable ein IDispatch-Interface enthält, darf man mit dem Punkt-Operator eine Methode aufrufen oder auf ein Property zugreifen.
Zur Verdeutlichung folgendes Beispiel:
Delphi-Quellcode:
var
  test:OleVariant;
begin
  test := ..... // irgendwas
  if VarType(test) <> varDispatch then
    ShowMessage('kein Dispatch-Interface vorhanden!')
  else
  begin
    test.MethodeAufrufen;
    test.Left := test.Left + 1; // Property lesen/schreiben
  end;
Das heisst also, dass man zum Debuggen immer schauen sollte, welchen VarType eine Variantvariable hat.
Andreas
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#19

Re: OpenOffice und OLE, wie ?

  Alt 19. Aug 2009, 10:02
Nein, diesen OleViewer habe ich noch nicht installiert. Anhand der COM-Seite werde ich nicht wirklich schlau und es entzieht sich mir, welchen Nutzen der Viewer dann für mein Problem hat.

Stimmt, "field" ist nun initialisiert und ich kann zumindest erkennen, das Input-Felder im Dokument sind. Nach wie vor bleibt das Problem, diesen Feldern Test zu spendieren bzw. ganz zu löschen, das Problem, was laut Google sehr viele haben und noch niemand lösen konnte.
MFG
LokutusvB
  Mit Zitat antworten Zitat
marky522

Registriert seit: 30. Okt 2006
29 Beiträge
 
Delphi XE2 Professional
 
#20

Re: OpenOffice und OLE, wie ?

  Alt 19. Aug 2009, 12:19
Hallo LokutusvB,

ich hatte das gleiche Problem
und gebe Dir Recht, die Schnittstelle ist sehr umständlich.
Nach langem Suchen im Internet habe ich folgendes gefunden: OpenOfficeDelphi_OOo_v12en.zip

Anbei übersende ich noch einen Codeschnipsel, der zeigt, wie ich das ganze benutze: demo-codefragment.zip
Anmerkung: In der Datei OOoTools.pas habe ich die Varianten-Variable "disp" gegenüber des Orginals
global zur Verfügung gestellt; sonst habe ich, glaube ich, nichts geändert.

Ich hoffe damit ist Dir geholfen.

Mfg
Markus
Angehängte Dateien
Dateityp: zip openofficedelphi_ooo_v12en_139.zip (226,8 KB, 112x aufgerufen)
Dateityp: zip demo-codefragment_261.zip (38,0 KB, 80x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz