Difference between revisions of "NO/Documentation/BASIC Guide/More Than Text"
 (Created page with '{{NO/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NO/Documentation/BASIC Guide/Editing Text Documents |NextPage=NO/Documentation/BASIC Guide/S…')  | 
				|||
| Line 6: | Line 6: | ||
|textdocs=block  | |textdocs=block  | ||
}}  | }}  | ||
| − | {{DISPLAYTITLE:  | + | {{DISPLAYTITLE:Tabeller, figurer og andre objekt.}}  | 
__NOTOC__    | __NOTOC__    | ||
Tekstdokument kan ha mer enn ren tekst i avsnitt.  Fremmedobjekt som tabeller, tegninger, tekstfelter og annet    | Tekstdokument kan ha mer enn ren tekst i avsnitt.  Fremmedobjekt som tabeller, tegninger, tekstfelter og annet    | ||
kan forankres eller flyte rundt i dokumentet.     | kan forankres eller flyte rundt i dokumentet.     | ||
| − | + | ==TextContent==  | |
Forankring styres via tjenesten <idl>com.sun.star.text.TextContent</idl> som alle objekt støtter.  | Forankring styres via tjenesten <idl>com.sun.star.text.TextContent</idl> som alle objekt støtter.  | ||
Egenskaper:  | Egenskaper:  | ||
| − | + | *<tt>AnchorType (Enum)</tt>: Hvordan objektet skal forankres (<idl>com.sun.star.text.TextContentAnchorType</idl>).  | |
| − | + | *<tt>AnchorTypes (sequence of Enum)</tt>: Alle typer forankring for objektet.  | |
| − | + | *<tt>TextWrap (Enum)</tt>: Hvordan tekst skal "omslutte" objektet (<idl>com.sun.star.text.WrapTextMode</idl>).  | |
Metoder som dokumentet tilbyr:  | Metoder som dokumentet tilbyr:  | ||
*createInstance() lager et nytt objekt som støtter <tt>TextContent</tt>.  | *createInstance() lager et nytt objekt som støtter <tt>TextContent</tt>.  | ||
| Line 21: | Line 21: | ||
*removeTextContent() fjerner et objekt fra teksten.  | *removeTextContent() fjerner et objekt fra teksten.  | ||
| − | + | ==Tabeller==  | |
Eksemplet viser innsetting av en ny tabell:  | Eksemplet viser innsetting av en ny tabell:  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | |||
| − | |||
Cursor = ThisComponent.Text.createTextCursor()  | Cursor = ThisComponent.Text.createTextCursor()  | ||
Kalender = ThisComponent.createInstance("com.sun.star.text.TextTable")  | Kalender = ThisComponent.createInstance("com.sun.star.text.TextTable")  | ||
| Line 43: | Line 41: | ||
</source>  | </source>  | ||
| − | + | Tabeller støtter <idl>com.sun.star.text.TextTable</idl> og har egenskaper  | |
| − | + | (avstander er i 1/100 mm):  | |
| − | Tabeller støtter <idl>com.sun.star.text.TextTable</idl> og har egenskaper   | + | *<tt>BackColor (Long)</tt>:  bakgrunnsfarge.  | 
| − | + | *<tt>BottomMargin (Long)</tt>:  bunnmarg.  | |
| − | + | *<tt>LeftMargin (Long)</tt>:  venstremarg.  | |
| − | + | *<tt>RightMargin (Long)</tt>:  høyremarg.  | |
| − | + | *<tt>TopMargin (Long)</tt>:  toppmarg.  | |
| − | + | *<tt>RepeatHeadline (Boolean)</tt>:  True hvis overskrift skal gjentas på hver side.    | |
| − | + | *<tt>Width (Long)</tt>:  bredde.  | |
| − | + | ===Alle rader og kolonner===  | |
| − | + | Tabellen tilbyr <tt>getRows</tt> og getColumns().  Begge gir en liste som  | |
| − | Tabellens   | + | støtter <idl>com.sun.star.table.XTableRows</idl>.  De tilbyr:  | 
| + | *<tt>getByIndex(Integer)</tt>:  enkeltobjekt.  | ||
| + | *<tt>getCount()</tt>:  antallet objekt.  | ||
| + | *<tt>insertByIndex(i, n)</tt>:  setter inn i nye objekt fra posisjon n.  | ||
| + | *<tt>removeByIndex(i, n)</tt>:  sletter n objekt fra posisjon n.  | ||
| + | OBS:  insert og remove kun hvis tabellen er fri for "merged cells".  | ||
| + | Tabellens annenhver rad får ny bakgrunnsfarge som under:  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | Cursor = ThisComponent.Text.createTextCursor()  | |
| − | + | tabell = ThisComponent.createInstance("com.sun.star.text.TextTable")  | |
| − | + | tabell.initialize(5, 4)  | |
| − | + | ThisComponent.Text.insertTextContent(Cursor, Table, False)  | |
| − | + | rader = tabell.getRows  | |
| − | + | For I = 0 To rader.getCount() - 1 Step 2  | |
| − | + |     rad = rader.getByIndex(I)  | |
| − | + |     rad.BackColor = &HFF00FF  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | For I = 0 To   | ||
| − | |||
| − | |||
Next  | Next  | ||
</source>  | </source>  | ||
| − | + | ===Enkeltrad===  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Hver rad støtter  | Hver rad støtter  | ||
<idl>com.sun.star.text.TextTableRow</idl> service og tilbyr følgende:  | <idl>com.sun.star.text.TextTableRow</idl> service og tilbyr følgende:  | ||
| − | + | *<tt>BackColor (Long)</tt>:  bakgrunnsfarge.  | |
| − | + | *<tt>Height (Long)</tt>:  høyde.  | |
| − | + | *<tt>IsAutoHeight (Boolean)</tt>:  om  høyde skal autotilpasses.  | |
| − | + | *<tt>VertOrient (const)</tt>:  vertikal justering (<idl>com.sun.star.text.VertOrientation</idl>)  | |
| − | + | ===Celler===  | |
| − | + | Hver celle har et unikt navn.  Cellen "øverst, til venstre" heter vanligvis A1, der A angir kolonne og 1 er rad.  Altså har neste kolonne navnet B.  En tabell har metoden getCellByName(n).  | |
| − | + | Eksemplet under setter verdien i tabellens celler:  | |
| − | |||
| − | |||
| − | ===   | ||
| − | |||
| − | |||
| − | |||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | Cursor = ThisComponent.Text.createTextCursor()  | |
| − | + | tabell = ThisComponent.createInstance("com.sun.star.text.TextTable")  | |
| − | + | tabell.initialize(5, 4)  | |
| − | + | ThisComonent.Text.insertTextContent(Cursor, Table, False)  | |
| − | + | rader = tabell.getRows  | |
| − | + | kolonner = tabell.getColumns  | |
| − | + | For rad = 1 To rader.getCount()  | |
| − | + |     For kol = 1 To kolonner.getCount()  | |
| − | + |        celleNavn = Chr(Asc("A") - 1 + kol) & rad  | |
| − | + |        celle = tabell.getCellByName(celleNavn)  | |
| − | + |        celle.String = "rad: " & CStr(rad) + ", kolonne: " & CStr(kol)  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | For   | ||
| − |     For   | ||
| − | |||
| − | |||
| − | |||
    Next  |     Next  | ||
Next  | Next  | ||
</source>  | </source>  | ||
| − | + | En celle ligner en vanlig tekst og tilbyr blant annet createTextCursor().  | |
| − | + | Utseendet i cellen endres som vanlig tekst.  | |
| − | + | I eksemplet under høyre-justeres alle celler med tall.  | |
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | tabellListe = ThisComponent.getTextTables()  | |
| − | + | For I = 0 to tabellListe.count - 1  | |
| − | + |     tabell = tabellListe(I)  | |
| − | + |     celleNavn = tabell.getCellNames()  | |
| − | + |     For J = 0 to UBound(celleNavn)  | |
| − | + |        celle = tabell.getCellByName( celleNavn(J) )  | |
| − | + |        If IsNumeric( celle.String ) Then  | |
| − | + |           celleCursor = celle.createTextCursor()  | |
| − | + |           celleCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | For I = 0 to   | ||
| − | |||
| − | |||
| − | |||
| − |     For J = 0 to UBound(  | ||
| − | |||
| − |        If IsNumeric(  | ||
| − | |||
| − | |||
       End If  |        End If  | ||
    Next  |     Next  | ||
Next  | Next  | ||
</source>  | </source>  | ||
| − | + | ==Innrammet tekst==  | |
| − | + | Innrammet tekst er også et flytende objekt, som tabeller og bilder, og  | |
| − | + | behandles likt med disse.    | |
| − | + | Den tilbyr <idl>com.sun.star.text.BaseFrameProperties</idl> og  | |
| − | + | har derved egenskaper som:   | |
| − | + | *BackColor (Long): bakgrunnsfarge.  | |
| − | + | *BottomMargin (Long): bunnmark.  | |
| − | + | *LeftMargin (Long): venstremark.  | |
| − | + | *RightMargin (Long): høyremark.  | |
| + | *TopMargin (Long): toppmarg.  | ||
| + | *Height (Long): høyde.  | ||
| + | *Width (Long): bredde.  | ||
| + | *HoriOrient (const): horisontal justering <idl>com.sun.star.text.HoriOrientation</idl>).  | ||
| + | *VertOrient (const): vertikal justering (<idl>com.sun.star.text.VertOrientation</idl>).  | ||
| + | I eksemplet under lages en slik ramme og stikkes inn.  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | Cursor = ThisComponent.Text.createTextCursor()  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Cursor.gotoNextWord(False)  | Cursor.gotoNextWord(False)  | ||
| − | Frame =   | + | Frame = ThisComponent.createInstance("com.sun.star.text.TextFrame")  | 
Frame.Width = 3000  | Frame.Width = 3000  | ||
| Line 233: | Line 145: | ||
Doc.Text.insertTextContent(Cursor, Frame, False)  | Doc.Text.insertTextContent(Cursor, Frame, False)  | ||
</source>  | </source>  | ||
| + | Merk vekselvirkningen mellom <tt>AnchorType</tt> (fra <tt>TextContent</tt>) og <tt>VertOrient</tt> (fra <tt>BaseFrameProperties</tt>).  | ||
| + | Forankringen er  <tt>AS_CHARACTER</tt> så teksten settes inn midt i strømmen av tegn (karakterer). Derfor kan den f.eks. bli flyttet  | ||
| + | til neste linje hvis der blir linjeskift.  Med vertikal justering satt til <tt>LINE_TOP</tt> blir rammens topp sidestilt med  | ||
| + | tegnenes topp.  | ||
| − | + | Innholdet i rammen kan endres ved å lage set en cursor:  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Doc = ThisComponent  | Doc = ThisComponent  | ||
Cursor = Doc.Text.createTextCursor()  | Cursor = Doc.Text.createTextCursor()  | ||
Frame = Doc.createInstance("com.sun.star.text.TextFrame")  | Frame = Doc.createInstance("com.sun.star.text.TextFrame")  | ||
| − | |||
Frame.Width = 3000  | Frame.Width = 3000  | ||
Frame.Height = 1000  | Frame.Height = 1000  | ||
| − | |||
Doc.Text.insertTextContent(Cursor, Frame, False)  | Doc.Text.insertTextContent(Cursor, Frame, False)  | ||
| − | |||
FrameCursor = Frame.createTextCursor()  | FrameCursor = Frame.createTextCursor()  | ||
FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD  | FrameCursor.charWeight = com.sun.star.awt.FontWeight.BOLD  | ||
| Line 264: | Line 164: | ||
</source>  | </source>  | ||
| − | + | ==Tekstfelt==  | |
| − | + | Nok et flytende objekt er spesielle felt som kan settes inn etter behov. De kan inneholde dato, sidenummer, forfatter og annet.  | |
| − | ==   | ||
| − | |||
| − | |||
| + | Et datofelt settes inn som under:  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
DateTimeField = Doc.createInstance("com.sun.star.text.textfield.DateTime")  | DateTimeField = Doc.createInstance("com.sun.star.text.textfield.DateTime")  | ||
DateTimeField.IsFixed = False  | DateTimeField.IsFixed = False  | ||
| Line 283: | Line 175: | ||
</source>  | </source>  | ||
| − | + | En liste med alle dokumentets felt kan gjennomgås som under:  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | feltListe = ThisComponent.getTextFields.createEnumeration  | |
| − | + | While feltListe.hasMoreElements()  | |
| − | + |     felt = TextFieldEnum.nextElement()  | |
| − | + |     If felt.supportsService("com.sun.star.text.textfield.DateTime") Then  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | While   | ||
| − | |||
| − | |||
| − | |||
| − |     If   | ||
       MsgBox "Date/time"  |        MsgBox "Date/time"  | ||
| − |     ElseIf   | + |     ElseIf felt.supportsService("com.sun.star.text.textfield.Annotation") Then  | 
       MsgBox "Annotation"  |        MsgBox "Annotation"  | ||
| − | |||
| − | |||
    End If  |     End If  | ||
| − | |||
Wend  | Wend  | ||
</source>  | </source>  | ||
| + | Gjennomgangen skjer med en iterator og sjekker tekstfeltet for type.   | ||
| − | + | Nummerfelt støtter  | |
| − | + | <tt>NumberingType (const)</tt> som i <idl>com.sun.star.style.NumberingType</idl>):  | |
| − | + | * <idl>com.sun.star.text.textfield.PageCount</idl> (antall sider)  | |
| − | + | * <idl>com.sun.star.text.textfield.WordCount</idl> (antall ord)  | |
| − | + | * <idl>com.sun.star.text.textfield.CharacterCount</idl> (antall tegn)  | |
| − | + | * <idl>com.sun.star.text.textfield.PageNumber</idl> (sidenummer)    | |
| − | |||
| − | |||
| − | * <idl>com.sun.star.text.textfield.PageCount</idl>  | ||
| − | * <idl>com.sun.star.text.textfield.WordCount</idl>  | ||
| − | * <idl>com.sun.star.text.textfield.CharacterCount</idl>  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | Under settes slike inn i et dokument:  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Doc = ThisComponent  | Doc = ThisComponent  | ||
| − | |||
PageNumber = Doc.createInstance("com.sun.star.text.textfield.PageNumber")  | PageNumber = Doc.createInstance("com.sun.star.text.textfield.PageNumber")  | ||
PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC  | PageNumber.NumberingType = com.sun.star.style.NumberingType.ARABIC  | ||
| − | |||
PageStyles = Doc.StyleFamilies.getByName("PageStyles")  | PageStyles = Doc.StyleFamilies.getByName("PageStyles")  | ||
| − | |||
StdPage = PageStyles("Default")  | StdPage = PageStyles("Default")  | ||
StdPage.FooterIsOn = True  | StdPage.FooterIsOn = True  | ||
| − | |||
FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()  | FooterCursor = StdPage.FooterTextLeft.Text.createTextCursor()  | ||
StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)  | StdPage.FooterTextLeft.Text.insertTextContent(FooterCursor, PageNumber, False)  | ||
</source>  | </source>  | ||
| + | Først lages et tekstfelt for sidenummer. Så letes "footer" frem (mer om slike  | ||
| + | bunntekster annet sted), det ligger i en av stilene, og  | ||
| + | tekstfeltet settes inn der.  | ||
| − | + | Annotering (anmerkninger) vises som et lite gult symbol som kan beklikkes   | |
| − | + | (<idl>com.sun.star.text.textfield.Annotation</idl>). Egenskaper er:  | |
| − | + | *Author (String):  Forfatter.  | |
| − | + | *Content (String):  Tekst.  | |
| − | + | *Date (Date):  Tidspunkt.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | Dato og tid er et felt (<idl>com.sun.star.text.textfield.DateTime</idl>) med*IsFixed (Boolean)</tt>:  hvorvidt verdien skal endres hver gang dokumentet åpnes  | |
| + | *IsDate (Boolean):  hvorvidt feltet skal vise dato (eller tid)  | ||
| + | *DateTimeValue (struct):  innhold (<idl>com.sun.star.util.DateTime</idl>)  | ||
| + | *NumberFormat(const): visingsformat.  | ||
| − | + | Kapitelnavn tilbyr et <idl>com.sun.star.text.textfield.Chapter</idl> og har egenskapene  | |
| + | *ChapterFormat(const): hvordan navn og nummer skal vises (<idl>com.sun.star.text.ChapterFormat</idl>)  | ||
| + | *Level (Integer):  hvilket kapitelnivå som skal vises (0 er høyeste)  | ||
| + | ==Bokmerker==  | ||
| + | Den siste typen fremmedobjekt er bokmerker(<idl>com.sun.star.text.Bookmark</idl>).  | ||
| + | Behandling blir veldig likt de foregående.  | ||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | Bookmark = ThisComponent.createInstance("com.sun.star.text.Bookmark")  | |
| − | + | Bookmark.Name = "mine bokmerker"  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Bookmark.Name = "  | ||
Doc.Text.insertTextContent(Cursor, Bookmark, True)  | Doc.Text.insertTextContent(Cursor, Bookmark, True)  | ||
</source>  | </source>  | ||
| − | + | Tekstens bokmerker ligger i den navne- og indeksbaserte samlingen <tt>Bookmarks</tt>. T  | |
| − | + | I eksemplet letes et navngitt bokmerker frem og en tekst innsettes.  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
<source lang="oobas">  | <source lang="oobas">  | ||
| − | + | Bookmark = ThisDocument.Bookmarks.getByName("mine bokmerker")  | |
| − | + | Cursor = ThisDocument.Text.createTextCursorByRange(Bookmark.Anchor)  | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | Bookmark =   | ||
| − | |||
| − | Cursor =   | ||
Cursor.String = "Here is the bookmark"  | Cursor.String = "Here is the bookmark"  | ||
</source>  | </source>  | ||
| − | |||
| − | |||
| − | |||
{{InterWiki Languages BasicGuide|articletitle=NO/Documentation/BASIC Guide/More Than Text}}  | {{InterWiki Languages BasicGuide|articletitle=NO/Documentation/BASIC Guide/More Than Text}}  | ||
{{PDL1}}  | {{PDL1}}  | ||
Latest revision as of 14:10, 16 December 2009
 
Tekstdokument kan ha mer enn ren tekst i avsnitt.  Fremmedobjekt som tabeller, tegninger, tekstfelter og annet 
kan forankres eller flyte rundt i dokumentet.  
TextContent
Forankring styres via tjenesten com.sun.star.text.TextContent som alle objekt støtter. Egenskaper:
- AnchorType (Enum): Hvordan objektet skal forankres (com.sun.star.text.TextContentAnchorType).
 - AnchorTypes (sequence of Enum): Alle typer forankring for objektet.
 - TextWrap (Enum): Hvordan tekst skal "omslutte" objektet (com.sun.star.text.WrapTextMode).
 
Metoder som dokumentet tilbyr:
- createInstance() lager et nytt objekt som støtter TextContent.
 - insertTextContent() legger et objekt inn i teksten.
 - removeTextContent() fjerner et objekt fra teksten.
 
Tabeller
Eksemplet viser innsetting av en ny tabell:
Cursor = ThisComponent.Text.createTextCursor()
Kalender = ThisComponent.createInstance("com.sun.star.text.TextTable")
Kalender.initialize(12,31)
ThisComponent.Text.insertTextContent(Cursor, Kalender, False)
En ser at en ved innsetting også skal angi posisjon (cursor) og om det utvalgte skal erstattes (True) eller beholdes (False).
Å vise alle tabeller gjøres som under:
alleTabeller = ThisComponent.getTextTables()
For I = 0 to alleTabeller.count - 1
   tabell = TextTables(I)
   ... 
Next I
Tabeller støtter com.sun.star.text.TextTable og har egenskaper (avstander er i 1/100 mm):
- BackColor (Long): bakgrunnsfarge.
 - BottomMargin (Long): bunnmarg.
 - LeftMargin (Long): venstremarg.
 - RightMargin (Long): høyremarg.
 - TopMargin (Long): toppmarg.
 - RepeatHeadline (Boolean): True hvis overskrift skal gjentas på hver side.
 - Width (Long): bredde.
 
Alle rader og kolonner
Tabellen tilbyr getRows og getColumns(). Begge gir en liste som støtter com.sun.star.table.XTableRows. De tilbyr:
- getByIndex(Integer): enkeltobjekt.
 - getCount(): antallet objekt.
 - insertByIndex(i, n): setter inn i nye objekt fra posisjon n.
 - removeByIndex(i, n): sletter n objekt fra posisjon n.
 
OBS: insert og remove kun hvis tabellen er fri for "merged cells". Tabellens annenhver rad får ny bakgrunnsfarge som under:
Cursor = ThisComponent.Text.createTextCursor()
tabell = ThisComponent.createInstance("com.sun.star.text.TextTable")
tabell.initialize(5, 4)
ThisComponent.Text.insertTextContent(Cursor, Table, False)
rader = tabell.getRows
For I = 0 To rader.getCount() - 1 Step 2
   rad = rader.getByIndex(I)
   rad.BackColor = &HFF00FF
Next
Enkeltrad
Hver rad støtter com.sun.star.text.TextTableRow service og tilbyr følgende:
- BackColor (Long): bakgrunnsfarge.
 - Height (Long): høyde.
 - IsAutoHeight (Boolean): om høyde skal autotilpasses.
 - VertOrient (const): vertikal justering (com.sun.star.text.VertOrientation)
 
Celler
Hver celle har et unikt navn. Cellen "øverst, til venstre" heter vanligvis A1, der A angir kolonne og 1 er rad. Altså har neste kolonne navnet B. En tabell har metoden getCellByName(n). Eksemplet under setter verdien i tabellens celler:
Cursor = ThisComponent.Text.createTextCursor()
tabell = ThisComponent.createInstance("com.sun.star.text.TextTable")
tabell.initialize(5, 4)
ThisComonent.Text.insertTextContent(Cursor, Table, False)
rader = tabell.getRows
kolonner = tabell.getColumns
For rad = 1 To rader.getCount()
   For kol = 1 To kolonner.getCount()
      celleNavn = Chr(Asc("A") - 1 + kol) & rad
      celle = tabell.getCellByName(celleNavn)
      celle.String = "rad: " & CStr(rad) + ", kolonne: " & CStr(kol)
   Next
Next
En celle ligner en vanlig tekst og tilbyr blant annet createTextCursor(). Utseendet i cellen endres som vanlig tekst. I eksemplet under høyre-justeres alle celler med tall.
tabellListe = ThisComponent.getTextTables()
For I = 0 to tabellListe.count - 1
   tabell = tabellListe(I)
   celleNavn = tabell.getCellNames()
   For J = 0 to UBound(celleNavn)
      celle = tabell.getCellByName( celleNavn(J) )
      If IsNumeric( celle.String ) Then
         celleCursor = celle.createTextCursor()
         celleCursor.paraAdjust = com.sun.star.style.ParagraphAdjust.RIGHT
      End If
   Next
Next
Innrammet tekst
Innrammet tekst er også et flytende objekt, som tabeller og bilder, og behandles likt med disse. Den tilbyr com.sun.star.text.BaseFrameProperties og har derved egenskaper som:
- BackColor (Long): bakgrunnsfarge.
 - BottomMargin (Long): bunnmark.
 - LeftMargin (Long): venstremark.
 - RightMargin (Long): høyremark.
 - TopMargin (Long): toppmarg.
 - Height (Long): høyde.
 - Width (Long): bredde.
 - HoriOrient (const): horisontal justering com.sun.star.text.HoriOrientation).
 - VertOrient (const): vertikal justering (com.sun.star.text.VertOrientation).
 
I eksemplet under lages en slik ramme og stikkes inn.
Cursor = ThisComponent.Text.createTextCursor()
Cursor.gotoNextWord(False)
Frame = ThisComponent.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)
Merk vekselvirkningen mellom AnchorType (fra TextContent) og VertOrient (fra BaseFrameProperties). Forankringen er AS_CHARACTER så teksten settes inn midt i strømmen av tegn (karakterer). Derfor kan den f.eks. bli flyttet til neste linje hvis der blir linjeskift. Med vertikal justering satt til LINE_TOP blir rammens topp sidestilt med tegnenes topp.
Innholdet i rammen kan endres ved å lage set en cursor:
Doc = ThisComponent
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 = "This is a small Test!"
Tekstfelt
Nok et flytende objekt er spesielle felt som kan settes inn etter behov. De kan inneholde dato, sidenummer, forfatter og annet.
Et datofelt settes inn som under:
DateTimeField = Doc.createInstance("com.sun.star.text.textfield.DateTime")
DateTimeField.IsFixed = False
DateTimeField.IsDate = True
Doc.Text.insertTextContent(Cursor, DateTimeField, False)
En liste med alle dokumentets felt kan gjennomgås som under:
feltListe = ThisComponent.getTextFields.createEnumeration
While feltListe.hasMoreElements()
   felt = TextFieldEnum.nextElement()
   If felt.supportsService("com.sun.star.text.textfield.DateTime") Then
      MsgBox "Date/time"
   ElseIf felt.supportsService("com.sun.star.text.textfield.Annotation") Then
      MsgBox "Annotation"
   End If
Wend
Gjennomgangen skjer med en iterator og sjekker tekstfeltet for type.
Nummerfelt støtter NumberingType (const) som i com.sun.star.style.NumberingType):
- com.sun.star.text.textfield.PageCount (antall sider)
 - com.sun.star.text.textfield.WordCount (antall ord)
 - com.sun.star.text.textfield.CharacterCount (antall tegn)
 - com.sun.star.text.textfield.PageNumber (sidenummer)
 
Under settes slike inn i et dokument:
Doc = ThisComponent
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)
Først lages et tekstfelt for sidenummer. Så letes "footer" frem (mer om slike bunntekster annet sted), det ligger i en av stilene, og tekstfeltet settes inn der.
Annotering (anmerkninger) vises som et lite gult symbol som kan beklikkes (com.sun.star.text.textfield.Annotation). Egenskaper er:
- Author (String): Forfatter.
 - Content (String): Tekst.
 - Date (Date): Tidspunkt.
 
Dato og tid er et felt (com.sun.star.text.textfield.DateTime) med*IsFixed (Boolean): hvorvidt verdien skal endres hver gang dokumentet åpnes
- IsDate (Boolean): hvorvidt feltet skal vise dato (eller tid)
 - DateTimeValue (struct): innhold (com.sun.star.util.DateTime)
 - NumberFormat(const): visingsformat.
 
Kapitelnavn tilbyr et com.sun.star.text.textfield.Chapter og har egenskapene
- ChapterFormat(const): hvordan navn og nummer skal vises (com.sun.star.text.ChapterFormat)
 - Level (Integer): hvilket kapitelnivå som skal vises (0 er høyeste)
 
Bokmerker
Den siste typen fremmedobjekt er bokmerker(com.sun.star.text.Bookmark). Behandling blir veldig likt de foregående.
Bookmark = ThisComponent.createInstance("com.sun.star.text.Bookmark")
Bookmark.Name = "mine bokmerker"
Doc.Text.insertTextContent(Cursor, Bookmark, True)
Tekstens bokmerker ligger i den navne- og indeksbaserte samlingen Bookmarks. T I eksemplet letes et navngitt bokmerker frem og en tekst innsettes.
Bookmark = ThisDocument.Bookmarks.getByName("mine bokmerker")
Cursor = ThisDocument.Text.createTextCursorByRange(Bookmark.Anchor)
Cursor.String = "Here is the bookmark"
| Content on this page is licensed under the Public Documentation License (PDL). |