Základy
Obecně platí, že pro přístup k aktuálnímu (již otevřenému) dokumentu jsou určeny následující příkazy:
thisComponent Stardesktop.CurrentComponent
První z nich zpřístupňuje konkrétní dokument, i přesto, že se v průběhu programu stane aktivním jiný dokument (aktivní = poslední použitý). Pokud tedy makrem otevřete nebo vytvoříte nový dokument, vrací vám tento příkaz vždy jen původní dokument, kde bylo makro spuštěno.
Druhý příkaz Stardesktop.CurrentComponent
použijete pro přístup k právě aktivnímu dokumentu, bez ohledu
na to, kde byl spuštěn. Tímto zápisem ovlivňujete např. makrem otevřený další dokument.
Oba příkazy lze použít i ve Writeru, pokud ale následují příkazy specifické pro některou z dalších částí OpenOffice.org, povede to program k chybě. Jak se proti takovýmto chybám zabezpečit, si také povíme.
Je nutné si tyto příkazy přiřadit k proměnné. Nejvíce používanou proměnnou je doc (nebo odoc, jako o – objekt). Můžete ale použít jakýkoliv název. Tedy:
doc = thisComponent doc = Stardesktop.CurrentComponent
Tímto jste získali přístup k otevřenému dokumentu. Máte ale možnost takový dokument vytvořit, nebo otevřít makrem.
Tvorba dokumentu
K novému sešitu musíme identifikovat cestu URL (protože nový dokument ještě není vytvořen). Pro všechny nové sešity
je platná následující URL (adresa) – "private:factory/scalc"
Tato adresa je shodná pro všechny druhy
dokumentů, jen údaj za lomítkem se liší dle druhu (swriter, sdraw…). Nový sešit vytvoříme příkazem:
sURL = "private:factory/scalc" doc = Stardesktop.loadComponentFromURL(sURL," ",0, Array())
Do proměnné sURL
jste napsali adresu pro nový dokument a do doc
jste přiřadili nově
stvořený dokument. Nemusíte ho již nikde znovu definovat. Příkaz loadComponentFromURL
slouží k „nahrání“
– otevření příslušného dokumentu.
Otevření dokumentu
Pro otevření již existujícího sešitu (souboru) použijete stejný postup jako pro vytváření nového, ale rozdíl bude v tom, že použijete URL již existujícího dokumentu. Tedy příklad pro Windows:
"C:\Documents and Settings\Dan\test.ods"
a pro Linux:
"/home/dan/Dokumenty/test.ods"
Takový zápis je ale pro program nečitelný, protože určité znaky se v zápisu URL nepoužívají a nahrazují se symbolem
%. Potřebujeme tedy převést naši adresu na správný formát, kterému bude program rozumět. K tomu slouží příkaz
ConvertToURL(adresa)
Zápis pak vypadá takto:
sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods") doc = StarDesktop.loadComponentFromURL((sURL, " ", 0, Array())
Tímto příkazem otevřu na svém počítači dokument test.ods uložený v adresáři Dan v Documents and Settings.
TIP: " " tento údaj můžeme ponechat prázdný nebo vyplnit "_blanc", pokud chceme otevřít dokument v novém okně. Pokud budeme dokument otvírat skrytě, použijeme "_hidden".
Otevírání dokumentů můžete ještě navíc přizpůsobit svým požadavkům. K tomu slouží datové pole Array()
na
konci příkazu loadComponentFromURL. Array
je jen pojmenování pro prázdné pole, zadefinujete tedy jiný
název. Nejčastěji je používán Args
(jako Argumenty), který používá i záznamník maker. Můžete ovlivnit,
zda se otvíraný dokument otevře jako šablona, pouze pro čtení, nebo můžete zadat heslo pro otevření zamčeného
dokumentu. Nejprve musíte definovat rozsah pole. Zápisem Args(0)
dáváte na vědomí, že pole obsahuje
jeden argument, Args(1)
obsahuje dva atd.
Šablona
dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "AsTemplate" args(0).Value = True
Pro čtení
dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "ReadOnly" args(0).Value = True
Heslo
dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "Password" args(0).Value = "Heslo"
Samozřejmě můžete kombinovat:
dim args(1) as new com.sun.star.beans.PropertyValue args(0).Name = "Password" args(0).Value = "Heslo" args(1).Name = "AsTemplate" args(1).Value = True
Pokud jste zde definovali datové pole args()
namísto původního Array()
, musíte je
samozřejmě změnit i v samotném příkazu. Následující příkaz otevře zaheslovaný dokument test.ods jako šablonu.
sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods") dim args(1) as new com.sun.star.beans.PropertyValue args(0).Name = "Password" args(0).Value = "Heslo" args(1).Name = "AsTemplate" args(1).Value = True doc = StarDesktop.loadComponentFromURL((sURL, " ", 0, args())
Toto jsou nejčastější vlastnosti, které můžete při otevírání dokumentu ovlivnit. Je jich více, ale troufám si tvrdit, že je nebudete potřebovat.
Zjistit url
Jednoduchý způsob, jak zjistit URL u existujícího dokumentu, je toto makro, které zároveň ukáže rozdíl mezi programovým a textovým zápisem URL.
sub zjisti_adresu doc = thisComponent print doc.URL print ConvertFromURL(doc.URL) end sub
Uložení dokumentu
Když už umíte soubor vytvořit nebo otevřít, zbývá vám naučit se soubor uložit. Ukládání se řídí příkazem
storeAsURL(adresa, Array())
. Tento příkaz spustí stejný proces jako po klasické volbě Ulož
jako ([CTRL + SHIFT + s]), s tím rozdílem, že adresu k dokumentu předáváte makrem. Pokud jste otevřeli
dokument a chcete ho makrem uložit jinam, opět předáváte adresu, kam budete ukládat. Použijete stejný postup k
převodu URL do správného tvaru.
sURL = ConvertToURL("C:\Documents and Settings\Dan\test.ods") doc.storeAsURL(sURL, Array())
Array()
opět dává možnosti, jak soubor uložit. Možnosti jsou stejné jako při otevírání dokumentu.