Hallo Robert,
ich habe ein bisschen Licht uin das Thema bringen können.
LibreLogo wird offenbar behandelt wie eine Extension. Vielleicht ist es echnisch auch eine, aber das bleibe mal dahingestellt. Da stehen natürlich die eventuellen Symbolleisten woanders als bei den von LibO selbst mitgelieferten, also kein Wunder, dass da etwas anders ist.
Xray liest nun nicht einfach das Attribut string oder - im Fall von LibreLogo und anderen Erweiterungen - integer, sondern verwendet die Introspektion. Tatsächlich hat die Eigenschaft integer sowohl bei der Symbolleiste von LibreLogo wie auch der anderen Erweiterung, die ich angeschaut habe, den Wert 24, das identifiziert die Erweiterung also nicht. Die Introspektion kriegt als Input das ganze Objekt, da muss irgendwo die Info drinstecken, aber möglicherweise ist sie eben nicht über ein Attribut erreichbar.
Ich habe den Weg, den Xray geht, der natürlich wesentlich komplexer ist und den ich auch nicht völlig verstehe, zusammengefasst, das sind die nicht eingerückten Zeilen. Die Symbolleiste von LibreLogo ist bei mir auf Index 5.
Die Zeile in Kommentar kann man mal testweise ausführen, dann bringt aber die nächste einen Fehler, der Grund ist vielleicht der gleiche wie dafür, dass man innerhalb Xray nicht Xray aufrufen darf.
Wenn du die Logik des Programms einsetzen willst, musst du eventuell noch ein bisschen was abfragen, damit keine Fehler erzeugt werden; vielleicht genügt es, wenn du abfragst, ob VARTYPE(vari) = 8, d.h. "string" ist, du willst ja wohl die Namen der Symbolleisten abfragen.
SUB Test
DIM oFrame AS OBJECT
oFrame = StarDesktop.getCurrentFrame()
oWin = oFrame.getContainerWindow()
obj = oFrame.LayoutManager.Elements(5)
invoc = CreateUnoService("com.sun.star.script.Invocation")
invocCurrObj = invoc.createInstanceWithArguments(Array(obj))
'Xray invocCurrObj 'nur mal zum Testen, wenn das aktiv ist, bringt der nächste Befehl Fehler
vari = invocCurrObj.getValue("ResourceURL")
Xray vari
end sub
Viele Grüße
Gerhard