[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [libreoffice-users] Experimental macro features: How to determine object types?


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 <gurus.knugum@gmail.com
>:

> Den tis 15 okt. 2019 kl 08:53 skrev Stephan Bergmann <sbergman@redhat.com
> >:
>
>> 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: users+unsubscribe@global.libreoffice.org
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

Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.