Grensesnitt

From Apache OpenOffice Wiki
Jump to: navigation, search


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.

Tilgang til samlinger via navn

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).
Personal tools