Sun Microsystems
Termékek
 
Támogatás
 
 

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

Megjegyzés - Az itt ismertetett, szöveg bekezdéseihez való hozzáférést biztosító eljárás tartalma hasonló a VBA-ban használt Paragraphs listához, amely az ott rendelkezésre álló Range és Document objektumon keresztül érhető el. Míg a VBA-ban a bekezdésekhez a számuk alapján lehet hozzáférni (például a Paragraph(1) függvénnyel), a StarOffice Basic programban az előbbiekben ismertetett Enumeration objektumot kell használni.

A StarOffice Basic programban nincs közvetlen megfelelője a VBA-ban rendelkezésre álló Characters, Sentences és Words listáknak. Viszont megvan a lehetőségünk, hogy átváltsunk egy TextCursor objektumra, amellyel lehetővé válik a karakter-, szó- és mondatszintű navigáció (részletesebben lásd: A TextCursor című rész).


Bekezdésrészek

Lehet, hogy az előző példa megfelelően lecseréli a szöveget, de néha előfordulhat, hogy elrontja a formázást.

Ez azért fordulhat elő, mert egy bekezdés különálló alobjektumokból áll. Ezek mindegyike saját formázási információkat tartalmaz. Ha például a bekezdés közepe egy félkövér szót tartalmaz, akkor ez a StarOffice programban három bekezdésrészként fog megjelenni: a félkövér betűtípus előtti rész, majd a félkövér szó, és végül a félkövér betűtípus utáni rész, amely normálként ismét jelenik meg.

Ha most a bekezdés szövegét módosítjuk a bekezdés String tulajdonságával, akkor a StarOffice először törli a régi bekezdésrészeket, majd egy új bekezdésrészt szúr be. Az eredeti rész formázása ezután el fog tűnni.

Ha meg akarjuk tartani a formázást, elérhetjük az adott bekezdésrészeket is a teljes bekezdése helyett. A bekezdések rendelkeznek saját Enumeration objektummal ebből a célból. A következő példa egy dupla ciklust mutat be, amely végiglépdel a szöveges dokumentum összes bekezdésén és azok bekezdésrészein, majd alkalmazza az előző példában megismert cseréket:

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

         MsgBox "'" & TextPortion.String & "'"

         TextPortion.String = Replace(TextPortion.String, "úgynevezett", "ún.") 

         TextPortion.String = Replace(TextPortion.String, "satöbbi", "stb.") 

         TextPortion.String = Replace(TextPortion.String, "satöbbi", "stb.") 



      Wend



   End If



Wend

A példa egy kettős ciklussal lépdel végig a szöveges dokumentumon. A külső ciklus a szöveg bekezdésein lépdel végig. A belső ciklus ezeknek a bekezdéseknek a részeit dolgozza fel. A példában bemutatott kód módosítja a bekezdésrészek tartalmát a bekezdésrész String tulajdonságának használatával, akárcsak az előző példa a bekezdésekkel. Viszont mivel itt közvetlenül a bekezdésrészeket módosítja a program, így a formázásuk megmarad a szöveg cseréje után.

Formázás

A szöveget többféleképpen formázhatjuk. A legegyszerűbb mód, ha a formázási tulajdonságokat közvetlenül egy szövegrészhez rendeljük. Ezt hívják közvetlen formázásnak. A közvetlen formázás főleg a rövid szövegeknél használatos, mert ott a felhasználó az egérrel el tudja végezni a formázást. Például kiemelhetünk egy szót a szövegen belül a félkövér betűtípussal, vagy középre igazíthatunk egy vonalat.

A közvetlen formázás mellett, formázhatjuk a szöveget sablonok használatával is. Ezt hívják közvetett formázásnak. A közvetett formázásnál egy előre definiált sablont rendelünk az adott szövegrészhez. Ha a szöveg megjelenését később módosítani kell, csak a sablont kell módosítanunk, a StarOffice ezután módosítja az összes olyan szövegrész megjelenését, amely ezt a sablont használja.


Megjegyzés - A VBA-ban egy objektum formázási tulajdonságai általában több alobjektum között oszlanak szét (például Range.Font, Range.Borders, Range.Shading és Range.ParagraphFormat). A tulajdonságokat kaszkádolt kifejezések formájában lehet elérni (például Range.Font.AllCaps). Ezzel szemben a StarOffice Basic programban a formázási tulajdonságok közvetlenül, a megfelelő objektumok használatával érhetők el (TextCursor, Paragraph stb.). A következő két szakasz áttekintést nyújt a StarOffice program karakter- és bekezdéstulajdonságairól.



Megjegyzés - A régi StarOffice API-ban a szöveget a Selection objektum használatával lehetett formázni, és annak alobjektumaival (például Selection.Font, Selection.Paragraph és Selection.Border). Az új API-ban a formázási tulajdonságok megtalálhatók minden objektumban (Paragraph, TextCursor stb.), és közvetlenül alkalmazhatók. Az elérhető karakter- és bekezdéstulajdonságok listája a következő bekezdésekben található.


Karaktertulajdonságok

Azokat a formázási tulajdonságokat, amelyek az egyes karakterekre vonatkoznak, karaktertulajdonságoknak nevezik. Ezek magukban foglalják a félkövér típust és a betűtípust. Az olyan objektumoknak, amelyek lehetővé teszik a karaktertulajdonságok beállítását, támogatniuk kell a com.sun.star.style.CharacterProperties szolgáltatást. A szolgáltatások széles skáláját felismeri, amelyek támogatják ezt a szolgáltatást. Ezek közé tartozik az előzőekben ismertetett, bekezdésekhez használható com.sun.star.text.Paragraph szolgáltatásai és a bekezdésrészekhez használható com.sun.star.text.TextPortion szolgáltatásai.

A com.sun.star.style.CharacterProperties szolgáltatás nem nyújt semmilyen felületet, csak tulajdonságokat, amelyeken keresztül a karaktertulajdonságok megadhatók és meghívhatók. A karaktertulajdonságok teljes listája megtalálható a StarOffice API-referenciában. A következő lista ismerteti a legfontosabb tulajdonságokat:

  • CharFontName (karakterlánc) - a kijelölt betűtípus neve.

  • CharColor (hosszú egész szám) - a szöveg színe.

  • CharHeight (lebegőpontos érték) - a karaktermagasság pontban (pt) megadva.

  • CharUnderline (állandócsoport) - az aláhúzás típusa (a com.sun.star.awt.FontUnderline tulajdonságnak megfelelő állandók).

  • CharWeight (állandócsoport) - a betűsúly (a com.sun.star.awt.FontWeight tulajdonságnak megfelelő állandók).

  • CharBackColor (hosszú egész szám) - a háttérszín.

  • CharKeepTogether (logikai érték) - az automatikus sortörés kikapcsolása.

  • CharStyleName (karakterlánc) - a karaktersablon neve.

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