Wechsel zwischen geöffneten Dokumenten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wechsel zwischen geöffneten Dokumenten

Re: Wechsel zwischen geöffneten Dokumenten

von Mr.Ed » Sa, 04.06.2011 12:22

Prima! Es funktioniert. Jetzt muss ich noch ein bisschen "verdauen" und ausprobieren, ob ich den Code nicht noch vereinfachen kann.

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
Vielen Dank noch mal für deine Hilfe! (Sehr freundlich, dieses Forum!)

Mr.Ed

Re: Wechsel zwischen geöffneten Dokumenten

von komma4 » Sa, 04.06.2011 12:00

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?

Re: Wechsel zwischen geöffneten Dokumenten

von Mr.Ed » Sa, 04.06.2011 11:48

komma4 hat geschrieben:
Damit entfällt das nervige Geflacker und zeitaufwändiges Berechnen des Bildschirms während das Makro läuft.
Genau das habe ich mir davon auch versprochen. Ich habe jetzt folgenden kleinen Testcode geschrieben:

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
Ich starte von einem geöffneten Writer-Dokument aus (oDoc1 = ThisDocument), hole mir dann den Controller (ist das an dieser Stelle überhapt nötig?). Anschließend bestimme ich die Parameter und lege mit diesen oDoc2 an, aktiviere den Controller dort und mache oDoc2 sichtbar. Bis zu dieser Stelle funktioniert es. Aber wie komme ich wieder nach oDoc1 zurück?

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

Re: Wechsel zwischen geöffneten Dokumenten

von komma4 » Sa, 04.06.2011 09:47

Willkommen im Forum.

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
als letzten Parameter beim loadComponentFromURL-Befehl angeben


Die lassen sich nach erfolgter Manipulation dann wieder anzeigen mit:

Code: Alles auswählen

oFrame = oDoc1.getCurrentController().getFrame() 
oFrame.getContainerWindow().Visible = TRUE 
Damit entfällt das nervige Geflacker und zeitaufwändiges Berechnen des Bildschirms während das Makro läuft.

Hilft Dir das?

Mr.Ed hat geschrieben:Übrigens habe ich den Rat befolgt und Xray installiert
Und Du hast Dir auch Andrews Makro-Dokument besorgt... stehen viele gute, lesenswerte Sachen drinne.


Viel Erfolg!

Wechsel zwischen geöffneten Dokumenten

von Mr.Ed » Fr, 03.06.2011 22:13

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

Nach oben