Sun Microsystems
Termékek
 
Támogatás
 
 

Előző Előző     Tartalom     Tárgymutató     Következő Következő

A karakter- és bekezdéstulajdonságok alapértelmezett értékei

A közvetlen formázás mindig elsőbbséget élvez a közvetett formázással szemben. Más szóval a sablonokat használó formázás hozzárendelése kisebb prioritású, mint a közvetlen formázásé.

Annak megállapítása, hogy egy adott dokumentumszakasz közvetlenül vagy közvetetten van formázva, nem egyszerű. A StarOffice eszköztárán láthatók a leggyakoribb szövegtulajdonságok, mint például a betűtípus, -súly és ?méret. De az, hogy az adott beállítások sablonokon vagy közvetlen formázáson alapulnak ebből nem látható.

A StarOffice Basic rendelkezik egy getPropertyState metódussal, amellyel a programozó meg tudja állapítani, egy adott tulajdonság hogyan van formázva. A metódusnak paraméterként a tulajdonság nevét kell megadni, és visszaad egy állandót, amely információt nyújt a formázás eredetéről. A következő, com.sun.star.beans.PropertyState enumerációjában megadott visszatérési értékek lehetségesek:

  • com.sun.star.beans.PropertyState.DIRECT_VALUE - a tulajdonság közvetlenül a szövegben van megadva (közvetlen formázás);

  • com.sun.star.beans.PropertyState.DEFAULT_VALUE - a tulajdonságot egy sablon formázza (közvetett formázás);

  • com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE - a tulajdonság formázása nem egyértelmű. Ez akkor lehetséges, ha például beolvassuk egy bekezdés félkövér-tulajdonságát, amely félkövér és normál szavakat is tartalmaz.

A következő példa bemutatja, hogyan szerkeszthetők a formázási tulajdonságok a StarOffice programban. A program megkeresi a szövegben a félkövérként megjelenő bekezdésrészleteket, amelyeket közvetlen formázással formáztak. Ha talál ilyen bekezdésrészletet, akkor törli a közvetlen formázást a setPropertyToDefault metódussal, és hozzárendeli a Félkövér karaktersablont az adott bekezdésrészhez.

Dim Doc As Object   

Dim Enum1 As Object

Dim Enum2 As Object

Dim TextElement As Object

Dim TextPortion As Object



Doc = StarDesktop.CurrentComponent

Enum1 = Doc.Text.createEnumeration



' a ciklus végiglépdel az összes bekezdésen

While Enum1.hasMoreElements

   TextElement = Enum1.nextElement

   If TextElement.supportsService("com.sun.star.text.Paragraph") Then

      Enum2 = TextElement.createEnumeration

         

      ' a ciklus végiglépdel az összes bekezdésrészen

      While Enum2.hasMoreElements

         TextPortion = Enum2.nextElement

         If TextPortion.CharWeight = _

           com.sun.star.awt.FontWeight.BOLD AND _

           TextPortion.getPropertyState("CharWeight") = _

           com.sun.star.beans.PropertyState.DIRECT_VALUE Then



            TextPortion.setPropertyToDefault("CharWeight")

            TextPortion.CharStyleName = "Félkövér" 



         End If



      Wend



   End If



Wend

Szöveges dokumentumok szerkesztése

Az előző részek már leírták a szöveges dokumentumok szerkesztésének számos módját, főleg a com.sun.star.text.TextPortion és a com.sun.star.text.Paragraph szolgáltatást, amelyek hozzáférést biztosítanak a bekezdésrészekhez, illetve a bekezdésekhez. Ezek a szolgáltatások olyankor megfelelőek, ha a szöveget egy menetben, egy ciklussal akarjuk szerkeszteni. Viszont ez nem minden helyzetben elegendő. A StarOffice tartalmaz egy com.sun.star.text.TextCursor szolgáltatást a bonyolultabb feladatok elvégzéséhez, beleértve a dokumentumokban visszafelé történő navigálást és a TextPortions helyett szavakon és mondatokon alapuló navigálást.

A TextCursor

A TextCursor a StarOffice API-ban hasonló, mint a StarOffice-dokumentumban használt látható kurzor. Egy adott pontot jelöl a szöveges dokumentumban, és különböző irányokban mozgatható a megfelelő parancsok használatával. A StarOffice Basic TextCursor objektumát nem szabad összetéveszteni a látható kurzorral. Ez két különböző dolog.


Megjegyzés - A VBA-ban használt terminológiától való eltérések: A működését tekintve a VBA Range objektuma hasonlít a StarOffice TextCursor objektumára, és nem -- bár a neve ezt sugallja -- a StarOffice Range objektuma.

Például a StarOffice TextCursor objektuma olyan metódusokat biztosít a szövegben történő navigáláshoz és a szöveg módosításához, amelyek a VBA Range objektumában találhatók meg (például MoveStart, MoveEnd, InsertBefore és InsertAfter). A StarOffice TextCursor objektumának fenti VBA-függvényeknek megfelelő függvényei a következő részekben kerülnek ismertetésre.


Navigálás a szövegben

A StarOffice Basic TextCursor objektuma független a szöveges dokumentumban látható kurzortól. A TextCursor objektum programvezérelt pozíciómódosítása nincs semmilyen hatással a látható kurzorra. Számos TextCursor objektum megnyitható ugyanabban a dokumentumban, és használható különböző pozíciókban, amelyek függetlenek egymástól.

A TextCursor objektumot a createTextCursor metódussal lehet létrehozni:

Dim Doc As Object

Dim Cursor As Object



Doc = StarDesktop.CurrentComponent

Cursor = TextDocument.Text.createTextCursor()

Az így létrehozott Cursor objektum támogatja a com.sun.star.text.TextCursor szolgáltatást, amely számos metódust biztosít a szöveges dokumentumokban történő navigáláshoz. A következő példa először balra mozgatja tíz karakterrel a TextCursort, majd három karakterrel jobbra.

Cursor.goLeft(10, False)

Cursor.goRight(3, False)

A TextCursor kijelölhet egy teljes területet is. Ez ahhoz hasonló, mint amikor kijelölünk egy részt az egérrel. A False paraméter ez előző függvényben azt adja meg, hogy ki legyen-e jelölve a kurzor által bejárt terület. Például a TextCursor a

Cursor.goLeft(10, False)

Cursor.goRight(3, True)

kódban először tíz karaktert mozog jobbra kijelölés nélkül, majd három karaktert vissza, amelyeket ki is jelöl. Így a TextCursor által kijelölt terület a hetedik karakter után kezdődik a szövegben, és a tizedik karakter után ér véget.

Az alábbiakban láthatók a com.sun.star.text.TextCursor szolgáltatás főbb metódusai, amelyek a navigációra szolgálnak:

  • goLeft (Karakterszám, Kijelölés) - balra lép Karakterszám karaktert.

  • goRight (Karakterszám, Kijelölés) - balra lép Karakterszám karaktert.

  • gotoStart (Kijelölés) - a szöveges dokumentum elejére ugrik.

  • gotoEnd (Kijelölés) - a szöveges dokumentum végére ugrik.

  • gotoRange (TextRange, Kijelölés) - a megadott TextRange objektumra ugrik.

  • gotoStartOfWord (Kijelölés) - az aktuális szó elejére ugrik.

  • gotoEndOfWord (Kijelölés) - az aktuális szó végére ugrik.

  • gotoNextWord (Kijelölés) - a következő szó elejére ugrik.

  • gotoPreviousWord (Kijelölés) - az előző szó elejére ugrik.

  • isStartOfWord () - True (igaz) értéket ad vissza, ha a TextCursor egy szó elején áll.

  • isEndOfWord () - True (igaz) értéket ad vissza, ha a TextCursor egy szó végén áll.

  • gotoStartOfSentence (Kijelölés) - az aktuális mondat elejére ugrik.

  • gotoEndOfSentence (Kijelölés) - az aktuális mondat végére ugrik.

  • gotoNextSentence (Kijelölés) - a következő mondat elejére ugrik.

  • gotoPreviousSentence (Kijelölés) - az előző mondat elejére ugrik.

  • isStartOfSentence () - True (igaz) értéket ad vissza, ha a TextCursor egy mondat elején áll.

  • isEndOfSentence () - True (igaz) értéket ad vissza, ha a TextCursor egy mondat végén áll.

  • gotoStartOfParagraph (Kijelölés) - az aktuális bekezdés elejére ugrik.

  • gotoEndOfParagraph (Kijelölés) - az aktuális bekezdés végére ugrik.

  • gotoNextParagraph (Kijelölés) - a következő bekezdés elejére ugrik.

  • gotoPreviousParagraph (Kijelölés) - az előző bekezdés elejére ugrik.

  • isStartOfParagraph () - True (igaz) értéket ad vissza, ha a TextCursor egy bekezdés elején áll.

  • isEndOfParagraph () - True (igaz) értéket ad vissza, ha a TextCursor egy bekezdés végén áll.

Előző Előző     Tartalom     Tárgymutató     Következő Következő