Hallo zusammen,
ich bin kürzlich ermutigt worden, einfache Fragen hier ruhig zu stellen, auch wenn sie vielleicht anfängerhaft sind. Mein Problem:
Zwei Dokumente (Writer) sind geöffnet, also Tasks auf der Windows-Oberfläche. Ich kann zwischen ihnen unter Windwows mit <alt tab> wechseln. Unter OOo-basic sind diese Dokumente als "oDoc" und "oDoc2" präsent. Wie kann ich in OOo-basic den Fokus zwischen diesen beiden Dokument-Objekten einfach wechseln, also das machen, was unter Windows mit <alt tab> geschieht? Ich habe schon verschiedenes ausprobiert, zum Beispiel getCurrentController oder aquire, komme aber nicht so recht weiter.
Übrigens habe ich den Rat befolgt und Xray installiert, war erst mal nicht ganz einfach, funktioniert aber jetzt. Xray ist schon ziemlich hilf- und lehrreich, aber die Methoden der oDoc-Objekte sind so zahlreich, dass ich mir die Finger wundtippen müsste, um alles auszuprobieren.
Weiß jemand, wie es einfach geht? Mein Dank träfe ihn mit voller Wucht!
Mfg Mr.Ed
Wechsel zwischen geöffneten Dokumenten
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Wechsel zwischen geöffneten Dokumenten
Willkommen im Forum.
Zur Frage:
Ich öffne Dokumente zur Bearbeitung im Hintergrund
als letzten Parameter beim loadComponentFromURL-Befehl angeben
Die lassen sich nach erfolgter Manipulation dann wieder anzeigen mit:
Damit entfällt das nervige Geflacker und zeitaufwändiges Berechnen des Bildschirms während das Makro läuft.
Hilft Dir das?
Viel Erfolg!
Zur Frage:
Ich öffne Dokumente zur Bearbeitung im Hintergrund
Code: Alles auswählen
Dim OpenProperties(1) as new com.sun.star.beans.PropertyValue
OpenProperties(0).Name = "Hidden"
OpenProperties(0).Value = True
Die lassen sich nach erfolgter Manipulation dann wieder anzeigen mit:
Code: Alles auswählen
oFrame = oDoc1.getCurrentController().getFrame()
oFrame.getContainerWindow().Visible = TRUE
Hilft Dir das?
Und Du hast Dir auch Andrews Makro-Dokument besorgt... stehen viele gute, lesenswerte Sachen drinne.Mr.Ed hat geschrieben:Übrigens habe ich den Rat befolgt und Xray installiert
Viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Wechsel zwischen geöffneten Dokumenten
Genau das habe ich mir davon auch versprochen. Ich habe jetzt folgenden kleinen Testcode geschrieben:komma4 hat geschrieben:
Damit entfällt das nervige Geflacker und zeitaufwändiges Berechnen des Bildschirms während das Makro läuft.
Code: Alles auswählen
Sub Test
Dim oDoc1 as Object, oDoc2 as Object, oFrame1 as Object, oFrame2 as Object
Dim OpenProperties(1) as new com.sun.star.beans.PropertyValue
oDoc1 = ThisComponent
oFrame1 = oDoc1.getCurrentController().getFrame()
OpenProperties(0).Name = "Hidden"
OpenProperties(0).Value = True
oDoc2 = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, OpenProperties())
oFrame2 = oDoc2.getCurrentController().getFrame()
oFrame2.getContainerWindow().Visible = TRUE
oFrame1.getContainerWindow().Visible = TRUE
End Sub
Andrews Makro-Dokument, danke für den Tipp. Liest man aber nicht mal so eben durch. Ich taste mich schrittweise ran.
Vielen Dank für deine Hinweise!
MfG Mr.Ed
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Wechsel zwischen geöffneten Dokumenten
Code: Alles auswählen
oFrame = oDoc1.getCurrentController().getFrame()
oFrame.getContainerWindow().toFront()
funktioniert hier, auch wenn das Fenster zuvor nicht im Hintergrund war.
Bei Dir auch?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Wechsel zwischen geöffneten Dokumenten
Prima! Es funktioniert. Jetzt muss ich noch ein bisschen "verdauen" und ausprobieren, ob ich den Code nicht noch vereinfachen kann.
Vielen Dank noch mal für deine Hilfe! (Sehr freundlich, dieses Forum!)
Mr.Ed
Code: Alles auswählen
Sub Test ' Zwei Fenster parallel öffnen, eins als "Werkbank" (unbenannt)
Dim oDoc1 as Object, oDoc2 as Object, oFrame1 as Object, oFrame2 as Object, oTxt as Object
Dim OpenProperties(1) as new com.sun.star.beans.PropertyValue
oDoc1 = ThisComponent
oFrame1 = oDoc1.getCurrentController().getFrame()
OpenProperties(0).Name = "Hidden"
OpenProperties(0).Value = True
oDoc2 = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, OpenProperties())
oFrame2 = oDoc2.getCurrentController().getFrame()
oTxt = oDoc2.text
oTxt.insertString(oTxt.getStart(), "Hallo Welt!", False)
oFrame2.getContainerWindow().Visible = TRUE
oFrame1 = oDoc1.getCurrentController().getFrame()
oFrame1.getContainerWindow().toFront()
msgBox "Dies ist Frame 1"
oFrame2 = oDoc2.getCurrentController().getFrame()
oFrame2.getContainerWindow().toFront()
msgBox "Dies ist Frame 2"
End Sub
Mr.Ed