Tworzenie zwijanych punktów konspektu w OpenOffice Writer

Użytkowanie edytora dokumentów
Openista
Posty: 1
Rejestracja: śr wrz 01, 2010 10:52 pm

Tworzenie zwijanych punktów konspektu w OpenOffice Writer

Post 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".
Awatar użytkownika
Astur
Posty: 654
Rejestracja: wt lip 13, 2010 9:11 am

Re: Tworzenie zwijanych punktów konspektu w OpenOffice Write

Post autor: Astur »

Łatwiej będzie napisać to w HTML
Ubuntu 20.04 — OpenOffice 4.1.10
Zanim zastosujesz się do jakiejś rady, zrób kopię zapasową dokumentu, którego ona ma dotyczyć.
Wskazówka: w dokumentach używam czasem niestandardowych, bezpłatnych czcionek Gentium i Lato
Arghil
Posty: 112
Rejestracja: sob lip 04, 2009 7:39 pm
Kontakt:

Re: Tworzenie zwijanych punktów konspektu w OpenOffice Write

Post 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)
    1. Wybieramy z formantów ikonę 'Pole wyboru" (checkbox) i tworzymy nowy element, następnie ESC, by wyjść z tryby dodawania nowych elementów.
    2. Naciskamy 2xLPM na nowym "polu wyboru", otworzy się okno z właściwościami
    3. Zmieniamy nazwę na cbSekcja1 dla pierwszego elementu, cbSekcja2 dla drugiego i itd..
    4. Zmieniamy etykietę według uznania
    5. Zakotwiczenie ustalamy "Jako znak" (za pierwszym razem, potem program już pamięta)
    6. 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")
    7. Zamykamy okno "Właściwości"
    8. 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
    9. 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. ...)

      Kod: Zaznacz cały

      zm1 eq 0
      
      i naciskamy "Wstaw".
I to wszystko. (Na koniec trzeba wyjść z trybu projektu).
Przykład w załączniku (Trzeba zaakceptować obsługę makr).
Załączniki
przyklad.odt
(19.21 KiB) Pobrany 398 razy
LibreOffice || Microsoft Office
szczesciarz0
Posty: 1
Rejestracja: pn gru 09, 2024 12:41 am

Re: Tworzenie zwijanych punktów konspektu w OpenOffice Writer

Post 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ę.
Ostatnio zmieniony pn gru 09, 2024 10:31 am przez Jan_J, łącznie zmieniany 1 raz.
Powód: Korekta interpunkcji poprawiająca czytelność postu
LibreOffice 24.8.0.3.Windows 11 Pro
Jan_J
Posty: 4617
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Tworzenie zwijanych punktów konspektu w OpenOffice Writer

Post 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.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ