Aaaaaaaa! Sorry, Stephan Bergmann! I accidentally replied to you, while my intention was to reply to the list. Here it is, this time to the list, and this time with further comments at the end:
Den fre 18 okt. 2019 kl 20:03 skrev Johnny Rosenberg <[email protected] >: > Den tis 15 okt. 2019 kl 08:53 skrev Stephan Bergmann <[email protected] > >: > >> On 14/10/2019 21:02, Johnny Rosenberg wrote: >> > When using the experimental features in Basic I can declare thing in a >> more >> > specific way, for instance: >> > >> > *Dim SomeSheet As com.sun.star.sheet.XSpreadsheet* >> > Without the experimental features enabled, I had to write this instead: >> > *Dim SomeSheet As Object* >> > >> > Is there a way to find out for sure what type some object is supposed >> to be? >> > For instance, if I use Object instead and then look at it with XRay, in >> the >> > field just above the big field with all the >> > properties/methods/services/etc, it says >> *com.sun.star.sheet.XSpreadsheet*, >> > so that could be a clue, but it doesn't seem to always be usable. >> > For instance, when declaring a range, XRay says >> > *com.sun.star.table.XCellRange*, but declaring it like that won't work. >> > *com.sun.star.sheet.XSheetCellRange* will. How can I figure this out? >> >> (I have no idea what information that XRay tool prints, but:) A UNO >> object can implement multiple unrelated interfaces, and those interfaces >> in turn can each derive from (multiple) other interfaces. If you look >> at the UNO API documentation >> (<https://api.libreoffice.org/docs/idl/ref/index.html>, or the udkapi >> and offapi modules in the core git source repo), you see that >> css.sheet.XSheetCellRange is derived from css.table.XCellRange. The >> former adds one additional method, getSpreadsheet, so if you want to >> call that method you need to dim your var as the former, otherwise it >> suffices to dim it as the latter. >> >> > At the moment I'm struggling with a search descriptor. XRay says >> > *com.sun.star.util.XSearchDescriptor*, but that only throws an error at >> > *SomeRange.createSearchDescriptor()*. >> >> If you search for "createSearchDescriptor", there's css.util.XSearchable >> that has a method of that name, so you probably have an object at hand >> that implements that interface, and to hold that object you need a var >> that is dim'ed accordingly. >> > > This is what I don't really understand, I think. > From > https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XSearchable.html#a5e7b729c2d45dea6fa517b96e4e3feea > : > com::sun::star::util::XSearchDescriptor > <https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1util_1_1XSearchDescriptor.html> > createSearchDescriptor ( > ) > creates a SearchDescriptor > <https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1util_1_1SearchDescriptor.html> > which contains properties that specify a search in this container > > It seems like Dim as com.sun.star.util.XSearchDescriptor should do it (and > both xray and mri describe them as such when Dim as Object, right after the > oRange.createSearchDescriptor() line). > > I'm obviously approaching this the wrong way. Or I totally misunderstand > what ”and to hold that object you need a var that is dim'ed accordingly” > actually means. > > I looked a little more into it and I finally got it to work. I'm not sure I still understand this, but this works: *Private Function ItemFound(sItem As string, _ oRange As com.sun.star.sheet.XSheetCellRange) As Boolean Dim oDescriptor As com.sun.star.util.XReplaceDescriptor oDescriptor=oRange.createSearchDescriptor()* *⁝* *⁝* *End Function* So the answer to my question seems to be ”com.sun.star.util.XReplaceDescriptor”. Exactly why is a little blurry to me at the moment. Kind regards Johnny Rosenberg -- To unsubscribe e-mail to: [email protected] Problems? https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/ Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette List archive: https://listarchives.libreoffice.org/global/users/ Privacy Policy: https://www.documentfoundation.org/privacy
