Seite 1 von 1
[gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes auslesen
Verfasst: Do 18. Feb 2021, 02:02
von nitja
… funktioniert in einer WRITER-Tabelle recht einfach, aber …
- während die CALC-Tabelle in Sekundenbruchteilen auf dem Schirm ist,
- braucht das Textdokument Minuten zum Aufbau, bis überhaupt der Maus-Cursor erscheint.
Mein sheet(0).drawPage hat derzeit testweise einen count von 18. (18 Bilder in 18 Zellen, die ich über den Index der Drawpage richtig identifizieren kann. Soll letztlich auch ~100 werden können.)
Wie aber kriege ich raus, welches gerade angeklickt wurde? "currentSelection" bringt nix Verwertbares.
Ginge auch umgekehrt: Wenn ich die Zelle (statt des Bildes in der Zelle) anklicke, wie kriege ich dann raus, welches Drawpage-Objekt in der Zelle ist (seinen Anker in der Zelle hat)?
Re: CALC - bei Klick auf ein (verlinktes) Bild in einer Zelle die Adresse der Zelle und den URL des Bildes auslesen …
Verfasst: Do 18. Feb 2021, 23:29
von nitja
Mit der Selektion des/eines Bildes komme ich nicht recht weiter.
Und das ist wohl wenn, dann nur wenigen hier gelungen, die hier zur Zeit nicht aktiv sind.
Ich werde statt des Bildes einen zugeordneten Text zum Auslöser für das Makro machen.
Da funktioniert currentSelection, so dass ich auch (über den Zellennamen) zum URL des zu verarbeitenden Bildes komme:
thisComponent.sheets(i).drawPage(j).graphicURL.originURL
von dem Bild, bei dem
thisComponent.sheets(i).drawPage(j).anchor.absoluteName
dem auslösenden Zellnamen entspricht.
i ist hier immer 0 und ob ich mir die Schleife über j durch die Anordnung der Bilder (bzw. deren drawPage-Objekten) sparen sollte oder muss, werde ich nach Laufzeittests entscheiden.
Also: "im Prinzip" per "work around" gelöst
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 17:11
von craig
Hallo nitja,
meinst Du so etwas:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
Dim oDoc as Object
Dim oSheet as Object
Dim oCC as Object
Dim oShape as Object
Dim oCell as Object
Dim oCellAdress as Object
Dim sCellAbsoulteName as String
oDoc=ThisComponent
oSheet=oDoc.Sheets().getByIndex(0)
oCC=oDoc.CurrentController
xray oCC
oShape=oCC.Selection.getByIndex(0)
xray oShape
sShapeName=oShape.Name
oCellAdress=oCC.Selection.getByIndex(0).Anchor.getCellAddress
sCellAbsoulteName=oCC.Selection.getByIndex(0).Anchor.AbsoluteName
xray sShapeName
xray oCellAdress
xray sCellAbsoulteName
End Sub
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 17:21
von nitja
craig hat geschrieben: ↑Fr 19. Feb 2021, 17:11
… meinst Du so etwas …
Vielleicht. Muss ich mir erst formulieren, dann testen. Anschließend stelle ich hier das Ergebnis rein.
An und für sich funktioniert das "work around" in meinem speziellen Fall schon ganz gut, aber die Auswahl per Bild ist und bleibt grundsätzlich sehr interessant.
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 18:02
von mikele
Hallo,
ich hatte mal etwas gesehen und nun wieder entdeckt.
Excel hat netterweise eine Funktion/Methode namens "Caller" die den Namen des aufrufenden Objekts/Ereignisses (oder so ähnlich) liefert.
Obwohl LO Basic so etwas nicht implementiert hat, funktioniert es trotzdem, wenn der VBA-Support aktiviert ist.
Probiere mal:
Code: Alles auswählen
REM ***** BASIC *****
Option VBASupport 1
Sub Main
oEv=Application.Caller
msgbox oEv
odoc=Thiscomponent
otab=odoc.currentcontroller.activesheet
odr=otab.drawpage
for i=0 to odr.count-1
msgbox odr.getbyindex(i).anchor.absoluteName
next
End Sub
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 18:14
von nitja
mikele hat geschrieben: ↑Fr 19. Feb 2021, 18:02
… Excel hat netterweise eine Funktion/Methode namens "Caller" die den Namen des aufrufenden Objekts/Ereignisses (oder so ähnlich) liefert. …
Meine LO-Projekte sollen ohne irgendwas von WinzigWeich funktionieren.
Außerdem scheint der "Caller" in Deinem Code nutzlos, …
mikele hat geschrieben: ↑Fr 19. Feb 2021, 18:02
Code: Alles auswählen
…
odr=otab.drawpage
for i=0 to odr.count-1
msgbox odr.getbyindex(i).anchor.absoluteName
next
End Sub
… wird hier nirgends verwendet, so dass die Schleife, die ich vermeiden kann, keinen Rückschluss auf das angeklickte Bild zulässt.
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 19:59
von mikele
Hallo,
da war ich etwas zu fix.
So sollte es natürlich sein:
Code: Alles auswählen
REM ***** BASIC *****
Option VBASupport 1
Sub Main
oEv=Application.Caller
odoc=Thiscomponent
otab=odoc.currentcontroller.activesheet
odr=otab.drawpage
for i=0 to odr.count-1
if odr.getbyindex(i).Name=oEv then
msgbox odr.getbyindex(i).anchor.absoluteName
end if
next
End Sub
VBA selbst wird dabei nicht genutzt. Alternativ könnte man
1) einen Listener auf das Bild setzen, der bei Klick entsprechend reagiert
2) das Tabellenereignis Doppelklick oder Rechtsklick nutzen
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Fr 19. Feb 2021, 21:47
von nitja
hi mikele,
yesss, jetzt ist's klarer
und ja, Dein Vorschlag 2) ist wie ich's derzeit mache (mit der Möglichkeit, durch direkte Adressierung die Schleife zu sparen).
Werde auf jeden Fall noch craigs Version (angepasst) testen.
Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle
Verfasst: Mo 22. Feb 2021, 11:26
von nitja
@ craig & mikele
Alle Vorschläge funktionieren!

Die einfachste Formulierung ist m. E.:
Code: Alles auswählen
dim oSel as object
oSel = oDoc.currentController.selection(0)
Mir war nicht klar, wie ich mit der Selection-
Collection umgehen muss, dass bei einer einfachen Auswahl, das einzige, "0te" Element die Info liefert, die ich suchte.
Mittlerweile ist's noch einfacher: Wenn die Zelle die das Bild enthält, gesperrt aber auswählbar ist, liefert mir oSel direkt die Info zur Zelle und darüber (wo es gebraucht wird) den URL des Bildes.