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) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 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)</tt>: 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). |