Grensesnitt
Objekter lages med createUnoService(t) og kan da brukes "universelt". De kalles også
kontekst-uavhengige tjenester. Disse tilbys av selve tjenesten, og ikke objektet i seg selv
(de er klassens "generelle" metoder).
På den andre side, er kontekst-avhengige tjenester de som kun ytes av objektet selv.
F.eks., et tegneobjekt i et gitt regneark har visse "individuelle"
metoder som ikke kan ytes av andre.
Nye tegninger og nye stiler er "stedegne" objekt som må skapes av det dokumentet der disse skal ligge. Til dette brukes metoden createInstance(t) der t sier hva som skal lages. Et tegneobjekt og et stilobjekt skapes som under:
Dim RectangleShape As Object RectangleShape = _ Spreadsheet.createInstance("com.sun.star.drawing.RectangleShape") Dim Style as Object Style = Textdocument.createInstance("com.sun.star.style.ParagraphStyle")
Mange av objektene ligger i samlinger med andre objekt av samme sort. For å bruke disse fins tre måter, en basert på at objektene har unike navn, en annen der man kjenner posisjon i samlingen, og en tredje der man hverken kjenner navn eller posisjon.
Samlinger inneholder samme sort objekt i et dokument, som f.eks. figurer eller setninger. De fleste samlinger støtter navnbasert tilgang og tilbyr i så fall metoden getByName() plukker frem enkeltobjekt, som i: til disse.
Dim alleArk As Object Dim etArk As Object alleArk = Spreadsheet.Sheets etArk = alleArk.getByName("ARK1")
Vil en vite alle navn brukes getElementNames():
Dim alleArk As Object Dim arkNavn Dim I As Integer Dim beskjed as String alleArk = Spreadsheet.Sheets arkNavn = alleArk.getElementNames() For I = LBound(arkNavn) To UBound(arkNavn) beskjed = beskjed + " " + arkNavn(I) Next I
Vil en sjekke om et navn fins brukes hasByName(n), som i
Dim Sheets As Object Sheets = Spreadsheet.Sheets If Sheets.HasByName("Sheet1") Then MsgBox " Sheet1 available" Else MsgBox "Sheet1 not available" End If
Vil en legge inn, fjerne eller endre innholdet i objektsamlinger brukes insertByName(n), removeByName(n) og replaceByName(n), som under der en manipulerer samlingen med stiler for avsnitt.
Dim stilFamilier As Object Dim aStiler As Object Dim nyStil As Object stilFamilier = Textdoc.StyleFamilies aStiler = stilFamilier.getByName("ParagraphStyles") aStiler.insertByName("Stil NUOVO", nyStil) aStiler.replaceByName("Stil GRECO", NewStyle) aStiler.removeByName("Stil ABSURDA")
Et dokument har altså ulike stilmengder, hvorav en er de stiler som brukes for å gi utseende til avsnitt. Denne stilmengden har navnet "ParagraphStyles" og objektet aStiler peker til denne stilmengden. Detaljene videre er ikke vesentlig her, men likevel: Først settes der inn et objekt nyStil ved navn "Stil NUOVO". Så settes stilen ved navn "Stil GRECO" til å peke til nyStil (altså kan flere stiler peke til samme stilobjekt). Til sist fjernes stilobjektet ved navn "Stil ABSURDA".
Indeksert tilgang til samlinger
Istedet for navn kan en oppnå tilgang via å vite objektets posisjon i samlingen. Metoden getByIndex(i) og getCount() er viktige her, som under.
Dim Sheets As Object Dim Sheet As Object Dim I As Integer Sheets = Spreadsheet.Sheets For I = 0 to Sheets.getCount() - 1 Sheet = Sheets.getByIndex(I) ' Editing sheet Next I
Som for tabeller starter indeksen med 0. Samlingen kan endres med insertByIndex() og removeByIndex().
Iterator for tilgang til samlinger
Den tredje formen for tilgang, i tillegg til navn og posisjon, er via en iterator. Man vet hverken posisjon eller navn, men har iallefall en peker til et av objektene i samlingen, som under, der alle avsnittene i en tekst blir gjennomgått:
Dim avsnittListe As Object Dim avsnitt As Object avsnittListe = Textdoc.Text.createEnumeration While avsnittListe.hasMoreElements() avsnitt = avsnittListe.nextElement() Wend
Disse samlingene har metoden createEnumeration() for å få en peker til en liste over objektene. Denne pekeren tilbyr hasMoreElements() og nextElement() for å finne ut om der er flere, og hva neste element måtte være.
Content on this page is licensed under the Public Documentation License (PDL). |