Ihr Lieben
Für eine Weihnachtsfeier tüftle ich momentan an einem interaktiven Adventskalender mit Impress (einfaches Beispiel siehe Anhang):
Folie 2 zeigt ein Titelbild mit den Türchen (Textfelder mit Nummer). Wenn ich ein Textfeld anklicke, lässt eine Animation über diesem Textfeld ein farbiges Rechteck erscheinen, das für die geöffnete Tür steht. Klicke ich nun auf dieses Rechteck, komme ich über einen Link auf die passende Folie mit einem Bild, einem Text, einem Rätsel etc. => das ist der Inhalt des Türchens. Über einen Pfeil komme ich nun wieder zurück zu Folie 2 mit dem Titelbild.
Das funktioniert alles bestens. Jetzt kommt mein Problem: Ich möchte nach der Rückkehr auf das Titelbild sehen, welche Türchen bereits geöffnet sind, also welche Eingangs-Animationen bereits abgelaufen sind. Beim erneuten Aufruf der Folie sind jedoch alle Animationen wieder zurückgesetzt. Als ich noch bei MS-PPT war, konnte ich das Problem so lösen, dass ich über die "Zurück"-Funktion wieder zum Titelblatt zurückgekehrt bin; die Folie hatte sich "gemerkt", welche Animationen bereits abgelaufen sind. Bei Impress scheint das jedoch nicht der Fall zu sein.
Jetzt wäre meine Lösungsidee, wenn ich ein Rechteck anklicke, über ein Makro dessen Animation einfach zu löschen, bevor ich die Folie verlasse. Wenn ich dann die Folie wieder aufrufe, ist das Rechteck gerade zu sehen, da es nicht mehr bis zum Aufruf einer Eingangs-Animation verborgen ist.
Da ich dazu jedoch nichts gefunden habe, möchte ich hier erst einmal nachfragen:
Wäre dieser Lösungsansatz überhaupt machbar? Kann ich über ein Makro einem Objekt eine Animation zuweisen bzw. eine diesem zugewiesene Animation löschen? Und wenn ich diesen Thread hier recht verstehe, ist es nicht möglich, über ein allgemeines Makro, das ich dem Klick-Ereignis aller Rechtecke zuweise, an das Objekt zukommen, auf das ich geklickt habe? Ich müsste 24 unterschiedliche Makros haben - aber das wäre ja machbar.
Liebe Grüsse
Marc
Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie
Moderator: Moderatoren
Re: Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie
Guten Morgen
Ich habe gestern noch ausprobiert, was ich in diesem Thread gefunden habe:
Ich habe Kalender und Inhalte in zwei unterschiedliche Präsentation gepackt und dann mit dem Hyperlink ein Sprungziel auf die entsprechende Folie im anderen Dokument angelegt.
Dabei haben sich jedoch zwei neue Probleme ergeben:
1. Der Sprung von Präsentation "Kalender Inhalt" zurück in die Präsentation "Kalender Übersicht" hat dazu geführt, dass die Folie mit den Kalendertürchen wieder zurückgesetzt war (alle Türchen waren wieder geschlossen). Ich kann also nicht zurückspringen, sondern muss die Präsentation "Kalender Inhalt" schliessen, um wieder zur anderen zurückzukommen (das war ja auch so in dem oben verlinkten Thread beschrieben). Dadurch ergab sich aber Problem Nr. 2:
2. Wenn ich von der Präsentation "Kalender Übersicht" in die geschlossene Präsentation "Kalender Inhalt" mittels Hyperlink springe, startet die Präsentation im Bearbeitungsmodus, nicht im Präsentationsmodus (Vollbild). Nur wenn ich beide Präsentationen gestartet habe, kann ich von der einen zur anderen im Präsentationsmodus springen. Dadurch tritt aber wieder Problem 1 auf...
Kennt jemand eine Möglichkeit mittels Hyperlink eine zweite Präsentation direkt im Präsentationsmodus zu öffnen? Ich habe den Parameter "-show" vor oder hinter dem Dateinamen ausprobiert; da kommt aber die Fehlermeldung, dass die Datei nicht existiert.
Meine Angaben zum System habe ich oben noch vergessen und liefere ich hiermit nach: OS: Linux Ubuntu 16.4 LTS, LO: 5.2.3.2
Liebe Grüsse
Marc
Ich habe gestern noch ausprobiert, was ich in diesem Thread gefunden habe:
Ich habe Kalender und Inhalte in zwei unterschiedliche Präsentation gepackt und dann mit dem Hyperlink ein Sprungziel auf die entsprechende Folie im anderen Dokument angelegt.
Dabei haben sich jedoch zwei neue Probleme ergeben:
1. Der Sprung von Präsentation "Kalender Inhalt" zurück in die Präsentation "Kalender Übersicht" hat dazu geführt, dass die Folie mit den Kalendertürchen wieder zurückgesetzt war (alle Türchen waren wieder geschlossen). Ich kann also nicht zurückspringen, sondern muss die Präsentation "Kalender Inhalt" schliessen, um wieder zur anderen zurückzukommen (das war ja auch so in dem oben verlinkten Thread beschrieben). Dadurch ergab sich aber Problem Nr. 2:
2. Wenn ich von der Präsentation "Kalender Übersicht" in die geschlossene Präsentation "Kalender Inhalt" mittels Hyperlink springe, startet die Präsentation im Bearbeitungsmodus, nicht im Präsentationsmodus (Vollbild). Nur wenn ich beide Präsentationen gestartet habe, kann ich von der einen zur anderen im Präsentationsmodus springen. Dadurch tritt aber wieder Problem 1 auf...
Kennt jemand eine Möglichkeit mittels Hyperlink eine zweite Präsentation direkt im Präsentationsmodus zu öffnen? Ich habe den Parameter "-show" vor oder hinter dem Dateinamen ausprobiert; da kommt aber die Fehlermeldung, dass die Datei nicht existiert.
Meine Angaben zum System habe ich oben noch vergessen und liefere ich hiermit nach: OS: Linux Ubuntu 16.4 LTS, LO: 5.2.3.2
Liebe Grüsse
Marc
Re: Bereits "abgelaufene" Animationen beim Zurückgehen zu einer Folie
Guten Abend
Nach einigen Versuchen habe ich es jetzt mit einem Würgaround so gelöst, dass ich die bereits geöffneten Türchen mit zusätzlichen Rechtecken abdecke. Im geschlossenen Zustand werden diese Rechtecke über ein Reset-Makro auf invisible gesetzt. Wenn ich ein Türchen öffne, setze ich das entsprechende Rechteck darüber auf visible. Das hat den Vorteil, dass der Zustand des Adventskalenders sogar erhalten bleibt, wenn die Präsentation angehalten und neu gestartet wird.
Zwei Lösungsideen habe ich leider nicht hinbekommen:
1. Den entsprechenden Eingangseffekt zu löschen mit oObject.setPropertyValue("Effect", com.sun.star.presentation.AnimationEffect.NONE); ich konnte zwar einen anderen Effekt hinzufügen, aber den bestehenden Effekt nicht entfernen.
2. Im Makro das Objekt zu ermitteln, über welches das Makro gestartet wurde. In Formularen funktioniert das problemlos über einen Parameter - Sub Programm(oEvent AS OBJECT) - bei Impress funktioniert das leider nicht. Ebensowenig werden die angeklickten Objekte selektiert, so dass man sie darüber abfragen könnte. Deshalb muss ich jetzt für jedes Türchen ein eigenes Makro schreiben, das den entsprechenden Wert an das Makro sbTuerchenOeffnen übergibt.
Hat jemand noch eine Idee zu diesen beiden Lösungsideen? Vor allem 2. würde mich interessieren.
Hier sind die Makros zum Kalender:
Liebe Grüsse
Marc
Nach einigen Versuchen habe ich es jetzt mit einem Würgaround so gelöst, dass ich die bereits geöffneten Türchen mit zusätzlichen Rechtecken abdecke. Im geschlossenen Zustand werden diese Rechtecke über ein Reset-Makro auf invisible gesetzt. Wenn ich ein Türchen öffne, setze ich das entsprechende Rechteck darüber auf visible. Das hat den Vorteil, dass der Zustand des Adventskalenders sogar erhalten bleibt, wenn die Präsentation angehalten und neu gestartet wird.
Zwei Lösungsideen habe ich leider nicht hinbekommen:
1. Den entsprechenden Eingangseffekt zu löschen mit oObject.setPropertyValue("Effect", com.sun.star.presentation.AnimationEffect.NONE); ich konnte zwar einen anderen Effekt hinzufügen, aber den bestehenden Effekt nicht entfernen.
2. Im Makro das Objekt zu ermitteln, über welches das Makro gestartet wurde. In Formularen funktioniert das problemlos über einen Parameter - Sub Programm(oEvent AS OBJECT) - bei Impress funktioniert das leider nicht. Ebensowenig werden die angeklickten Objekte selektiert, so dass man sie darüber abfragen könnte. Deshalb muss ich jetzt für jedes Türchen ein eigenes Makro schreiben, das den entsprechenden Wert an das Makro sbTuerchenOeffnen übergibt.
Hat jemand noch eine Idee zu diesen beiden Lösungsideen? Vor allem 2. würde mich interessieren.
Hier sind die Makros zum Kalender:
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
Sub sbResetCalendar
dim oDoc as OBJECT
dim oDrawPages as OBJECT
dim oSlide as OBJECT
dim oObject as OBJECT
dim oController as OBJECT
dim i as INTEGER
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oSlide = oDrawPages.getByName("Uebersicht")
for i = 0 to oSlide.Count - 1
oObject = oSlide.getByIndex(i)
If Left(oObject.Name,5) = "Offen" Then
oObject.Visible = False
End If
Next i
oController = oDoc.getPresentation().getController()
oController.gotoSlide(oDrawPages.getByName("Uebersicht"))
End Sub
Sub sbTuer01
sbTuerchenOeffnen(1)
End Sub
Sub sbTuer02
sbTuerchenOeffnen(2)
End Sub
Sub sbTuerchenOeffnen(intNummer AS Integer)
dim oDoc as OBJECT
dim oDrawPages as OBJECT
dim oSlide as OBJECT
dim oObject as OBJECT
dim oController as OBJECT
dim i as INTEGER
oDoc = ThisComponent
oDrawPages = oDoc.getDrawPages()
oSlide = oDrawPages.getByName("Uebersicht") 'Slides are indexed from zero
for i = 0 to oSlide.Count - 1
oObject = oSlide.getByIndex(i)
If oObject.Name = "Offen" & CStr(intNummer) Then oObject.Visible = True
Next i
oController = oDoc.getPresentation().getController()
oController.gotoSlide(oDrawPages.getByName("Tuerchen" & CStr(intNummer)))
End Sub
Marc
- Dateianhänge
-
- Adventskalender mit Impress.odp
- (13.37 KiB) 314-mal heruntergeladen