Szöveges dokumentumok: Több, mint szöveg

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png


Eddig a fejezet csak a szövegbekezdésekkel és azok részeivel foglalkozott. De a szöveges objektumok ezenfelül más objektumokat is tartalmazhatnak. Ezek közé tartoznak a táblázatok, szövegmezők és jegyzékek. Ezek az objektumok a szöveg bármelyik pontján beszúrhatók.

A közös funkcióknak köszönhetően az Apache OpenOffice programban ezen objektumok mindegyike támogatja a com.sun.star.text.TextContent nevű közös alapszolgáltatást. Ez a következő tulajdonságokat biztosítja:

AnchorType (enumeráció)
a TextContent objektum rögzítési típusa (a com.sun.star.text.TextContentAnchorType enumerációnak megfelelő alapértelmezett értékek).
AnchorTypes (enumerációsorozat)
a speciális TextContent objektumot tartalmazó összes AnchorTypes objektum enumerációja.
TextWrap (enumeráció)
a szöveg körbefolyatását határozza meg a TextContent objektum körül (a com.sun.star.text.WrapTextMode enumerációnak megfelelő alapértelmezett értékek).

A TextContent objektumoknak szinték közös néhány metódusa – lényegében az objektumok létrehozása, beszúrása és törlése.

  • Az TextContent objektum a dokumentumobjektum createInstance metódusával hozható létre.
  • Egy objektum a szövegobjektum insertTextContent metódusával szúrható be.
  • A TextContent objektumok a removeTextContent metódussal törölhetők.

A következő részekben számos példát találunk ezen metódusok használatára.

Táblázatok

A következő példa egy táblázatot hoz létre az előzőekben ismertetett createInstance metódus használatával.

Dim Doc As Object   
Dim Table As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Table, False)

Létrehozás után az initialize metódus beállítja a táblázat sorainak és oszlopainak számát, majd a insertTextContent metódus beszúrja a táblázatot a szövegbe.

Ahogy a példában is látható, az insertTextContent metódus nem csak a beszúrni kívánt Content objektumot várja paraméterként, hanem két másik paramétert is:

  • egy Cursor objektumot, amely meghatározza a beszúrás pozícióját;
  • egy logikai értéket, amely megadja, hogy a kurzor által kijelölt részt lecserélje-e a Content objektum (True (igaz) érték), vagy az elé legyen beszúrva (False (hamis) érték).
Documentation note.png Amikor táblázatokat hozunk létre szöveges dokumentumokban vagy szúrunk be azokba, a VBA-ban rendelkezésre álló objektumokhoz hasonló objektumokat használunk az Apache OpenOffice Basicben: Az Apache OpenOffice Basic dokumentumobjektuma és TextCursor objektuma vagy a VBA-beli megfelelője, a Range objektum. Míg a VBA-ban a Document.Tables.Add metódus hajtja végre a táblázat létrehozását és beállítását, a létrehozást az Apache OpenOffice Basicben az előző példán bemutatottaknak megfelelően a createInstance metódus végzi, az inicializálást és a dokumentumba történő beszúrást pedig az insertTextContent metódus.

A szöveges dokumentumba beszúrt táblázatok egy egyszerű ciklussal felismerhetők. Ebből a célból használjuk a szövegesdokumentum-objektum getTextTables() metódusát:

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object
Dim I As Integer
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
 
   Table = TextTables(I)
   ' Táblázat szerkesztése
 
Next I
Documentation note.png Az Apache OpenOffice programban a szöveges táblázatok a dokumentumobjektum TextTables listáján keresztül érhetők el. Az előző példa bemutatja, hogyan hozható létre egy szöveges táblázat. A szöveges táblázatok elérésére használt lehetőségeket a következő rész írja le.

Táblázatok szerkesztése

Egy táblázat önálló sorokból áll. Ezek pedig cellákból. Szigorúan véve nincsenek táblaoszlopok az Apache OpenOffice programban. Az oszlopokat az hozza létre, hogy a sorok egymás alá vannak rendezve. Ennek ellenére a táblázatokkal végzett munka megkönnyítésére az Apache OpenOffice biztosít metódusokat, amelyek oszlopokat használnak. Ezek akkor hasznosak, ha egy cella sincs összevonva egy másikkal a táblázatban.

Először tekintsük át magának a táblázatnak a tulajdonságait. Ezek a com.sun.star.text.TextTable szolgáltatásban vannak definiálva. Az alábbiakban láthatók a táblázatobjektum legfontosabb tulajdonságai:

BackColor (hosszú egész szám)
a táblázat háttérszíne.
BottomMargin (hosszú egész szám)
az alsó margó századmilliméterben.
LeftMargin (hosszú egész szám)
a bal margó századmilliméterben.
RightMargin (hosszú egész szám)
a jobb margó századmilliméterben.
TopMargin (hosszú egész szám)
felső margó századmilliméterben.
RepeatHeadline (logikai érték)
a táblázat fejlécének megismétlése minden oldalon.
Width (hosszú egész szám)
a táblázat abszolút szélessége századmilliméterben.

Sorok

A táblázat egy sorokat tartalmazó listából áll. A következő példa bemutatja, hogyan olvashatók be és formázhatók a táblázat sorai.

Dim Doc As Object
Dim Table As Object
Dim Cursor As Object
Dim Rows As Object
Dim Row As Object
Dim I As Integer
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Table, False)
Rows = Table.getRows
For I = 0 To Rows.getCount() - 1
   Row = Rows.getByIndex(I)
   Row.BackColor = &HFF00FF
Next

A példaprogram először a Table.getRows metódussal létrehoz egy listát, amely tartalmazza az összes sort. A com.sun.star.table.XtableRows felülethez tartozó getCount és a getByIndex metódus segítségével a lista tovább feldolgozható. A getByIndex metódus visszaad egy sorobjektumot, amely támogatja a com.sun.star.text.TextTableRow szolgáltatást.

Az alábbiakban láthatók a com.sun.star.table.XtableRows felület főbb metódusai:

getByIndex(egész szám)
visszaadja a megadott indexhez tartozó sorobjektumot.
getCount()
visszaadja a sorobjektumok számát.
insertByIndex(Index, Darabszám)
az Index pozícióban beszúr Darabszám sort a táblázatba.
removeByIndex(Index, Darabszám)
az Index pozíciótól töröl Darabszám sort a táblázatból.

Míg a getByIndex és a getCount metódus elérhető minden táblázatban, addig az insertByIndex és a removeByIndex metódus csak az összevont cellákat nem tartalmazó táblázatokban használható.

A com.sun.star.text.TextTableRow szolgáltatás a következő tulajdonságokat biztosítja:

BackColor (hosszú egész szám)
a sor háttérszíne.
Height (hosszú egész szám)
a sor magassága századmilliméterben.
IsAutoHeight (logikai érték)
a táblázat magassága dinamikusan igazodik a tartalomhoz.
VertOrient (állandó)
a szövegkeret függőleges tájolása – a szöveg táblázaton belüli függőleges tájolásának részletei (a com.sun.star.text.VertOrientation objektumnak megfelelő értékek).

Oszlopok

Az oszlopokat ugyanúgy lehet elérni, mint a sorokat; a getColumns metódussal visszakapott Column objektumon végrehajtott getByIndex, getCount, insertByIndex és removeByIndex metódussal. Viszont ezek a metódusok csak összevont cellákat nem tartalmazó táblázatokon használhatók. A cellák nem formázhatók oszlopok szerint az Apache OpenOffice Basicben. Ha így akarunk tenni, az egyes cellákat kell külön formázni.

Cellák

Az Apache OpenOffice-dokumentum minden cellája egyedi névvel rendelkezik. Ha az Apache OpenOffice kurzora egy cellában áll, a cella neve megjelenik az állapotsorban. Általában a bal felső cella neve A1, és a jobb alsóé Xn, ahol az X az utolsó oszlop betűi, az n pedig az utolsó sor száma. A cellaobjektumok a táblaobjektum getCellByName() metódusán keresztül érhetők el. A következő példa bemutat egy ciklust, amely végiglépdel egy táblázat minden celláján, és beírja a sor- és oszlopszámokat a megfelelő cellákba.

Dim Doc As Object
Dim Table As Object
Dim Cursor As Object
Dim Rows As Object
Dim RowIndex As Integer
Dim Cols As Object
Dim ColIndex As Integer
Dim CellName As String
Dim Cell As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
Table = Doc.createInstance("com.sun.star.text.TextTable")
Table.initialize(5, 4)
 
Doc.Text.insertTextContent(Cursor, Table, False)
 
Rows = Table.getRows
Cols = Table.getColumns
 
For RowIndex = 1 To Rows.getCount()
   For ColIndex = 1 To Cols.getCount()
      CellName = Chr(Asc("A") - 1 + ColIndex) & RowIndex
      Cell = Table.getCellByName(CellName)
      Cell.String = "sor: " & CStr(RowIndex) + ", oszlop: " & CStr(ColIndex)
   Next
Next

A táblacella hasonlít a normál szövegre. Támogatja a createTextCursor felületet a TextCursor objektum létrehozásához.

CellCursor = Cell.createTextCursor()

Így a karakterek és bekezdések formázási lehetőségei automatikusan rendelkezésre állnak.

A következő példa megkeresi egy szöveges dokumentum táblázataiban a számot tartalmazó cellákat, és azok bekezdéstulajdonságát jobbra igazítottra formázza.

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object
Dim CellNames
Dim Cell As Object
Dim CellCursor As Object
Dim I As Integer
Dim J As Integer
 
Doc = StarDesktop.CurrentComponent
TextTables = Doc.getTextTables()
 
For I = 0 to TextTables.count - 1
   Table = TextTables(I)
   CellNames = Table.getCellNames()
 
   For J = 0 to UBound(CellNames)
      Cell = Table.getCellByName(CellNames(J))
      If IsNumeric(Cell.String) Then
         CellCursor = Cell.createTextCursor()
         CellCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
      End If
   Next
Next

A példaprogram létrehoz egy TextTables listát, amely tartalmazza egy szöveges dokumentum összes táblázatát, amelyeket egy ciklus gyűjt ki. Az Apache OpenOffice ezután létrehozza az összes táblázat cellaneveit tartalmazó listát. Ezután ezeket végignézi egy ciklussal. Ha egy cella numerikus értéket tartalmaz, akkor a program ennek megfelelően formázza. Ehhez először létrehoz egy TextCursor objektumot, amely a táblázatcella tartalmára hivatkozik, majd beállítja a táblázatcella bekezdéstulajdonságait.

Szövegkeretek

A szövegkeretek, akárcsak a táblázatok és az ábrák, TextContent objektumok. Normál szöveget tartalmazhatnak, de bárhová elhelyezhetők az oldalon, és nem részei a folyamatos szövegnek.

Mint minden TextContent objektumnál, a szövegkereteknél is meg van különböztetve a tényleges létrehozás és a dokumentumba való beszúrás.

Dim Doc As Object
Dim TextTables As Object
Dim Cursor As Object
Dim Frame As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Doc.Text.insertTextContent(Cursor, Frame, False)

A program létrehozza a szövegkeretet a dokumentumobjektum createInstance metódusával. Az így létrehozott szövegkeret beszúrható a dokumentumba a Text objektum insertTextContent metódusával. Ilyenkor a megfelelő com.sun.star.text.TextFrame-szolgáltatás nevét kell megadni.

A szövegkeret beszúrási pozícióját a Cursor objektum határozza meg, amely szintén végrehajtásra kerül beszúráskor.

Documentation note.png A szövegkeretek az Apache OpenOffice-megfelelői a Wordben használt pozicionáló kereteknek. Míg a VBA a Document.Frames.Add metódust használja erre a célra, addig az Apache OpenOffice Basic az előző eljárást használja a TextCursor objektummal, valamint a dokumentumobjektum createInstance metódusát.

A szövegkeret-objektumok számos tulajdonságot biztosítanak, amelyekkel a keret pozíciója és viselkedése befolyásolható. A tulajdonságok legtöbbje a com.sun.star.text.BaseFrameProperties szolgáltatásban van definiálva, amelyet minden TextFrame szolgáltatás támogat. A főbb tulajdonságok a következők:

BackColor (hosszú egész szám)
a szövegkeret háttérszíne.
BottomMargin (hosszú egész szám)
az alsó margó századmilliméterben.
LeftMargin (hosszú egész szám)
a bal margó századmilliméterben.
RightMargin (hosszú egész szám)
a jobb margó századmilliméterben.
TopMargin (hosszú egész szám)
felső margó századmilliméterben.
Height (hosszú egész szám)
a szövegkeret magassága századmilliméterben.
Width (hosszú egész szám)
a szövegkeret szélessége századmilliméterben.
HoriOrient (állandó)
a szövegkeret vízszintes tájolása (a com.sun.star.text.HoriOrientation tulajdonságnak megfelelően).
VertOrient (állandó)
a szövegkeret függőleges tájolása (a com.sun.star.text.VertOrientation tulajdonságnak megfelelően).

A következő példa létrehoz egy szövegkeretet az előzőleg ismertetett tulajdonságok használatával:

Dim Doc As Object   
Dim TextTables As Object
Dim Cursor As Object
Dim Frame As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Cursor.gotoNextWord(False)
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
 
Frame.Width = 3000
Frame.Height = 1000
Frame.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
Frame.TopMargin = 0
Frame.BottomMargin = 0
Frame.LeftMargin = 0
Frame.RightMargin = 0
Frame.BorderDistance = 0
Frame.HoriOrient = com.sun.star.text.HoriOrientation.NONE
Frame.VertOrient = com.sun.star.text.VertOrientation.LINE_TOP
 
Doc.Text.insertTextContent(Cursor, Frame, False)

Ez a példa létrehoz egy TextCursor objektumot a szövegkeret beszúrási pontjaként. Ez a szöveg első és második szava közé kerül. A szövegkeret a program a Doc.createInstance metódussal hozza létre. Ezután a szövegkeret-objektumok tulajdonságait a megfelelő értékekre állítja.

Itt kell felhívni a figyelmet az AnchorType tulajdonság (a TextContent szolgáltatásból) és a VertOrient tulajdonság (a BaseFrameProperties szolgáltatásból) tulajdonság közötti interakcióra. Az AnchorType tulajdonság értéke AS_CHARACTER lesz. Ezért a szövegkeret közvetlenül a folyamatos szövegbe kerül, és karakterként viselkedik. Például átvihető a következő sorba egy sortöréssel. A VertOrient tulajdonság LINE_TOP értéke biztosítja, hogy a szövegkeret felső széle ugyanolyan magasan legyen, mint a karakter felső széle.

Ha az inicializálás befejeződött, a keret végül bekerül a szöveges dokumentumba a insertTextContent metódus meghívásával.

A szövegkeret tartalmát a már többször említett TextCursor objektummal lehet elérni, amely a szövegkereteknél is rendelkezésre áll.

Dim Doc As Object   
Dim TextTables As Object
Dim Cursor As Object
Dim Frame As Object
Dim FrameCursor As Object
 
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
 
Frame.Width = 3000
Frame.Height = 1000
 
Doc.Text.insertTextContent(Cursor, Frame, False)
 
FrameCursor = Frame.createTextCursor()
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD
FrameCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.CENTER
FrameCursor.String = "Ez egy teszt!"

A példaprogram létrehoz egy szövegkeretet, beszúrja az aktuális dokumentumba, és megnyitja a szövegkeret TextCursor objektumát. Ezzel a kurzorobjektummal félkövérre állítja a betűtípust, és beállítja a bekezdés igazítását középre. Ezután a szövegkerethez az „Ez egy teszt!” karakterláncot rendeli.

Szövegmezők

A szövegmezők TextContent objektumok, mert további funkcionalitást biztosítanak a sima szövegen kívül. A szövegmezők ugyanazokkal a metódusokkal szúrhatók be egy szöveges dokumentumba, mint a TextContent objektumok:

Dim Doc As Object   
Dim DateTimeField As Object
Dim Cursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
 
DateTimeField = Doc.createInstance("com.sun.star.text.TextField.DateTime")
DateTimeField.IsFixed = False
DateTimeField.IsDate = True
Doc.Text.insertTextContent(Cursor, DateTimeField, False)

A példaprogram beszúr egy szövegmezőt az aktuális dátummal az aktuális szöveges dokumentum elejére. Az IsDate tulajdonság True (igaz) értéke miatt csak a dátum jelenik meg, az idő nem. Az IsFixed tulajdonság False értéke biztosítja, hogy a dátum mindig frissítve legyen a dokumentum megnyitásakor.

Documentation note.png Míg a VBA-ban a mezőt típusát a Document.Fields.Add metódus egyik paramétere határozza meg, addig az Apache OpenOffice Basicben a mezőtípust meghatározó szolgáltatás neve definiálja a mező típusát.

Régebben a szövegmezőket az Apache OpenOffice programban a régi Selection objektum számos metódusával lehetett elérni, (például InsertField, DeleteUserField és SetCurField).

Az Apache OpenOffice 2.x verziókban a mezőket objektumorientált megközelítéssel lehet kezelni. Szövegmező létrehozásához először létre kell hozni egy kívánt típusú szövegmezőt, majd inicializálni azt a megfelelő tulajdonságokkal. Ezután a szövegmezőt az insertTextContent metódussal kell a szövegbe beszúrni. Az erre vonatkozó forráskód az előző példában látható. A legfontosabb mezőtípusok és azok tulajdonságai a következő részekben vannak ismertetve.

A szövegmezők beszúrásán felül, a mezők dokumentumban való keresése is fontos feladat. A következő példa bemutatja, hogyan lehet egy ciklussal végiglépdelni egy dokumentum szövegmezőin, és ellenőrizni azok típusát.

Dim Doc As Object   
Dim TextFieldEnum As Object
Dim TextField As Object
Dim I As Integer
 
Doc = StarDesktop.CurrentComponent
 
TextFieldEnum = Doc.getTextFields.createEnumeration
 
While TextFieldEnum.hasMoreElements()
 
   TextField = TextFieldEnum.nextElement()
 
   If TextField.supportsService("com.sun.star.text.textfield.DateTime") Then
      MsgBox "Dátum/idő"
   ElseIf TextField.supportsService("com.sun.star.text.textfield.Annotation") Then
      MsgBox "Jegyzet"
   Else
      MsgBox "ismeretlen"
   End If
 
Wend

A meglévő szövegmezők beolvasásának kezdőpontja a dokumentumobjektum TextFields listája. Ez a példa létrehoz egy Enumeration objektumot a lista alapján, amellyel le lehet kérdezni az összes szövegmezőt egy ciklusban. A talált szövegmezők által támogatott szolgáltatásokat ellenőrzi a program a supportsService metódussal. Ha a mező egy dátum-/időmező vagy egy jegyzet, akkor az adott mezőtípus megjelenik egy ablakban. Ha viszont másmilyen típusú a mező, akkor az „ismeretlen” üzenet jelenik meg.

Az alábbiakban láthatjuk a legfontosabb mezők és azok tulajdonságainak listáját. A szövegmezők teljes listája a com.sun.star.text.textfield modulban lévő API-hivatkozásban található. (Egy szövegmező szolgáltatásnevének listázásakor a kis- és nagybetűk meg vannak különböztetve az Apache OpenOffice Basicben, ahogy az az előző példában látható.)

Oldalak, szavak és karakterek száma

A

szövegmezők az oldalak, szavak vagy karakterek számát adják vissza. A következő tulajdonságokat támogatják:

NumberingType (állandó)
számformátum (a com.sun.star.style.NumberingType állandóinak megfelelően).

Aktuális oldal

Az aktuális oldal száma a com.sun.star.text.textfield.PageNumber szövegmező használatával szúrható be a dokumentumba. A következő tulajdonságok adhatók meg:

NumberingType (állandó)
számformátum (a com.sun.star.style.NumberingType állandóinak megfelelően).
Offset (rövid egész szám)
az oldalak számához adott eltolás (negatív szám is megadható).

A következő példa bemutatja hogyan jeleníthető meg az oldalszám a dokumentum élőlábában.

Dim Doc As Object   
Dim DateTimeField As Object
Dim PageStyles As Object
Dim StdPage As Object
Dim FooterCursor As Object
Dim PageNumber As Object
 
Doc = StarDesktop.CurrentComponent
 
PageNumber = Doc.createInstance("com.sun.star.text.textfield.PageNumber")
PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC
 
PageStyles = Doc.StyleFamilies.getByName("PageStyles")
 
StdPage = PageStyles("Default")
StdPage.FooterIsOn = True
 
FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()
StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)

A példaprogram először létrehoz egy mezőt, amely támogatja a com.sun.star.text.textfield.PageNumber szolgáltatást. Mivel az élőfej és az élőláb az Apache OpenOffice oldalsablonjainak része, ezt először a PageStyles listával lehet létrehozni.

Az élőláb megjelenítéséhez a FooterIsOn tulajdonságot True (igaz) értékre kell állítani. Ezután a program beszúrja a szövegmezőt a dokumentumba a bal oldali élőláb megfelelő szövegobjektumával.

Jegyzetek

A jegyzetmezők (com.sun.star.text.textfield.Annotation) kis sárga szimbólumként jelennek meg a szövegben. Ha kattintunk erre a szimbólumra, megnyílik egy szövegmező, amelybe megjegyzés írható az adott szövegrészről. A jegyzetmező a következő tulajdonságokkal rendelkezik.

Author (karakterlánc)
a szerző neve.
Content (karakterlánc)
a megjegyzés szövege.
Date (dátum)
a jegyzet írásának dátuma.

Dátum / Idő

A dátum-/időmező (com.sun.star.text.textfield.DateTime) az aktuális dátumot vagy időt jeleníti meg. A következő tulajdonságokat támogatja:

IsFixed (logikai)
ha értéke True (igaz), a beszúrás időadatai nem változnak, ha viszont False (hamis), akkor ezek frissítve lesznek a dokumentum minden megnyitásakor.
IsDate (logikai)
ha értéke True (igaz), akkor a mező az aktuális dátumot jeleníti meg, egyébként pedig az aktuális időt.
DateTimeValue (struktúra)
a mező aktuális értéke (com.sun.star.util.DateTime structure).
NumberFormat (állandó)
az idő vagy dátum megjelenítésének formátuma.

Fejezetcím/-szám

Az aktuális fejezet neve elérhető a com.sun.star.text.textfield.Chapter típusú szövegmezővel. A formátum két tulajdonsággal adható meg

ChapterFormat (állandó)
meghatározza, hogy a fejezet neve vagy száma jelenjen-e meg (a com.sun.star.text.ChapterFormat tulajdonságnak megfelelően)
Level (egész szám)
azt a fejezetszintet határozza meg, amelynek nevét és/vagy számát meg kell jeleníteni. A 0 érték a legfelső elérhető szintet jelzi.

Könyvjelzők

A könyvjelzők (com.sun.star.text.Bookmark szolgáltatás) TextContent objektumok. A könyvjelzők a már előzőleg ismertetett módon hozhatók létre és szúrhatók be:

Dim Doc As Object   
Dim Bookmark As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
 
Cursor = Doc.Text.createTextCursor()
 
Bookmark = Doc.createInstance("com.sun.star.text.Bookmark")
Bookmark.Name = "Saját könyvjelzők"
Doc.Text.insertTextContent(Cursor, Bookmark, True)

A példaprogram létrehoz egy Cursor objektumot, amely a könyvjelző beszúrási pontját jelöli, majd létrehozza magát a könyvjelzőobjektumot (Bookmark). Ezután a könyvjelzőhöz rendel egy nevet, és beszúrja a dokumentumba az insertTextContent metódussal a kurzorpozícióban.

A szöveg könyvjelzőit a Bookmarks lista segítségével lehet elérni. A könyvjelzőket a nevük vagy számuk alapján lehet elérni.

A következő példa bemutatja, hogyan kereshető meg egy könyvjelző a szövegen belül, és hogyan szúrható be szöveg a helyére.

Dim Doc As Object   
Dim Bookmark As Object
Dim Cursor As Object
 
Doc = StarDesktop.CurrentComponent
 
Bookmark = Doc.Bookmarks.getByName("Saját könyvjelzők")
 
Cursor = Doc.Text.createTextCursorByRange(Bookmark.Anchor)
Cursor.String = "Itt van a könyvjelző."

Ebben a példában a getByName metódussal keresi meg a program a neve szerint a könyvjelzőt. Ezután a createTextCursorByRange metódus létrehoz egy Cursor objektumot, amelyet a könyvjelző pozíciójába szúr be. Ezután a kurzorobjektum beszúrja a kívánt szöveget ezen a helyen.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools