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.