Další možnosti ukládání dokumentu
Existuje ještě několik prostředků, jak zjistit, zda je vůbec nutné dokument ukládat. Použijete je tehdy, kdy ž chcete uložit dokument, k terý byl změněn, není uložen apod. Ke zjištění našich požadavků slouží následující příkazy (vlastnosti) dokumentu:
Byl dokument změněn?
Pokud chcete zjistit, zda byl dokument po svém otevření jakkoliv upravován, použijete:
If doc.isModified then
„Pokud byl dokument změněn, pak“ a například uložíte.
Je dokument uložen?
Pro zjištění, zda jste dokument již uložili, slouží:
If doc.hasLocation then
„Pokud má dokument lokaci (umístění), pak“ – pokud má lokaci, nemusíte již ukládat, použijete například Exit
sub.
Je dokument pouze pro čtení ?
If doc.isReadOnly then
Pokud je dokument pouze pro čtení, nemusíte ho ukládat.
Kombinujeme
Můžete samozřejmě zjištění těchto vlastností kombinovat:
If doc.hasLocation and doc.isModified then
Tyto vlastnosti použijete nejen při ukládání dokumentu jako nového, ale i při pouhém uložení změn.
Uložení změn v dokumentu
Pokud jste výše uvedenými vlastnostmi zjistili, že například došlo ke změnám, a dokument již máte uložen, stačí uložit změny příkazem (stejně jako [CTRL + s]):
doc.store()
Teď již umíte vytvořit nový soubor, uložit ho na novou adresu, a pokud jste v něm provedli jakékoliv, změny umíte to zjistit a změny uložit (nebo neuložit).
Zavření dokumentu
Poslední příkaz k ovládání dokumentů jako celků je příkaz close(boolean), kterým zavřete definovaný
dokument.
doc.close(True)
Doporučuji používat vždy v kombinaci s výše zmíněnými příkazy pro zjištění, zda je dokument uložen a je tedy možné ho zavřít.
Uzamčení dokumentu v Calcu
Jestliže chcete ochránit dokument proti změnám (přesouvání listů...), můžete ho uzamknout. Tato volba je standardně i v nabídkách. Makrem je to velmi jednoduché. Slouží nám k tomu následující:
doc.protect("")
doc.unprotect("")
isProtected("")
Příkazem doc.protect("") uzamknete dokument bez zadání hesla.
Pokud chcete definovat heslo, upravíte příkaz na doc.protect( "Heslo").
Příkaz doc.unprotec("") funguje úplně stejně.
A pomocí isProtected("") zjistíte, zda je dokument uzamčen:
if doc.isProtected("") then
a pokud není chráněn, můžete uzamknutí nastavit.
Toto se v ám bude hodit v případě, že tvoříte šablonu, se kterou bude pracovat více lidí, a chcete zabránit určitým
změnám mimo ty, které provede makro. V sešitu např. u buněk, do kterých budete makrem vkládat hodnoty a nechcete, aby
tyto hodnoty byly poté ručně přepsány. Po vytvoření šablony můžete dokument uzamknout a na počátku makra pak
použijete unprotect () a na konci protect ().
Jde o sešit
Poslední vlastnost, kterou si ukážeme a s níž můžete ošetřit případné chyby ( pokud je makro spuštěno např. ve
Writeru a patří do Calcu ), je zjištění, zda se jedná o sešit. To zjistíte použitím vlastnosti
ImplementationName. Zápis bude následující:
if doc.ImplementationName = "ScModelObj" then
Pokud je dokument sešit (ScModelObj), tak můžete spustit příkazy určené pro ovládání sešitu, jinak
končíte (Exit sub).
Tisk dokumentu
Poslední, co si dnes ukáže m e, jsou ovládací příkazy pro tisk dokumentů. Zde máme dvě metody print a
vlastnost printer.
Vlastnost printer
Tímto ovlivňujete tiskové vlastnosti dokumentu, např. na jaké tiskárně provedete tisk, orientace tisku, formát papíru
a jeho velikost. Vlastnosti nastavujete pomocí datového pole definovaného jako
com.sun.star.beans.PropertyValue. Rozměry (nastavení velikosti stránky) pak jako pole
com.sun.star.awt.Size. Zde již rozměr pole zadávat nemusíte, protože je jasně daný (výška a šířka).
Dim vl_tisku (2)as new com.sun.star.beans.PropertyValue Dim velikost As New com.sun.star.awt.Size velikost.Width = 20000 ' tj 20 cm šířky velikost.Height = 10000 ' tj 10 cm výšky vl_tisku (0).Name = "Name" vl_tisku (0).Value = "Moje_tiskárna" ' název Vaší tiskárny vl_tisku (1).Name = "PaperOrientation" vl_tisku (1).Value = com.sun.star.view.PaperOrientation . LANDSCAPE ' nebo com.sun.star.view.PaperOrientation.PORTRAIT vl_tisku (2).Name = "PaperSize" vl_tisku (2). Value = velikost Doc.Printer = vl_tisku ()
Takto jste nastavili tisk na tiskárně pojmenované "Moje_tiskárna". Dále budete tisknout na šířku
(LANDSCAPE – na šířku, PORTRAIT – na výšku) a pomocí PaperSize (pole
com.sun.star.awt.Size) jste zadali výšku a šířku 20*10 cm.
TIP: Tisk na výšku budete nastavovat pouze tehdy, když potřebujete změnit z šířky na výšku. Jinak je nastaven automaticky. V podstatě všechny hodnoty, které nenastavíte, budou nahrazeny výchozími hodnotami. Pokud tedy nenastavíte nic, budete tisknout, jako když myší kliknete na ikonku tiskárny.
Nastavení máte a nyní k samotnému tisku.
Metoda print
Pomocí této metody ovlivňujete již tisk samotný – počet kopií, jejich řazení…
Dim tisk (3) as new com.sun.star.beans.PropertyValue tisk(0).Name = "Pages" ' Výběr stránek tisk(0).Value = "1, 2-5, 9" ' volby oddělujete čárkou tisk(1).Name = "CopyCount" ' počet kopií tisk(1).Value = 3 tisk(2).Name = "Sort" ' budete třídit? tisk(2).Value = True ' ano tisk(3).Name = "Wait" ' synchronizace tisku? tisk(3).Value = True ' ano doc.print(tisk ())
Vysvětlení některých příkazů:
tisk(0) – vypíšete strany k tisku jako text, tzn. do uvozovek, oddělujete středníkem,
tisk(1) – počet kopií zadáváte jako číslo,
tisk(2) – seřazení tisku: True – Ano / False – Ne,
tisk(3) – synchronizace tisku – nezapomeňte, pokud budete zadávat více příkazů k tisku (lze i pomocí
příkazu Wait 50 – pozdrží běh na 50 milisekund), jinak tisk neproběhne, jak má.
POZOR: Při tisku sešitu Calc si dejte pozor na číslování stráne k. P okud totiž buňky přesahují do další, vytiskne se tato. Makrem nastavujete stránky k tisku, ne listy!!! V tomto případě je lepší dopředu ošetřit formát stránky.
Opět platí, že pokud neprovedete žádné volby, bude program vycházet z výchozích hodnot.
Možnosti tisku zde nekončí, je možné tisknout pouze výběr buněk (stejně jako máte volbu v standardním tiskovém
dialogu). Nastavení oblastí tisku (PrintAreas) si ukážeme až v kapitole o buňkách.
V tomto díle seriálu o makrech se dozvíte o rozšířených možnostech ukládání dokumentu. Naučíte se je také uzavřít a
vytisknout.








