Sun Microsystems
Termékek
 
Támogatás
 
 

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

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.


Megjegyzés - Míg a VBA-ban a mezőt típusát a Document.Fields.Add metódus egyik paramétere határozza meg, addig a StarOffice Basic programban a mezőtípust meghatározó szolgáltatás neve definiálja a mező típusát.


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

A StarOffice 8 programban 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.

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