Object-hiërarchie (Calc)
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
- Heefttable
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
Bronnen
- https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-3-Calc-Flat-A4-EN-v111.pdf - LibreOffice Reference Card - Basic Calc - Erg handig!
- https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star.html