Verzweifle an folgendem Makro-Programier-Problem:
Es gibt zwei bereits geöffnete Dateien z.B.
Kunden.ods ---> Das sei mal die oDoc1
Lieferanten.ods ---> Das sei mal die oDoc2
Mit
oDoc = ThisComponent
kann ich mir immer nur die ZULETZT AKTIVE Komponente auslesen.
Wie komme ich denn an die jeweils andere Komponente ran?
Ich benötige die "ThisComponent" ALLER GEÖFFNETEN Dateien.
Es geht nicht um das Auslesen aller geöffneten Frames.
Das bekomme ich hin. Ich kann auch darin schreiben und kopieren usw.
Ich schaffe es aber nicht, zwischen den Komponenten hin und
her zu schalten.
Habe alles probiert - mit ".toFront" ".focus" usw usf.
Gefühlt 200-Tausend Foreneinträge und Programier-PDFs gelesen.
HILFE
Lieben Dank vorab!!!
Zwischen Calc-Komponenten (Tabellen/Dateien) wechseln/springen
Moderator: Moderatoren
Re: Zwischen Calc-Komponenten (Tabellen/Dateien) wechseln/springen
Indem Du durch alle existenten Komponenten interierst und überprüfst welche die gesuchte Komponente ist. Wenn es um Dokumente ginge z.B. anhand deren .URL-Eigenschaft.Wie komme ich denn an die jeweils andere Komponente ran?
Das gibt es nicht, da ja das gilt was Du bereits selbst herausgefunden hast:Ich benötige die "ThisComponent" ALLER GEÖFFNETEN Dateien.
d.h. ThisComponent liefert immer nur ein konkretes Dokument-Objekt. Natürlich kannst Du trotzdem mehrere Dokumentobjekte gleichzeitige referenzieren, nur nicht über ThisComponnt.kann ich mir immer nur die ZULETZT AKTIVE Komponente auslesen.
Zumindest ich weiß nicht wie man ohne Zugriff auf die geöffneten Frames den Fokus zwischen den unterschiedlichen Dokumenten/Fenstern verschieben kann, denn zwar kann man auf die Dokumentobjekte auch über die .Components-Auflistung zugreifen, nur bekommen dadurch die Dokumentobjekte nicht den Fokus.Es geht nicht um das Auslesen aller geöffneten Frames.
Das bekomme ich hin. Ich kann auch darin schreiben und kopieren usw.
Ich schaffe es aber nicht, zwischen den Komponenten hin und
her zu schalten.
Wie auch immer, mit Hilfe der Frames geht es z.B. so:
Code: Alles auswählen
Sub Main
Desktop = createUnoService( "com.sun.star.frame.Desktop" )
for i=0 to Desktop.getFrames().getCount() - 1
MsgBox "Schalte Fokus um auf:" & CHR(13) & Desktop.getFrames().getByIndex(i).Title
Desktop.getFrames().getByIndex(i).Containerwindow.ToFront
Next
End Sub
Gruß
Stephan
Re: Zwischen Calc-Komponenten (Tabellen/Dateien) wechseln/springen
Vielen Dank für die schnelle Antwort.
Werde ich gleich morgen ausprobieren und hoffentlich Erfolg melden...
Gruß
Frank
Werde ich gleich morgen ausprobieren und hoffentlich Erfolg melden...
Gruß
Frank
Re: Zwischen Calc-Komponenten (Tabellen/Dateien) wechseln/springen
Perfekt - funktioniert!
Vielen lieben Dank!!!
Du begibst Dich auf die Dektop-Ebene.
Ich war vermutlich - nicht zuletzt auch dank XRAY - immer nur auf
der "Ursprungsobjekt-Ebene".
z.B.:
Odoc.currentcontroller.frame.containerwindow.toFront
Ist logisch, wenn man es weiss... Aber, wie kommt man darauf:
---> Gibt es eine Dokumentation oder ein gutes Buch, welches einem das lehrt?
Was ich im Internet finde, bringt mich nicht weiter sondern
treibt mich häufig in den Wahnsinn...:
Problematisch ist auch die uneinheitliche Verwendung der Nomenklatur - Beispiel:
https://wiki.openoffice.org schreibt zum Beispiel:
Desktop doch wohl nicht dazu...?!?
Das verwirrt alles sehr, wenn man unbedarft ist, wie ich es bin....
Vielen lieben Dank!!!
Du begibst Dich auf die Dektop-Ebene.
Ich war vermutlich - nicht zuletzt auch dank XRAY - immer nur auf
der "Ursprungsobjekt-Ebene".
z.B.:
Odoc.currentcontroller.frame.containerwindow.toFront
Ist logisch, wenn man es weiss... Aber, wie kommt man darauf:
...Desktop.getFrames().getCount() - 1
...
Desktop.getFrames().getByIndex(i).Title
Desktop.getFrames().getByIndex(i).Containerwindow.ToFront
...
---> Gibt es eine Dokumentation oder ein gutes Buch, welches einem das lehrt?
Was ich im Internet finde, bringt mich nicht weiter sondern
treibt mich häufig in den Wahnsinn...:
Problematisch ist auch die uneinheitliche Verwendung der Nomenklatur - Beispiel:
https://wiki.openoffice.org schreibt zum Beispiel:
Das Wort "Komponente" ist anderswo aber für geöffnete Dateien reserviert (z.B. "test.ods"), und da gehört der"StarDesktop und ThisComponent sind OpenOffice.org-Basic-Befehle, die sich auf die Applikation bzw. das aktuell aktive Dokument beziehen.
Im Unterschied zu Microsoft Office ist OpenOffice.org eine Anwendung mit unterschiedlichen Komponenten"
Desktop doch wohl nicht dazu...?!?
Das verwirrt alles sehr, wenn man unbedarft ist, wie ich es bin....