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: