Object-hiërarchie (Calc)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Net Visual Basic: Ik word helemaal tureluurs van alle mogelijke objecten, en hoe ik steeds nét het verkeerde combinatie lijk te maken van objec en methode. Of zoiets. Daarnaast snap ik de API-documentatie niet goed, omdat daar vaak verwezen wordt naar objecten en hiërarchieën die ik niet snap.

Drie dimensies

Ik geloof dat je met drie parallelle universums te maken hebt, als het om object-hiërarchie gaat:

  • Classes & Objecten
  • Namespace - UNO-module-hiërarchie
  • Bestanden.

Gelukkig komen deze drie vaak overeen. Hopelijk kan ik het onderscheid negeren. Please

Voorbeeld: isMerged & getRowSpan

In nov. 2019 worstelde ik met deze code:

if ThisComponent.sheets(0).getCellByPosition(column_counter, row_counter).isMerged then # Goed!

   row_range = ThisComponent.sheets(0).getCellByPosition(column_counter, row_counter).getRowSpan   # Niet goed!

end if

isMerged

  • Class-documentatie
  • SheetCell » XMergeableCell [1] - com::sun::star::table::XCell
  • Namespace: com::sun::star::table::XMergeableCell - Heeft table geen betrekking op tabellen in Writer-documenten? [2]

getCellByPosition

Deze methode (?) komt inderdaad op twee plekken voor:

  • com::sun::star::table
  • com::sun::star::sheet
  • Bij nader inzien worden deze namespaces door elkaar gebruikt: [3]

Namespace

Naast een object-hiërarchie, heb je ook nog een UNO-module-hiërarchie, de zogenaamde namespace. Die begint hier:

com::sun::star

Vervolgens heb je daaronder een flinke lijst aan modules [4]. Een bloemlezing:

module          Description
-------------   ------------------------------------------------------
accessibility   UNO Accessibility API
animations      Interfaces for SMIL animations
...
sheet           Spreadsheet specific interfaces
smarttags       Formatting and layout style and style sheet interfaces
...
xsd             W3C XML Schema-2 data type related interfaces

sheet

Namespace van de sheet-module: com::sun::star::sheet [5]. Wat je hier zoal aantreft:

  • Eén submodule: opencl
  • Groepen constantes
  • Classes
    • interfaces
    • services
    • structs
  • Enumerations

ThisComponent

Ik denk dat daarmee een willekeurig LibreOffice-bestand wordt bedoeld (bv. Writer-, Calc-, Base of Impress-document). Met This wordt bedoeld, dat het gaat om het laatst actieve document.

dim doc as Object
doc = ThisComponent
Inspecie van doc (ThisDocument) tijdens initialisatie
Inspecie van doc (ThisDocument) één stap na initialisatie


Bronnen