BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes auslesen

Alles zur Programmierung im LibreOffice.
Antworten
nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

[gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes auslesen

Beitrag von nitja » Do 18. Feb 2021, 02:02

… 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)?
Zuletzt geändert von nitja am Mo 22. Feb 2021, 11:26, insgesamt 4-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: CALC - bei Klick auf ein (verlinktes) Bild in einer Zelle die Adresse der Zelle und den URL des Bildes auslesen …

Beitrag von nitja » Do 18. Feb 2021, 23:29

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
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von craig » Fr 19. Feb 2021, 17:11

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
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von nitja » Fr 19. Feb 2021, 17:21

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.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von mikele » Fr 19. Feb 2021, 18:02

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
Gruß,
mikele

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von nitja » Fr 19. Feb 2021, 18:14

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.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von mikele » Fr 19. Feb 2021, 19:59

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
Gruß,
mikele

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von nitja » Fr 19. Feb 2021, 21:47

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.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 123
Registriert: Di 20. Okt 2020, 15:55

Re: ["im Prinzip" per "work around" gelöst] CALC: bei Klick auf Bild in einer Zelle deren Adresse & URL des Bildes ausle

Beitrag von nitja » Mo 22. Feb 2021, 11:26

@ 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.
LO 24.2.0.3 (X86_64) auf Linux 6.6.19-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten