Seite 1 von 1

Statuszeile und Dokumente wechseln

Verfasst: Do, 10.08.2006 15:01
von Tagge
Guten Tag,

da ich auch nach langem Suchen und lesen verschiedener FAQs und Dokumentationen, keine zufriedenstellende Antwort auf meine Fragen gefunden habe, werde ich nun hier nachfragen...

Einmal geht es darum, wie ich einen beliebigen Text in der Statusleiste anzeigen kann.. also z.b. einen Zähler.

Das größere Problem ist die Frage wie ich mit einem Makro zwischen 2 Dokumenten wechseln kann...
Also in meinem aktiven Dokument einen TextCursor zu erstellen ist kein Problem... aber wie komme ich an das zweite Dokument ran um auch dort einen TextCursor zu erstellen?
Ich wäre sehr dankbar für Hilfe!

MfG Tagge

Verfasst: Fr, 11.08.2006 09:00
von Toxitom
Hey Tagge,

zum ersten Teil deiner Frage muss ich dir einen Codeteil raussuchen - dauert ein wenig....

Zum zweiten:
Das größere Problem ist die Frage wie ich mit einem Makro zwischen 2 Dokumenten wechseln kann...
Wie meinst du das? Sichtbar? Im Grunde ist jedes Dokument ein eigenes Objekt - und das kannst du beliebig ansprechen. Nehmen wir an, du rufst dein Makro aus einem dritten Dokument auf und lädst dann zwei weiter Dokumente:

Code: Alles auswählen

Dim oDoc1 as object, oDoc2 as object, oDoc3 as object
dim sUrl1 as string, sURL2 as string
dim arg()
sUrl1 = convertToURL("d:\Beispiele\testdatei1.ods")
sUrl2 = convertToURL("d:\Beispiele\testdatei2.ods")
oDoc1 = StarDesktop.loadComponentFromURL(sUrl1, "_blank", 0, Arg())
oDoc2 = StarDesktop.loadComponentFromURL(sUrl2, "_blank", 0, Arg())
Jetzt hast du deine zwei objekte - und die kannst du jeweils direkt ansprechen, Textcursor erzeugen, manipulieren etc. Das ist unabhängig davon, was auf dem Bildschirm gerade zu sehen ist.

Alle Dokumente sind Teil des StarDesktops, dem Wurzelobjekt. Sind die Dinger also schon offen, so kannst du sie auch dort erreichen:
Das folgende Makro liefert dir eine Übersicht aller aktuell offenen Instanzen (OOo Fenster), da musst du eben entsprechende Analysemethoden einsetzen, um deine Dokumente zu identifizieren.

Code: Alles auswählen

sub alleFrames
  Dim oFrames as object, oFrame as object, i%, s$
  oFrames = StarDesktop.getFrames()
  For i = 1 to oFrames.getcount()
     oFrame = oFrames.getByINdex(i)
      s = s & CStr(i-1) & " : " & oFrame.Title &  Chr(10)
  next
  msgbox s
end sub
Und so kommst du Stück für Stück an deine Dokumente :-)

Gruss
Thomas

Verfasst: Fr, 11.08.2006 12:55
von Tagge
Danke schon mal für die Antwort...
War vielleicht etwas ungenau beschrieben....
Mittlerweile funktioniert es mit den verschiedenen Dokumenten aber... war ein bisschen blöd von mir... ich hatte immer Fehler bekommen, war aber nur weil ich nicht dran gedacht hatte, dass er das falsche Fensrter nimmt...
Naja, dann bin ich ja mal gespannt, wie das mit der Statusleiste geht ;)

Bis denn Tagge