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 a StarOffice Basic programban. Ha így akarunk tenni, az egyes cellákat kell külön formázni.
Cellák
A StarOffice-dokumentum minden cellája egyedi névvel rendelkezik. Ha a StarOffice 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(64 + ColIndex) & RowIndex
Cell = Table.getCellByName(CellName)
Cell.String = "sor: " & CStr(RowIndex) + ", oszlop: " & CStr(ColIndex)
Next
Next
|
|