V poslednom tohtoročnom pokračovaní seriálu o makrách v OpenOffice.org sa budeme venovať okrajom buniek v tabuľkovom procesore Calc.
OpenOffice.org nám ponúka pre ohraničovanie buniek (menu „Formát – Bunky“) pomerne obmedzené možnosti nastavovania vonkajších a vnútorných oddeľujúcich čiar v bunkách. Tieto obmedzenia vyplývajú hlavne z obmedzenej ponuky čiar, ktorých je iba 17. Preto si dnes, na základe vašich požiadavok, ukážeme jednoduché makro, kde budeme môcť nastaviť tieto okraje ľubovoľne.

Hneď na úvod asi rozčarujeme tých, ktorí očakávali možnosť nastavenia napríklad čiarkovanej čiary – OpenOffice.org toto zatiaľ neumožňuje. Pri definícii každej čiary môžeme definovať štyri parametre: farbu v RGB formáte, šírku základnej ohraničujúcej čiary, šírku prípadnej druhej ohraničujúcej čiary a šírku medzery medzi nimi. Tieto číselné údaje môžeme zadávať veľmi presne – zadávajú sa totiž ako násobky 1/100 milimetra.
OpenOffice.org umožňuje nastaviť celkove osem nezávislých čiar. Pravdaže, všetky možnosti využijeme iba pri ohraničovaní celej skupiny buniek, čo je zrejmé z prehľadu týchto čiar:
štyrmi čiarami môžeme ohraničiť vonkajšie okraje buniek (zľava, sprava, zhora a z dola). Ďalšie dve čiary využijeme iba pri skupine buniek, pretože pomocou nich môžeme nastaviť ich vnútorné horizontálne a vertikálne oddelenie. A posledné dve čiary sa aplikujú v každej bunke – ide totiž o šikmé preškrtnutie bunky či už smerom zľava dole doprava hore alebo naopak, smerom zľava hore doprava dole.
To by z teórie mohlo stačiť a teraz si ukážeme priamo makro, pomocou ktorého budeme nastavovať jednotlivé okraje vo vopred označenej skupine buniek. V použitom príklade nastavíme všetky možné čiary, aby ste videli, ako sa nastavujú. Pre jednoduchosť budeme pri nastavovaní používať priamo zadané hodnoty farieb a šírky čiar. Tí, ktorí potrebujú prípadné parametrické nastavenie si z doterajších dielov určite dokážu naprogramovať makro tak, aby vyhovovalo ich požiadavkám.

REM Funkcia nastaví parametre objekovej premennej okraja
function okraj (farba as long, vnutri, medzera , vonku as integer) as object
' Objektová premenná obsahujúca definíciu okraja
dim pom as New com.sun.star.table.BorderLine
pom.Color=farba ' Farba je vo formáte RGB – najlepšie zadávať hexadecimálne ako &Hrrggbb
' Nasledujúce šírky sa zadávajú v násobkoch 1/100 mm
pom.InnerLineWidth=vnutri ' Vnútorná linka okraja. Ak používame iba jednu čiaru, tak je potrebné nastaviť hodnotu 0
pom.LineDistance=medzera ' Šírka medzery v prípade, že používame na ohraničenie dve čiary
pom.OuterLineWidth=vonku ' Vonkajšia linka okraja, používa sa aj v prípade nastavenia jednej čiary
okraj=pom
end function
REM procedúra vykreslí okraje označených buniek
sub nastav_okraje
Dim Dokument, List, Bunky, Okraje as object
' Objektová premenná obsahujúca definíciu okrajov buniek vrátane stredových čiar
Dim OkrajeBuniek As New com.sun.star.table.TableBorder
Dokument = ThisComponent
' Ak by sme chceli nastavovať presne určené bunky, môže sa naprogramovať napríklad:
' List = Dokument.Sheets(0)
' Bunky = list.getCellRangeByPosition(1,1,8,5)
bunky=Dokument.CurrentSelection() ' Aktuálne označené bunky
OkrajeBuniek=Bunky.TableBorder ' Aktuálne okraje buniek
' Podľa toho, čo chceme nastaviť, zmeníme príslušné okraje.
' Ak niektorý nenastavíme, zostane nezmenený.
' Ľavý vonkajší okraj
Bunky.TableBorder.IsLeftLineValid = TRUE ' Povolenie ľavého okraja
' Nastavenie farby R=F0, G=0A, B=5B; vnútorná čiara široká 2 mm, medzera medzi čiarami 1 mm, vonkajšia čiara 3 mm
OkrajeBuniek.LeftLine=okraj(&HF00A5B,200,100,300)
' Pravý vonkajší okraj
Bunky.TableBorder.IsRightLineValid = TRUE ' Povolenie pravého okraja
' Nastavenie farby R=00, G=00, B=FF; vnútorná čiara žiadna (okraj je iba jednoduchá čiara), vonkajšia čiara 0,5 mm
OkrajeBuniek.RightLine=okraj(&H0000FF,0,0,50)
' Horný vonkajší okraj
Bunky.TableBorder.IsTopLineValid = TRUE ' Povolenie horného okraja
' Nastavenie farby R=F5, G=00, B=72; vnútorná čiara 0,1 mm, medzera medzi čiarami 0,2 mm, vonkajšia čiara 0,5 mm
OkrajeBuniek.TopLine=okraj(&HF50072,10,20,50)
' Dolný vonkajší okraj
Bunky.TableBorder.IsBottomLineValid = TRUE ' Povolenie dolného okraja
' Nastavenie farby R=00, G=FF, B=FF; vnútorná čiara 0,5 mm, medzera medzi čiarami 0,1 mm, vonkajšia čiara 0,3 mm
OkrajeBuniek.BottomLine=okraj(&H00FFFF,50,10,30)
' Vnútorná vodorovná čiara
Bunky.TableBorder.IsHorizontalLineValid = TRUE ' Povolenie vnútornej vodorovnej čiary
' Nastavenie farby R=00, G=00, B=00 (čierna); vnútorná čiara 0,1 mm, medzera medzi čiarami 0,1 mm, vonkajšia čiara 0,1 mm
OkrajeBuniek.HorizontalLine=okraj(0,10,10,10)
' Vnútorná zvislá čiara
Bunky.TableBorder.IsVerticalLineValid = TRUE ' Povolenie vnútornej zvislej čiary
' Nastavenie farby R=55, G=55, B=55; vnútorná čiara 0,1 mm, medzera medzi čiarami 0,2 mm, vonkajšia čiara 0,1 mm
OkrajeBuniek.VerticalLine=okraj(&H555555,10,20,10)
' Vlastné nastavenie okrajov buniek
Bunky.TableBorder = OkrajeBuniek
' Šikmé čiary vo vnútri každej bunky – nastavia sa v každej bunke výberu, nie je možné nastavovať jednu čiaru pre celý výber
' Čiara z ľavého dolného rohu do pravého horného rohu
' Nastavenie farby R=FF, G=55, B=00; vnútorná čiara 0,1 mm, medzera medzi čiarami 0,1 mm, vonkajšia čiara 0,2 mm
Bunky.DiagonalBLTR=okraj(&HFF5500,10,10,20)
' Čiara z ľavého horného rohu do pravého dolného rohu
' Nastavenie farby R=00, G=55, B=FF; vnútorná čiara žiadna (okraj je iba jednoduchá čiara), vonkajšia čiara 0,3 mm
Bunky.DiagonalTLBR=okraj(&H0055FF,0,0,30)
end sub
V Megafoto.sk len za 69 €
Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk