Strona 1 z 1

Obramowania komórek w Calc. Post przeredagowany.

: czw maja 26, 2022 11:33 am
autor: Jermor
W poście viewtopic.php?p=24943#p24943 użytkownik zapytał o możliwość dokonania takiej zmiany w poleceniu formatowania komórek w aspekcie ustalania krawędzi obszaru, aby dostępne były własne szerokości linii. Wynikało to z tego, że Calc w Apache OpenOffice przewiduje tylko wybrane szerokości linii. Napisałem makro, które umożliwia podanie szerokości linii od wartości 0 do 12 pkt. z krokiem 0,01.
Tu kilka słów wyjaśnienia nt. tworzenia krawędzi. W Apache OpenOffce do utworzenia krawędzi wykorzystywane są dwie linie, pomiędzy którymi występuje odstęp. Pierwszą linią (w terminologii Calc-a nazwaną "OuterLine") dla krawędzi poziomej jest linia górna, a dla krawędzi pionowej linia lewa. Druga linia nazywa się "InnerLine". Calc w okienku formatowania umożliwia wybór krawędzi z rozwijanej listy przedstawiającej graficzną jej prezentację z przypisaną szerokością konkretnego wzoru.
Inaczej tworzona jest krawędź w LibreOffice. Tutaj należy określić szerokość obramowań oraz wzór, jaki ma zostać zastosowany. Okienko formatowania umożliwia wybór dowolnej szerokości z zakresu od 0,05 do 9.00 pkt oraz wybór stylu. W tym wypadku to algorytmy Calca decydują o przyjętych wartościach szerokości konkretnych linii i odstępu. Rozwijane okienko typów linii zawiera 7 pozycji do wyboru. Nie jest to jednak komplet wzorów przewidzianych w specyfikacji tego parametru.
Proszę zwrócić uwagę na niejednoznaczność określeń "OuterLine" i "InnerLine". Sugerują one, że pierwsza linia jest linią zewnętrzną a druga - wewnętrzną. W rzeczywistości "OuterLine" jest zawsze górną linią krawędzi poziomej a lewą krawędzi pionowej.
Napisane makro rozpoznaje, w jakiej wersji programu Calc zostało wywołane i żąda parametrów dla tej wersji. Makro pozwala określić kolor krawędzi oraz zadecydować czy w obszarze zaznaczone mają być wewnętrzne linie poziome i pionowe. Parametry obramowania zostaną zastosowane do wszystkich krawędzi w zaznaczonych obszarach w arkuszu a jeśli żaden obszar nie zostanie zaznaczony, to obramowania obejmą aktualną komórkę aktywną.
Makro otwiera okno dialogowe, w którym należy określić oczekiwane wartości.
Okno otwarte dla Apache OpenOffice. Opcje LibreOffice są niedostępne.
Okno otwarte dla Apache OpenOffice. Opcje LibreOffice są niedostępne.
obraz_2022-05-26_111215443.png (16.1 KiB) Przejrzano 379 razy
Powyższe okno dialogowe było związane z pierwszą wersją makra, które zostało zamieszczone w tym poście.
Po zastanowieniu postanowiłem zmodyfikować okno dialogowe rozszerzenia tworzącego obramowania obszarów. Uznałem, że wpisywanie liczb odpowiadających kolorom nie jest najlepszym rozwiązaniem. Ponadto, dzięki uwagom kolegi @cwolan, zastosowałem możliwość przechodzenia bezpośrednio do ustawiania parametrów, korzystając ze skrótów klawiaturowych ALT+podkreślona litera.
Obecnie okno dialogowe wygląda tak:
Okno dialogowe  otwarte w LibreOffice.
Okno dialogowe otwarte w LibreOffice.
obraz_2022-05-30_171719165.png (18.46 KiB) Przejrzano 243 razy
Składowe kolorów ustawia się suwakami. Zmieniony jest układ parametrów. Tę wersję rozszerzenia załączam w pliku oxt.
Granice.oxt
Zmodyfikowana wersja Granice.oxt
(4.67 KiB) Pobrany 23 razy
Po pobraniu rozszerzenia należy je dodać do pakietu przy pomocy menadżera rozszerzeń.
Wykorzystując polecenie "Narzędzia -> Dostosuj..." można utworzyć własny, nowy pasek narzędzi lub dodać nową pozycję do wybranego paska narzędzi dodając ikonkę uruchamiającą makro. Jak to można zrobić, opisałem tutaj: https://yestok.pl/lbo/y35.php w części opisującej rozszerzenie GeoMap. Można też "podpiąć" makro pod swój skrót klawiaturowy.

Po zainstalowaniu rozszerzenia w kontenerze "Moje makra" pojawi się biblioteka "Granice" zawierająca moduł "Borders". Do wywołania należy wskazać procedurę "Main".

Dotyczy wersji Calc Apache OpenOffice. Testując to rozszerzenie w wersji 4.1.12, zaobserwowałem, że makra z tego kontenera nie dają się uruchomić przy wyższym stopniu bezpieczeństwa. Dotychczas nigdy tak nie było. Makra z tego kontenera uruchamiały się zawsze. Zatem przy poziomie "Niski" makro uruchomi się bez problemu. Przy poziomie "Średni" makro będzie wymagało zgody na uruchomienie. Sądzę, że jest to jakieś niedopatrzenie w wydaniu tej wersji.

Dziękuję koledze @cwolan za uwagi.