Podle mého názoru je lepší nastavovat formáty přímo v dokumentu, nebo přes Formát | Podmíněné formátování a ochranu provádět makrem přes uzamčení buněk a listů. Je to programově rychlejší a jednodušší, ale je možné, že to nemusí vyhovovat každému. Pokud budete makrem vytvářet zcela nový dokument, nastavení pomocí makra se nevyhnete. Samozřejmě také nejde pomocí podmíněného formátování nastavit například záhlaví a zápatí. Spolu s jeho vlastnostmi můžete i toto nastavovat automaticky pomocí makra.
TIP: Platí, že všechna nastavení, která neměníte makrem, jsou dána aktuálním přiřazeným stylem/formátem. Není nutné například nastavovat makrem orientaci stránky na výšku, protože jde o výchozí nastavení. Na cokoliv, co nezměníte, bude použito výchozí formátování.
K nejčastějším změnám ve formátování patří změna barvy:
Barvy v OpenOffice.org
K nastavení barvy jako takové slouží funkce RGB. Tato funkce požaduje tři vstupní hodnoty. Jsou to hodnoty pro červenou, zelenou a modrou barvu. Pro představu si zadejte volbu Nástroje | Volby | Barvy, kde si můžete zkusit nastavit vlastní barvy, právě prostřednictvím funkce RGB. Makro můžete zapsat například takto:
dim cervena as integer, zelena as integer, modra as integer cervena = 1 zelena = 130 modra = 255 rozsah.CellBackColor = RGB(cervena, zelena, modra)
Nebo použijete výše zmíněný, ale kratší zápis:
rozsah.CellBackColor = RGB(1, 130, 255)
Funkce vrátí jednu číselnou hodnotu barvy. V podstatě sloučí všechny tři údaje do jednoho. Čísla jednotlivých barev můžete zadávat v rozmezí 0–255. Kombinací je mnoho. Pro nastavení barev slouží i jiná funkce (QBColor), kde nastavujete přímo jedno číslo barvy. Doporučuji však používat funkci RGB, a to proto, že si můžete barvy vyzkoušet ještě předtím, než je zadáte do makra. Zkoušku můžete provést přes volby Nástroje | Volby | Barvy, kde je možné nastavení vlastních barev právě pomocí funkce RGB.
Nastavení vlastních barev v
OpenOffice.org
TIP: Ještě existují funkce Red, Green a Blue. Tyto funkce jsou opakem funkce RGB. Zatímco RGB tyto hodnoty skládá do výsledné barvy, pomocí těchto funkcí můžete zjistit, jaké konkrétní hodnoty má barva, kterou testujete (zjistí jednotlivé barvy funkce RGB).
Formátování buňky
Pokud chcete formátovat buňku, musíte k ní získat přístup. To již umíte. Když je buňka definovaná (přiřazená k proměnné), formátujete ji názvem proměnné, přiřazením k příkazu a nastavením hodnoty formátu. Toto již také znáte, jen ne s buňkami.
bunka = thisComponent.sheets(0).getCellByPosition(0, 0) bunka.CellBackColor = RGB (128, 0,128)
Tímto způsobem jste nastavili pozadí buňky na fialovou.
Pokud chcete nastavovat více vlastností, využijte pomoc funkce with, se kterou jste se již v tomto seriálu také setkali.
with bunka .CellBackColor = RGB (128, 0,128) ' nastavení dalších vlastností end with
TIP: Samozřejmě nemusíte nastavovat každou buňku zvlášť. Vše zde uvedené platí i pro oblasti buněk, jen do proměnné přiřadíte jejich rozsah. Např. rozsah = thisComponent.sheets(0).getCellRangeByPosition(0, 0, 5, 5) → rozsah.CellBackColor = RGB(128, 0, 128).
Pozadí buňky
Jako další možnost při nastavení pozadí buňky je, mimo nastavení barvy, zda se při změně barvy má měnit i barva písma tak, aby bylo vždy kontrastní. Nastavení provedete pomocí příkazu IsCellBackGroundTransparent.
bunka = thisComponent.sheets(0).getCellByPosition(0,0) bunka.IsCellBackGroundTransparent = True
Zarovnání v buňce
Stejně jako v sešitu nastavujete zarovnání buněk v makru. Zarovnání jako takové můžete rozdělit na horizontální (vodorovné) a vertikální (svislé).
Vodorovné zarovnání
Všech pět druhů zarovnání nastavujete následujícím způsobem.
bunka = thisComponent.sheets(0).getCellByPosition(0,0) bunka.HoriJustify = com.sun.star.table.CellHoriJustify.STANDARD ' standardní Další možnosti nastavení jsou: .CellHoriJustify.LEFT ' vlevo .CellHoriJustify.RIGHT ' vpravo .CellHoriJustify.CENTER ' na střed .CellHoriJustify.BLOCK ' do bloku
TIP Standardní zarovnání se řídí obsahem buňky. U textu je nastaveno zarovnání vlevo, u čísel vpravo.
Svislé zarovnání
Základní volby standard, nahoru, dolů a na střed nastavujete obdobně.
bunka = thisComponent.sheets(0).getCellByPosition(0,0) bunka.VertJustify = com.sun.star.table.CellVertJustify.STANDARD ' standardní I zde je více možností nastavení: .CellVertJustify.TOP ' nahoru .CellVertJustify.BOTTOM ' dolu .CellVertJustify.CENTER ' na střed
Orientace buňky
Orientace určuje, jakým směrem bude v buňce veden text. Nastavení opět totožné:
bunka = thisComponent.sheets(0).getCellByPosition(0,0) bunka.Orientation = com.sun.star.table.CellOrientation.STANDARD ' standardní Pro ostatní nastavení použijete tyto příkazy .CellOrientation.TOPBOTTOM ' zhora dolu .CellOrientation.BOTTOMTOP ' zdola nahoru .CellOrientation.STACKED ' pod sebe
Nastavení orientace v buňce shora dolu
Rotace
Když již umíte nastavit centrování a směr textu, naučte se i rotovat text o určený počet stupňů.
bunka = thisComponent.sheets(0).getCellByPosition(0,0) bunka.RotateAngle = 4500 ' rotace o 45° (zadáváte v setinách stupňů)
Nastavení rotace v buňce o 45 °
Uzamčení buněk
Při výběru Formát | Buňky, záložka Ochrana buňky se nabízí výběr uzamčení/skrytí buněk. Makrem tyto vlastnosti nastavujete velmi jednoduše pomocí několika příkazů.
Záložka Ochrana buňky při formátování buněk
Ochranu buňky provedete pomocí struktury com.sun.star.util.CellProtection, kterou následně přiřadíte k příkazu k ochraně buňky.
oblast = thisComponent.sheets(0).getCellRangeByName("A1:D5") dim ochrana as new com.sun.star.util.CellProtection with ochrana .IsFormulaHidden = True .IsHidden = True .IsLocked = True .IsPrintHidden = True end With oblast.CellProtection = ochrana
POZOR: všechny tyto vlastnosti se projeví teprve po uzamčení listu. Uzamknout list již umíte (list.Protected("heslo"). Pokud nebude list uzamčen, neprojeví se žádný z nastavených formátů.
Další možnosti formátování v Calcu si ukážeme v dalším díle. Zejména se budeme věnovat ohraničení a dalším vlastnostem buněk.