Možnost nastavení klasickým způsobem naleznete v Calcu pod záložkou Data | Kontrola vstupních
dat
Vždy je nutné nastavit typ hodnoty, způsob vyhodnocení kontroly dat a samotné hodnoty, se kterými bude prováděno
porovnání. V makru si přiřadíte ovládání kontroly vstupních dat do proměnné, pomocí které je nakonec přiřadíme k
buňce, nebo oblasti buněk.
kontrola = oblast.Validation Oblast = thisComponent.sheets(0).getCellRangeByName("A1:A10")
V proměnné kontrola nyní budeme provádět veškerá nastavení.
Nastavení typu hodnoty
Jako první nastavíte typ hodnoty, které poté mohou být použity.
Dialog pro kontrolu vstupních dat
Programově nastavíte typ hodnoty takto:
Kontrola.type = com.sun.star.sheet.ValidationType.WHOLE ' porovná celá čísla proti zadané podmínce
Další možnosti jsou:
.ValidationType.ANY – nastaví kontrolu na všechny hodnoty – tedy
anuluje veškerou kontrolu.
.ValidationType.DECIMAL –
porovná všechny čísla proti specifikované podmínce
.ValidationType.DATE – porovná zadané datum proti specifikované
podmínce
.ValidationType.TIME – porovná zadaný čas proti
specifikované podmínce
.ValidationType.TEXT_LEN –
porovná délku zadaného textu proti specifikované podmínce
.ValidatinType.LIST – jsou povoleny pouze hodnoty zadané přímo, nebo obsahem
z oblasti buněk
Jak budete kontrolovat hodnotu
V minulém díle jste se v části o podmíněném formátování seznámili se způsobem, jakým se zadávají operátory pro podmíněné formátování. Při kontrole dat použijeme stejný postup.
kontrola.setOperator(com.sun.star.sheet.ConditionOperator.EQUAL)
Proti čemu kontrolujete – zadání hodnoty
Můžete zadat jednu až dvě hodnoty (pro případ, že si jako operátor vyberete mezi a není mezi). Dále
můžete zadat adresu buněk, které obsahují povolené hodnoty, a nakonec můžete hodnoty zadávat přímo do kódu
makra.
Pro celá čísla a omezení délky textu
kontrola.setFormula1(1) ' číslo 1
Pro desetinná čísla
kontrola.setFormula(1.5) ' pro číslo 1,5
kontrola.setFormula1("2012-12-12") ' pro 12.12.2012
kontrola.setFormula1("08:08:08") ' pro čas 8 hodin, 8 minut a 8 sekund
kontrola.setFormula1("""ahoj"";""nazdar"";""čau"";""dobrý den""")
Hodnoty seznamu oddělujte středníkem. Všimněte si také uvozovek. První a poslední uvozovky označují začátek a konec seznamu. Okolo slov jsou vždy dvě uvozovky. V programovém zápisu to znamená oddělení jednotlivých záznamů.
kontrola.setFormula1("$List1.$C$1:$C$5")
Adresu buněk zadávejte vždy jako absolutní. Při zadání kontroly dat do oblasti buněk dojde k posunu i v zadání kontroly (stejně jako při kopírování relativních odkazů).
kontrola.setFormula1(10) kontrola.setFormula2(20)
Tímto způsobem zadáte hodnoty pro kontrolu čísel při použití mezi a není mezi.
Nápověda při vstupu
Pokud chcete zobrazit nápovědu, musíte ji definovat a povolit:
Záložka Nápověda při vstupu
Kód pro zadání bude vypadat takto:
kontrola.InputTitle = "Nápověda" kontrola.InputMessage = "Hodnota musí být ze seznamu" kontrola.ShowInputMessage = True
Zobrazený výsledek při vybrané buňce se zobrazenou nápovědou:
Chybové hlášení
V případě, že dojde k zadání neplatných hodnot, máte několik možností určit, jak má program
reagovat.
Například můžete zobrazit hlášení, že hodnota neodpovídá zadané podmínce a určíte, jak má program
pokračovat:
kontrola.ErrorTitle = "CHYBA" kontrola.ErrorMessage = "Hodnota neodpovídá možnostem zadání" kontrola.ShowErrorMessage = True
Takto jste povolili chybové hlášení.
Zbývá určení, jak se má program dále chovat:
kontrola.ErrorAlertStyle = com.sun.star.ValidationAlertStyle.WARNING
Při tomto zadání se po zadání hodnoty do buňky zobrazí upozornění s možnostmi hodnotu ponechat či vymazat.
Možností je opět více.
com.sun.star.ValidationAlertStyle.STOP – zobrazí zprávu a vymaže
zadanou hodnotu
com.sun.star.ValidationAlertStyle.INFO –
zobrazí zprávu a ponechá zadanou hodnotu
com.sun.star.ValidationAlertStyle.MACRO – při zadání chybné hodnoty se spustí
definované makro.
ValidationAlertStyle.MACRO
Zatímco ostatní možnosti a jejich zadání jsou jasné, při použití makra je nutné znát způsob, jakým se
makro v podmíněném formátování definuje.
Adresa makra se zadává do „titulku“ chybové zprávy, v kódu tedy do kontrola.ErrorTitle. Ukázka zadání makra více osvětlí způsob zadání adresy.
vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=application
Rozdělením adresy na několik částí zjistíte zákonitosti zadání.
Vnd.sun.star.script:Standard.Module1.Main
Tato část znamená, že používáte makro umístěné v knihovně Standard a v modulu s názvem Module1. Makro je
pojmenované Main.
Otazník rozděluje adresu makra od jeho druhu.
language=Basic&location=application
Zde uvádíte, že makro je psáno v jazyce Basic s jazykovou lokací dle aplikace.
Zavedení kontroly dat
Když jste definovali všechny podmínky, zbývá jen přiřadit formátování k rozsahu buněk.
oblast.Validation = kontrola
Příklad kódu
Na ukázku uvádím příklad kódu, kterým nastavíte podmíněné formátování pro oblast A1:A10 na prvním listu sešitu. Kód nastaví požadovanou hodnotu na rozsah buněk B1:B10 v prvním listu, zobrazí nápovědu a při zadání chybné hodnoty se zobrazí informační zpráva a hodnota bude vymazána.
sub nastav_podm_formatovani Oblast = thisComponent.sheets(0).getCellRangeByName("A1:A10") kontrola = oblast.Validationkontrola.Type = com.sun.star.sheet.ValidationType.LIST kontrola.setOperator(com.sun.star.sheet.ConditionOperator.EQUAL) kontrola.setFormula1("$List1.$B$1:$B$10") kontrola.InputTitle = "ZADÁNÍ" kontrola.InputMessage = "Vložte hodnotu z výběru"kontrola.showInputMessage = Truekontrola.ErrorTitle = "POZOR – CHYBA" kontrola.ErrorMessage = "Zadána chybná hodnota" kontrola.ShowErrorMessage = Truekontrola.ErrorAlertStyle = com.sun.star.sheet.ValidationAlertStyle.STOP oblast.Validation = kontrola end sub
Pro tuto chvíli opustíme formátování, přestože nebyly dosud vyčerpány všechny možnosti, které program poskytuje. Další díly se budou věnovat ukládání sešitů do formátů CSV a exportu do PDF.