Strona 1 z 1
Tworzenie zwijanych punktów konspektu w OpenOffice Writer
: śr wrz 01, 2010 11:05 pm
autor: Openista
Witajcie!
Tworzę we OpenOffice Writer prezentację projektu znajomej i chciałbym zrobić tak, żeby zawarte pod każdym z głównych punktów informacje mogły być zawijane oraz rozwijane. Pisząc "informacje" mam na myśli tekst i grafiki.
Ten projekt będzie oceniany w krótkim czasie przez specjalistów, którzy mogą uznać poszczególne punkty za niewarte uwagi i wtedy nie będą musieli ich czytać.
Jeżeli któryś z punktów (nagłówek) wzbudzi ich zainteresowanie, wystarczy kliknąć coś w rodzaju plusika (trójkącika i t.p. - to akurat ma nikłe znaczenie) po lewej i dany punkt byłby rozwijany.
Żeby lepiej zobrazować to czego szukam, proszę rzucić okiem na tę stronę:
http://pl.wikipedia.org/wiki/Polska
Lista języków w znajdującym się po lewej panelu jest rozwijana poprzez naciśnięcie na znajdujący się ciut niżej odsyłacz "W innych językach".
Re: Tworzenie zwijanych punktów konspektu w OpenOffice Write
: czw wrz 02, 2010 11:12 am
autor: Astur
Łatwiej będzie napisać to w HTML
Re: Tworzenie zwijanych punktów konspektu w OpenOffice Write
: pt wrz 03, 2010 1:35 am
autor: Arghil
W OO.org też się da. Czy opisywane poniżej rozwiązane jest proste, pozostawiam ocenie czytającym

.
Tekst w dokumencie można ukryć na wiele
sposobów. Zmienne użytkownika + "checkbox" i makro (
hide section) zapewni odpowiedni efekt.
Tytułem wstępu w przykładzie użyłem
- sekcji: Sekcja1, Sekcja2, Sekcja3.
- zmiennych użytkownika: zm1, zm2, zm3
- ogólnej procedury: ShowHideSection
- procedur dla każdej sekcji: ShowHideSection1, ShowHideSection2, ShowHideSection3
- checkboksów : cbSekcja1, cbSekcja2, cbSekcja3
Kolejne kroki:
- Procedura ShowHideSection
Narzędzia -> Makra -> Zarządzaj makrami -> Makro
Na liście z lewej odnajdujemy nasz dokument, następnie naciskamy 'Nowy' (można zostawić domyślną nazwę modułu) i wciskamy 'ok'
Następnie wklejamy poniższy kod:
Kod: Zaznacz cały
REM from http://www.oooforum.org/forum/viewtopic.phtml?t=83260
REM
Sub ShowHideSection(parSection as String, parUsrVariable as String)
Dim oDoc,TextFields,Controls,CheckBox,Enumeration,thisTextField
oDoc = ThisComponent
TextFields = oDoc.getTextFields
Controls = oDoc.getDrawPage.getForms.getByName("Formularz")
CheckBox = Controls.getByName(parSection) 'case sensitive
Enumeration = TextFields.createEnumeration
While Enumeration.hasMoreElements
thisTextField = Enumeration.nextElement
If thisTextField.SupportsService("com.sun.star.text.TextField.User") then
If thisTextField.TextFieldMaster.Name = parUsrVariable then
thisTextField.TextFieldMaster.Value = CheckBox.getCurrentValue
EndIf
EndIf
Wend
TextFields.refresh
End Sub
- Procedury dla sekcji
Będąc na oknie OO.org Basic dopisujemy procedury odpowiedzialne za poszczególne sekcje.
Powodują one wywołanie ShowHideSection z odpowiednimi parametrami.
Sekcja 1:
Kod: Zaznacz cały
Sub ShowHidenSection1
ShowHideSection "cbSekcja1", "zm1"
End Sub
Sekcja 2:
Kod: Zaznacz cały
Sub ShowHidenSection2
ShowHideSection "cbSekcja2", "zm2"
End Sub
Sekcja 3:
Kod: Zaznacz cały
Sub ShowHidenSection3
ShowHideSection "cbSekcja3", "zm3"
End Sub
- Tworzenie kolejnych sekcji
Wracamy do naszego dokumentu. Wyświetlamy pasek ikon 'Formanty'. Dla każdej sekcji powtarzamy następujące kroki (na przykładzie sekcji 1)
- Wybieramy z formantów ikonę 'Pole wyboru" (checkbox) i tworzymy nowy element, następnie ESC, by wyjść z tryby dodawania nowych elementów.
- Naciskamy 2xLPM na nowym "polu wyboru", otworzy się okno z właściwościami
- Zmieniamy nazwę na cbSekcja1 dla pierwszego elementu, cbSekcja2 dla drugiego i itd..
- Zmieniamy etykietę według uznania
- Zakotwiczenie ustalamy "Jako znak" (za pierwszym razem, potem program już pamięta)
- Przechodzimy na zakładkę "Wydarzenia", przy "Zmieniony stan elementu" wciskamy "...", następnie "Makro"
W bibliotece odnajdujemy nasz dokument->Standard->Module 1 (czyli tam gdzie zapisywaliśmy kod procedur) i z listy makr (Nazwa makra) wybieramy odpowiednie (ShowHideSection1 dla pierwszej sekcji i itd.), następnie zatwierdzamy wybór (2 x "OK")
- Zamykamy okno "Właściwości"
- Z menu wybieramy Wstaw->Pola->Inne (Ctrl+F2), przechodzimy do zakładki "Zmienne". Jako typ wybieramy "Pole użytkownika".
Wpisujemy nazwę zmiennej: zm1
Wartość: 0
Następnie wciskamy "Wstaw" a potem "Zamknij".
Jeśli wyjdziemy z trybu projektu (Pasek ikon formanty, ikona 'Włacz/wyłącz tryb projektu), to zmienna będzie miała wartość 0 lub 1 w zależności czy pole wyboru będzie wybrane lub nie
- Przechodzimy do nowej linii, potem z menu wybieramy Wstaw->Sekcja, zaznaczamy pole "Ukryj", w "Uwzględnij warunek" wpisujemy następujący kod (dla sekcji 1 - zm1, dla 2 - zm2 i itd. ...)
i naciskamy "Wstaw".
I to wszystko. (Na koniec trzeba wyjść z trybu projektu).
Przykład w załączniku (
Trzeba zaakceptować obsługę makr).
Re: Tworzenie zwijanych punktów konspektu w OpenOffice Writer
: pn gru 09, 2024 12:46 am
autor: szczesciarz0
Dobry wieczór,
mam pytanie, ponieważ kod podany powyżej ukrywa tekst. Co w przypadku, gdy w ukrytej sekcji też są wstawione pola tekstowe z zakładki formanty? One pozostają widoczne, choć cała sekcja jest ukryta.
Czy mogę prosić o uzupełnienie kodu, by wszystko ukrywał.
Dziękuję.
Re: Tworzenie zwijanych punktów konspektu w OpenOffice Writer
: pn gru 09, 2024 10:38 am
autor: Jan_J
Autor @Arghil napisał swój ostatni post w roku 2013. Nie jest jasne, czy odpowie na prośbę. Ale być może zrobi to ktoś inny.
Wiele przykładów obsługi dokumentów z poziomu makr znajdziesz w opracowaniach Andrew Pitoyaka: bardziej roboczym AndrewMacro i w wydawanym w postaci książkowej „OpenOffice Macros Explained” (OOME). Oba można pobrać jako pdf-y z witryny autora
https://www.pitonyak.org/book/.
// uzupełnienie po analizie przypadków
Rozbudowałem na szybko szkic @Arghil-a do postaci dokumentu z ramkami przestawnymi, tabelami i kontrolkami formularza. Wszystkie pola zakotwiczone „jako znak”. Ukrywanie i odkrywanie obejmuje także i te elementy.
Być może wstawiasz je zakotwiczone do strony zamiast do akapitu, do znaku albo jako znak? albo mocujesz je na zewnątrz ukrywanej sekcji? fakt, że kontrolka jest pozycjonowana w pewien sposób na stronie wcale nie oznacza, że jest w tym miejscu zakotwiczona.