Byłoby fajnie, gdybyś napisał jaki to sposób.
Nie mam Maca, ale być może jest to coś analogicznego do tego co funkcjonuje w oprogramowaniu myszy w Windows. Kliknięcie kółka na myszy (tak, można to zrobić, choć wiele osób o tym nie wie) wyzwala charakterystyczny symbol w miejscu kliknięcia, zawierający strzałki, przesunięcie myszki w wybranym kierunku rozpoczyna samodzielny proces przewijania ekranu. Odległość przesunięcia myszki decyduje o szybkości przewijania.
Co do makra zaproponowanego przez @Jan_J napisałem także takowe. Działa jednak inaczej. Zaczynając od początku dokumentu zmienia na określony czas style kolejnych akapitów . Po upływie tego czasu akapity mają przywrócony swój poprzedni styl.
Po uruchomieniu użytkownik jest proszony o podanie nazwy stylu jaki ma zostać zastosowany do prezentowania tekstu. Musi to być styl z dostępnych w Writerze np. "Nagłówek 4" albo utworzony własny. Dwa następne parametry to wartości liczbowe określające jak długo ma być wyświetlany wyróżniany tekst. Pierwszy dotyczy zmiennej długości tego czasu. Należy podać czas jaki w przybliżeniu potrzebny jest na odczytanie 10 znaków. Jeśli zostanie podany to akapit jest wyróżniany przez czas zależny od jego długości. Drugi parametr to możliwość podania stałej liczby sekund przez jaką będzie wyróżniany każdy akapit. Po podaniu parametrów przez 5 sekund nie jest wykonywana żadna akcja. Makro składa się z dwóch podprogramów "Przewijaj2" (to ten należy uruchomić) i "NextPar". Ten drugi to nagrane przeniesienie kursora do następnego akapitu. Nie potrafiłem sam tego napisać.
Aby najlepiej wykorzystać możliwości makra, warto wywoływać je przy zastosowanym widoku "Sieć Web" gdyż wtedy nie pojawiają się podziały stron oraz marginesy. Warto też przywrócić akapitom standardowe parametry. Makro nie radzi sobie z wstawionymi tabelkami, nie wyświetla ich oraz -- jeśli są -- może nie pokazać na ekranie części dokumentu, gdyż kursor "widzialny" przechodzi przez pozycje tabelki, natomiast kursor tekstowy ją pomija. Program jest trudny do zatrzymania, gdyż wykonuje się w pętli. Aby przetestować działanie warto najpierw uruchomić program ze stałym czasem np 0,5 sek. A parametr zmiennego czasu wypróbować na jakimś krótszym dokumencie.
Na sobie wypróbowałem połączenie obu parametrów, czas zmienny 0,4 oraz czas stały 2.
Oto te makra:
Kod: Zaznacz cały
Sub Przewijaj2
Dim s As String, sStyl as String
Dim oCurs as Variant, vCurs as Variant
Dim sCurStyle As String
Dim t1 as double, t2 as double
sStyl=InputBox ("Podaj nazwę stylu" , "Przewijanie", "Nagłówek 3")
t1= Cdbl(InputBox("Podaj w sekundach czas potrzebny na przeczytanie dziesięciu znaków", "Zmienny czas wyświetlania",0))
t2= Cdbl(InputBox("Podaj w sekundach wymagany czas wyświetlania akapitu", "Stały czas wyświetlania",0))
Wait(5000)
oCurs = ThisComponent.Text.CreateTextCursor()
vCurs= ThisComponent.getCurrentController.getViewCursor()
oCurs.GoToStart(False)
vCurs.GoToStart(0)
Do
If NOT oCurs.gotoEndOfParagraph(True) Then Exit Do
sCurStyle = oCurs.ParaStyleName
oCurs.ParaStyleName=sStyl
i = Len(oCurs.getstart().TextParagraph().string)
Wait((i/10*t1+t2)*1000)
oCurs.ParaStyleName=sCurStyle
NextPar() : NextPar() :vCurs.goUp(1,0)
Loop Until NOT oCurs.gotoNextParagraph(False)
End Sub
sub NextPar()
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToNextPara", "", 0, Array())
end sub