Viser opslag med etiketten UNO. Vis alle opslag
Viser opslag med etiketten UNO. Vis alle opslag

lørdag den 5. november 2016

UNO-objekter


Lad os kigge lidt mere på dokumentets UNO-objekter. Denne gang har vi at gøre med et tekstdokument (Writer).

Et dokument består af et hierarki af XML-strukturer, som vi kan aflæse med UNO. Det øverste niveau er altid ”dokumentet”, som vi kan få fat i med kommandoen ”thisComponent”. Af praktiske årsager tildeler vi en variabel

oDoc = thisComponent

Jeg bruger oDoc, men du bestemmer selv variablens navn. Jeg skriver oDoc, så jeg kan huske hvilken type det er, nemlig et objekt.

Vi kan aflæse en masse informationer om dokumentet, f.eks. disse

oDoc.RecordChanges=False

Vi kan også undersøge om der er billeder i dokumentet

oDoc.DrawPage.count=2

Der er altså to billeder. Lad os gå lidt videre:

Sub main
  Images= oDoc.DrawPage
  Image1= Images.getByIndex(0)
  Size=Image1.Size
  Height=Size.Height
  Width=Size.Width
  Print str(Height) + "x" + str(Width)
End sub

Resultatet af Print er dette:

mandag den 10. oktober 2016

Lidt om objekter i UNO-api'et

I de tidligere artikler har jeg forklaret at tekst kan indsættes i en celle med my_cell.String og talværdier med my_cell.Value. Men hvad er det hele egentlig for noget? Er der andre spændende muligheder?

Svaret er selvfølgelig Ja!

For at komme lidt videre skal vi lære lidt om det indbyggede IDE (integrated developer environment) som følger med LibreOffice:




Her skal du markere en variable som indeholder et objekt, f.eks. 'the_sheet'. Klik herefter på ikonet for Observatør (F7). Nu kan du se at der er dukket en linje op i vinduet under program-vinduet.

Nu skal du oprette et stop-punkt på første aktive linje efter 'the_sheet'. Det kan du gøre ved
at dobbeltklikke i den margin der er til venstre for programmets kode.


Aktiver (udfør) nu makroen, og se at makroen stopper ved dit stoppunkt. Samtidig er der kommet et lille symbol til venstre for din observatør 'the_sheet', og der er tilføjet en Type 'ScTableSheetObj'.

Klik på symbolet til venstre for at åbne objektet:


Her kan du se ALT hvad vi ved om arket 'the_sheet'. Du kan gennemse alle attributter for det pågældende objekt, og samtidig aflæse hvordan du evt. kan ændre objektets attributter. Læg f.eks. mærke til at vi kan se TabColor=-1, hvilket betyder 'ingen farve'. Men vi kan ændre farven i programkoden ved at indsætte en linje: the_sheet.TabColor=farveværdi. Farvekodning i LibreOffice er temmelig besværlig, men et eksempel kan være:
the_sheet.TabColor= RGB(255, 3, 101)

Prøv også at sætte en observatør på andre objekter, f.eks. 'my_sheets' eller 'my_cell'.

Hvis du tænker over det, så er alle objekter en delmængde af objektet 'my_doc'. Husk på at my_doc.sheets er alle ark, og at my_sheets.count er antallet af ark. Du kan finde antallet af ark ved at sætte en observatør på my_doc og klikke dig vej ned til sheets og count: