Allerdings hatte ich vor 20 Monaten buchstäblich schlagartig fast alles vergessen, was ich je zu LO in 6 (und Skripten allgemein in >30) Jahren gelernt hatte. Und erst seit Januar konnte ich mich wieder, anfangs extrem zäh, in die Nähe des früheren Standes zurück kämpfen.
❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
[gelöst ✔] Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
oh Mann!
Das ist jetzt echt peinlich: habe gerade gesehen, dass ich an genau der Stelle in einem ähnlichen Design vor 3½ Jahren hier schon einmal Hilfe zu den selben Themen gesucht und gefunden hatte.
Allerdings hatte ich vor 20 Monaten buchstäblich schlagartig fast alles vergessen, was ich je zu LO in 6 (und Skripten allgemein in >30) Jahren gelernt hatte. Und erst seit Januar konnte ich mich wieder, anfangs extrem zäh, in die Nähe des früheren Standes zurück kämpfen.
Allerdings hatte ich vor 20 Monaten buchstäblich schlagartig fast alles vergessen, was ich je zu LO in 6 (und Skripten allgemein in >30) Jahren gelernt hatte. Und erst seit Januar konnte ich mich wieder, anfangs extrem zäh, in die Nähe des früheren Standes zurück kämpfen.
Zuletzt geändert von nitja am So 14. Apr 2024, 17:51, insgesamt 1-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Hilft nix, ich stecke doch seit über einer Woche fest bei dem Versuch, den Bezug zu den im neuen Diagramm zu verwendenden Daten anzupassen.
Ganz zu schweigen davon, wie ich das "alte" (das schon vorhandene) Diagramm selektieren kann um es zu kopieren.
Um die Anpassung der Datenbezüge versuchen zu können, habe ich im Beispiel das vorhandene Diagramm manuell selektiert (angeklickt), kopiert, mit der Option "Star Object Descriptor (XML)" eingefügt und dann an seinen Platz positioniert (← recht fummelige Angegenheit).
Die Anpassung der Datenbezüge sollte eigentlich absolut simpel sein:
Austausch der zugrundeliegenden Datentabelle
von sheet 2 (das ist die Datentabelle für den Vormonat, hier also jetzt März)
auf sheet 1 (aktuelle Datentabelle, hier also jetzt für April).
Die Bereichsdefinition, also das Ergebnis, sieht in der IDE perfekt aus,
ergibt aber im Diagramm einen Verhau. (← alles im angehängten Beispiel, also "an Ort & Stelle" nachzuvollziehen und in den Kommentaren detaillierter beschrieben)
Ganz zu schweigen davon, wie ich das "alte" (das schon vorhandene) Diagramm selektieren kann um es zu kopieren.
Um die Anpassung der Datenbezüge versuchen zu können, habe ich im Beispiel das vorhandene Diagramm manuell selektiert (angeklickt), kopiert, mit der Option "Star Object Descriptor (XML)" eingefügt und dann an seinen Platz positioniert (← recht fummelige Angegenheit).
Die Anpassung der Datenbezüge sollte eigentlich absolut simpel sein:
Austausch der zugrundeliegenden Datentabelle
von sheet 2 (das ist die Datentabelle für den Vormonat, hier also jetzt März)
auf sheet 1 (aktuelle Datentabelle, hier also jetzt für April).
Die Bereichsdefinition, also das Ergebnis, sieht in der IDE perfekt aus,
ergibt aber im Diagramm einen Verhau. (← alles im angehängten Beispiel, also "an Ort & Stelle" nachzuvollziehen und in den Kommentaren detaillierter beschrieben)
- Dateianhänge
-
- Beispiel für LO-Forum v.58'.ods
- (1.88 MiB) 139-mal heruntergeladen
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Hallo,
das folgende Makro (adaptiert von https://ask.libreoffice.org/t/how-to-ma ... ro/38820/2) kopiert das Shape "Diagramm24·03" (verankert in H2) nach H35 und positioniert es wie das ursprüngliche und benennt es um.
Für den Zugriff auf das eigentliche Diagramm muss man tiefer hinein. Hier ist mal nur der Diagrammtitel geändert.
das folgende Makro (adaptiert von https://ask.libreoffice.org/t/how-to-ma ... ro/38820/2) kopiert das Shape "Diagramm24·03" (verankert in H2) nach H35 und positioniert es wie das ursprüngliche und benennt es um.
Für den Zugriff auf das eigentliche Diagramm muss man tiefer hinein. Hier ist mal nur der Diagrammtitel geändert.
Code: Alles auswählen
sub test2
odoc=ThisComponent
otab=oDoc.Sheets.getByName("Grafik")
oDp=otab.Drawpage
for i=0 to oDp.Count-1
if oDp.getByIndex(i).name="Diagramm24·03" then
oShape=oDp.getByIndex(i)
end if
next
oCtrl = oDoc.CurrentController
theFr = oCtrl.Frame
dispH = createUnoService("com.sun.star.frame.DispatchHelper")
oCtrl.select(oshape)
dispH.executeDispatch(theFr, ".uno:Copy", "", 0, Array())
oCtrl.setActiveSheet(otab)
oZiel=otab.getcellrangebyname("H35")
dispH.executeDispatch(theFr, ".uno:Paste", "", 0, Array())
newSh = oDoc.CurrentSelection(0)
newSh.name="Diagramm24·04"
pos=oziel.position
pos.x=pos.x+oshape.size.height
pos.y=pos.y+220
newsh.setPosition(pos)
odia=newsh.embeddedobject.component
odia.title.string=newSh.name
end subGruß,
mikele
mikele
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
... und nun mit neuem Bezug auf die Daten der neuen Monatstabelle (geht bestimmt noch hübscher)
Code: Alles auswählen
sub test2
odoc=ThisComponent
otab=oDoc.Sheets.getByName("Grafik")
oDp=otab.Drawpage
for i=0 to oDp.Count-1
if oDp.getByIndex(i).name="Diagramm24·03" then
oShape=oDp.getByIndex(i)
end if
next
oCtrl = oDoc.CurrentController
theFr = oCtrl.Frame
dispH = createUnoService("com.sun.star.frame.DispatchHelper")
oCtrl.select(oshape)
dispH.executeDispatch(theFr, ".uno:Copy", "", 0, Array())
oCtrl.setActiveSheet(otab)
oZiel=otab.getcellrangebyname("H35")
dispH.executeDispatch(theFr, ".uno:Paste", "", 0, Array())
newSh = oDoc.CurrentSelection(0)
newSh.name="Diagramm24·04"
pos=oziel.position
pos.x=pos.x+oshape.size.height
pos.y=pos.y+220
newsh.setPosition(pos)
odia=newsh.embeddedobject.component
odia.title.string=newSh.name
odia_alt=otab.charts.getbyname(oShape.EmbeddedObject.EntryName)
daten=odia_alt.getRanges
nr_DatenTab=oDoc.Sheets.getByName("24·04").RangeAddress.Sheet
for i=0 to ubound(daten)
daten(i).sheet=nr_DatenTab
next
odia_neu=otab.charts.getbyname(newSh.EmbeddedObject.EntryName)
odia_neu.setRanges(daten)
end sub
Gruß,
mikele
mikele
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Ja der Waahnsinn! Wie hast'n das raus gefunden!?
Also wenn auf irgendjemand Verlass ist, …
Hatte erst am Mittwoch (wieder) entdeckt, dass vor 3½ Jahren schon Du es warst, der mir die entscheidenden Hilfestellungen gegeben hat, wenn ich so richtig in der Klemme saß.
Bin gerade von einer Radltour zurück gekommen, werde mir was Du geschrieben hast, in aller Ruhe durchackern und Dir wohl immer dankbarer werden (wenn das überhaupt noch geht).

Also wenn auf irgendjemand Verlass ist, …
Hatte erst am Mittwoch (wieder) entdeckt, dass vor 3½ Jahren schon Du es warst, der mir die entscheidenden Hilfestellungen gegeben hat, wenn ich so richtig in der Klemme saß.
Bin gerade von einer Radltour zurück gekommen, werde mir was Du geschrieben hast, in aller Ruhe durchackern und Dir wohl immer dankbarer werden (wenn das überhaupt noch geht).
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Hallo,
Ständig stimmte z. B. die Positionierung nicht, bis ich merkte, dass das Diagramm um 270° gedreht ist. Daher musste die Waagerechte Position um die Höhe (!) des Diagramms korrigiert werden:
In der Vertikalen sitzt das Diagramm auch nicht direkt an der Zellgrenze sondern ist etwas nach unten verschoben
Ein Diagramm ist wiederum ein sehr komplexes Objekt (praktisch ein eigenständiges Dokument mit der .Component Eigenschaft) mit wiederum Drawpage für jedes einzelne graphische Element.
Glücklicherweise kann man über die ursprüngliche Tabelle direkt auf das Diagramm (zumindest einige Teile - soweit ich es verstanden habe) zugreifen, u. a. auf die Bereiche, in denen die Daten für das Diagramm sind. Da ein Musterdiagramm existiert musste nur die Tabellennummer ausgetauscht werden, wass in dieser Schleife passiert:
Spätestens jetzt war mir klar, dass es praktisch unmöglich ist, ein Diagram via API (also ohne Dispatcher) zu kopieren.
Die Objektinspektoren (z. B. MRI) und die mittlerweile verfügbaren ->Extras->Entwicklungswerkzeuge verraten schon mal eine Menge über die vergfügbaren Eigenschaften und Methoden und dann hilft nur viel probieren und probieren und ...Wie hast'n das raus gefunden!?
Ständig stimmte z. B. die Positionierung nicht, bis ich merkte, dass das Diagramm um 270° gedreht ist. Daher musste die Waagerechte Position um die Höhe (!) des Diagramms korrigiert werden:
Code: Alles auswählen
pos.x=pos.x+oshape.size.heightCode: Alles auswählen
pos.y=pos.y+220Glücklicherweise kann man über die ursprüngliche Tabelle direkt auf das Diagramm (zumindest einige Teile - soweit ich es verstanden habe) zugreifen, u. a. auf die Bereiche, in denen die Daten für das Diagramm sind. Da ein Musterdiagramm existiert musste nur die Tabellennummer ausgetauscht werden, wass in dieser Schleife passiert:
Code: Alles auswählen
daten=odia_alt.getRanges
nr_DatenTab=oDoc.Sheets.getByName("24·04").RangeAddress.Sheet
for i=0 to ubound(daten)
daten(i).sheet=nr_DatenTab
next
odia_neu=otab.charts.getbyname(newSh.EmbeddedObject.EntryName)
odia_neu.setRanges(daten)Gruß,
mikele
mikele
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
¹) Den habe ich zwar installiert, aber außer Komplettabstürzen aller offener LO-Fenster noch nichts damit zustande gebracht. Mit dem wohl falschen Verdacht, dass der nur mit Python funktioniert, dann aufgegeben. Gibt's ein Link, wo ich eine Anleitung für dessen Handhabung finden kann?mikele hat geschrieben: ↑So 14. Apr 2024, 10:51Die Objektinspektoren (z. B. MRI) … ¹⁾
->Extras->Entwicklungswerkzeuge … ²⁾
Ständig stimmte z. B. die Positionierung nicht, bis ich merkte, dass das Diagramm um 270° gedreht ist. Daher musste die Waagerechte Position um die Höhe (!) des Diagramms korrigiert werden: … ³⁾In der Vertikalen sitzt das Diagramm auch nicht direkt an der Zellgrenze … ⁴⁾Code: Alles auswählen
pos.x=pos.x+oshape.size.height
²)
³)
… und: könnte man ein solches Diagramm denn ohne Drehung zusammenbauen?
⁴) Das wird sich wohl ändern. Bin gerade dabei, die(se) Tabelle gründlich zu entrümpeln.
u.a.: Die ersten 2 Zeilen stammten aus dem allerersten Startversuch und sollten vor allem einen ersten "Anker" für das Datum der ersten (Druck-)Seite und von da für die weiteren liefern.
… was komplett überflüssig ist!
Jetzt sind die einzelnen Seiten quasi "autark"/"self-contained" indem ihnen nur der Namen der dazu gehörigen Datentabelle (und damit der jeweilige Monat) per 'NewPage'-Prozedur in die erste Zelle geschrieben wird.
⁵) Das war ja genau der Plan, auf den die "Dokument"-Struktur mit ihren Tabellen abhebt.mikele hat geschrieben: ↑So 14. Apr 2024, 10:51…
Glücklicherweise kann man über die ursprüngliche Tabelle direkt auf das Diagramm (zumindest einige Teile - soweit ich es verstanden habe) zugreifen, u. a. auf die Bereiche, in denen die Daten für das Diagramm sind.
Da ein Musterdiagramm existiert musste nur die Tabellennummer ausgetauscht werden ⁵⁾, was in dieser Schleife ⁶⁾ passiert:Spätestens jetzt war mir klar, dass es praktisch unmöglich ist, ein Diagramm via API (also ohne Dispatcher) zu kopieren. ⁷⁾Code: Alles auswählen
daten=odia_alt.getRanges nr_DatenTab=oDoc.Sheets.getByName("24·04").RangeAddress.Sheet for i=0 to ubound(daten) daten(i).sheet=nr_DatenTab next odia_neu=otab.charts.getbyname(newSh.EmbeddedObject.EntryName) odia_neu.setRanges(daten)
⁶) Das werde ich einfacher und ohne hart codierte Tabellennamen bewerkstelligen.
⁷) Das werde ich wohl erst vollständig verstehen, wenn ich denn den Code nachgebaut habe, den Du gestern hier rein gestellt hast.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Überraschung!
(… und ich war selbst derart überrascht, dass ich annehme, dass meine Nachbarn das heute Nacht trotz sehr guter Schallisolierung gehört haben - jedenfalls die, die zuhause waren)
Bei der Entrümpelung der 'Grafik'-Tabelle und des zugehörigen Moduls (das jetzt 'Chart' statt 'Graph' heißt), habe ich u.a. die Positionierung des Diagramms in seinem Rahmen sorgfältig optimiert.
(Da war leerer Platz unter dem "Fuß" - bei der Bearbeitung rechts vom eingebetteten Diagramm.)
Nachdem der nun entfernt war, hat der Rahmen komplett in den Bereich der "Grafikseite24_03" gepasst, nirgends mehr deren rechte oder untere Begrenzung berührt.
Als jetzt die NewPage-Prozedur drüber gelaufen ist mit
copyRange(CellAddress der 1. Zelle des Zielbereichs, RangeAddress des Quellbereichs) …
enthielt die neue "Seite" plötzlich, erstmals einen Clone des Diagramms!
Zunächst erschien das nicht besonders stabil: bei den weiteren Versuchen ging jeder Zugriff auf die Objekte verloren oder sie verwandelten sich von "OLE"- in "Zeichnungs"-Objekte.
Inzwischen habe ich einen stabilen Zustand erreicht, nachdem ich >10 Zwischenversionen des .ods-"Dokuments" nach jeder kleinen Manipulation gesichert habe um mich dann von da weiter zu hangeln.
Es fehlt jetzt noch die Anpassung der vom neuen Diagramm referenzierten Datentabelle, aber auch ohne das stelle ich den bisherigen Code, der o.g. "Wunder" bewirkte, schon mal hier rein:
Code: Alles auswählen
REM ***** BASIC *****
option explicit
' by: nitja last update: 24·04·15 status: struggling with riddles
' called by: so far(?) only onActivate is "called" (triggered by manual actvation) from "outside"
' calls (outside of this module): nothing
' Public bDbgMode as boolean, sMsgFromIDE(2) as string ' declared in Module IDE, sMsg(0,1,2)=(variable,hello,crash)
dim isInitd as boolean,oDoc as object,oNmdRngs as object ',oCtrlr as object,oShapes as object
dim oGkSht as object,sMonth(1) as string,sGfkPg(1) as string,oGfkPg(1) as object,oGPgRa(1) as object
dim oChart(1) as object,nChart as integer,sChart(1) as string,oChtData(1) as object
dim vTest ' ⚒🌩💢⚠❓🤔🪳
sub test
' dim <local variables>
dim oSrcRA as object, oTgtCA as object
if not isInitd then doInit
' processing:
oSrcRA=oGkSht.getCellRangeByPosition(0,0,7,32).RangeAddress
oTgtCA=oGkSht.getCellByPosition(17,0).getCellAddress
oGkSht.copyRange(oTgtCA,oSrcRA)
print vTest
stop
end sub 'test
sub onActivate ' called by sheet event, triggered by manual action
if not isInitd then doInit
end sub 'onActivate
sub doInit ' called by onActivate
if isInitd then exit sub
' bDbgMode=true
if bDbgMode and ""=sMsgFromIDE(0) then helloIDE(0) ' i.e. if previous line hasn't been commented out
oDoc=thisComponent
oCtrlr=oDoc.getCurrentController
oNmdRngs=oDoc.NamedRanges
oGkSht=oDoc.Sheets.getByIndex(0)
oChart=oGkSht.getCharts
sMonth=Array(Format(DateAdd("m",-1,Date),"yy·mm"),Format(Date,"yy·mm"))
sGfkPg=Array("Grafikseite" & Replace(sMonth(0),"·","_"),"Grafikseite" & Replace(sMonth(1),"·","_"))
if not oNmdRngs.hasByName(sGfkPg(1)) then NewPage
sChart=oChart.ElementNames : nChart=UBound(oChart.ElementNames) : if 0=nChart then NewChart
' working this far but no further: oChart is NOT the chart-"document", perhaps its frame - ALTHOUGH called "ScChartsObj" in the IDE❓
' maybe something like this: "oChartDoc = oChart.getEmbeddedObject()" … would rerail it?
oChart(1)=oChart.getByName(sChart(nChart)) : oChtData(1)=oChart(1).getRanges
if 1<oChtData(1)(0).sheet then NewChart
isInitd=true
end sub 'doInit
sub NewPage ' called by 𝑑𝑜𝐼𝑛𝑖𝑡 (← 𝑚𝑢𝑠𝑡𝑛´𝑡 be called from here)
dim oRng as object, oSrcRA as object, oTgtCA as object
if bDbgMode then sMsgFromIDE(0)=" hier ist 'NewPage' in 'Chart'" & String(18,160) : helloIDE(1) : print sMsgFromIDE(1)
' check presence of previous month's region/page to be used as a template
if not oNmdRngs.hasByName(sGfkPg(0)) then
' MsgBox("You'll have to define it manually!" & chr(10) & _
' "('" & oGkSht.Name & "' is in the leftmost sheet-tab of Calc's main window )", _
' MB_ICONSTOP,"named range '" & sGfkPg(0) & "' is missing")
MsgBox("Der muss manuell markiert & festgelegt werden!" & chr(10) & _
"('" & oGkSht.Name & "' ist im 1. Register links unter den Tabellen in Calcs Hauptfenster)", _
MB_ICONSTOP,"Benannter Bereich '" & sGfkPg(0) & "' fehlt")
stop
end if 'graphic page for previous month missing
oGfkPg(0)=oNmdRngs.getByName(sGfkPg(0)).getReferredCells
oGPgRa(0)=oGfkPg(0).RangeAddress ' source range address: e.g. (0,0,7,32)
with oGPgRa(0)
oTgtCA=oGkSht.getCellByPosition(0,.StartRow+33).getCellAddress() ' 1. cell of target range: e.g. (0,33)|(A34)
oGkSht.copyRange(oTgtCA,oGPgRa(0))
oGkSht.getCellByPosition(0,.StartRow+33).setString(Format(Date,"yy·mm"))
with oGkSht.getCellRangeByPosition(1,.StartRow+34,5,.EndRow+32)
.clearContents(com.sun.star.sheet.CellFlags.STRING or com.sun.star.sheet.CellFlags.EDITATTR)
end with 'oGkSht.getCellRangeByPosition(1,.StartRow+34,5,.EndRow+32)
oRng=oGkSht.getCellRangeByPosition(0,.StartRow+33,7,.EndRow+33)
oNmdRngs.addNewByName(sGfkPg(1),oRng.AbsoluteName,oTgtCA,0) ' cf. Pitonyak et al. 16.6.1 pgs.531-534
end with
end sub 'NewPage
sub NewChart ' called by 𝑑𝑜𝐼𝑛𝑖𝑡 (← 𝑚𝑢𝑠𝑡𝑛´𝑡 be called from here)
' check presence of previous month's chart
dim nGkShtCptnRow as long
oChart(0)=oChart.getByName(sChart(nChart-1)) : oChtData(0)=oChart(0).getRanges
if 2<oChtData(0)(0).sheet then 'chart for previous month missing ' there's no chart for the previous month
' MsgBox("You'll have to create it manually!", _
' MB_ICONSTOP,"chart '" & sChart(0) & "' is missing")
MsgBox("Das muss manuell erstellt werden!", _
MB_ICONSTOP,"'" & sChart(0) & "' fehlt")
stop
end if 'chart for previous month missing
' check presence of a preliminary, i.e. to be adjusted, chart for the current month
oChart(1)=oChart.getByName(sChart(nChart)) : oChtData(1)=oChart(1).getRanges
if 2=oChtData(1)(0).sheet then 'preliminary chart for current month exists
' setting the referred ranges for the new chart will have to go here ' ⚒
end if 'preliminary chart for current month exists
end sub 'NewChart
' von "mikele" in https://www.libreoffice-forum.de/viewtopic.php?f=12&t=39621&p=107251#p107237
sub test2
odoc=ThisComponent
otab=oDoc.Sheets.getByName("Grafik")
oDp=otab.Drawpage
for i=0 to oDp.Count-1
if oDp.getByIndex(i).name="Diagramm24·03" then
oShape=oDp.getByIndex(i)
end if
next
oCtrl = oDoc.CurrentController
theFr = oCtrl.Frame
dispH = createUnoService("com.sun.star.frame.DispatchHelper")
oCtrl.select(oshape)
dispH.executeDispatch(theFr, ".uno:Copy", "", 0, Array()) ' kopiert Chart(0), bzw. sein "shape"
oCtrl.setActiveSheet(otab)
oZiel=otab.getcellrangebyname("H35")
dispH.executeDispatch(theFr, ".uno:Paste", "", 0, Array()) ' fügt die Kopie ein, …
newSh = oDoc.CurrentSelection(0)
newSh.name="Diagramm24·04" ' bennent sie neu …
pos=oziel.position
pos.x=pos.x+oshape.size.height
pos.y=pos.y+220
newsh.setPosition(pos) ' und positioniert sie.
' ↑ scheint bis hier hin alles von der neuen NewPage-Routine bereits erledigt zu sein ↑
odia=newsh.embeddedobject.component
odia.title.string=newSh.name ' gibt ihr einen "Titel" - wozu? reine Demo?
end sub
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Ich denke ich habe jetzt alles beieinander, um das Projekt erfolgreich abzuschließen …
- maßgeblich durch "mikele"s Hilfestellung -
… und dieses Thema als [gelöst] zu markieren.
Allerdings z.Z. in "unendlich" vielen "Test-XY"-Prozeduren.
Um das aufzuräumen, fehlt mir noch das grundlegende Verständnis für Modul- vs. "Dokument"-Variablen, wie im Thema "… dim, private, public, global …" angesprochen.
… und damit die Lösung der Frage, wie ich den Basic-Code (nach Modulen, Variablen, u.s.w.) am effektivsten organisieren kann.
Vermutlich brauche ich nicht mal den Dispatcher, aber das wird sich verlässlich erst beim Wechsel in den Mai zeigen. Und wenn, wäre auch das keine Hürde mehr.
- maßgeblich durch "mikele"s Hilfestellung -
… und dieses Thema als [gelöst] zu markieren.
Allerdings z.Z. in "unendlich" vielen "Test-XY"-Prozeduren.
Um das aufzuräumen, fehlt mir noch das grundlegende Verständnis für Modul- vs. "Dokument"-Variablen, wie im Thema "… dim, private, public, global …" angesprochen.
… und damit die Lösung der Frage, wie ich den Basic-Code (nach Modulen, Variablen, u.s.w.) am effektivsten organisieren kann.
Vermutlich brauche ich nicht mal den Dispatcher, aber das wird sich verlässlich erst beim Wechsel in den Mai zeigen. Und wenn, wäre auch das keine Hürde mehr.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
Re: Zugriff auf und Manipulation von Diagrammen (charts) (in Calc)
Nach einer weiteren Woche im Kampf um die Anpassung der Daten-Bezüge (setRanges) in (vorhandenen) Diagrammen (charts) muss ich jetzt doch aufgeben, das ohne weitere Hilfestellung zu bewältigen.
²) Für den Dispatcher habe ich keine Verwendung gefunden, nachdem der copyRange-Befehl mit dem neuen Layout des "Grafik"-Tabellenblatts die Form (shape) mitsamt eingebettetem Diagramm (chart)die copy&paste-Aktion genau so erledigt, wie das der Dispatcher in "mikele"s Code macht.
⁺) Die Protokollierung der onSelect-Ergeignisse (mit der Möglichkeit onClick zu zu erkennen und zu verarbeiten) finden sich auf den Tabellenblättern mit den Daten (24·04, 24.03). Im "Grafik"-Tabellenblatt leistet das onClick gute Dienste.
Ich kann aber nicht nachvollziehen, wie "mikele"s Code die Anpassung der chart ranges bewerkstelligt. D.h. ich meine zu verstehen, wie der gemeint ist - er funktioniert aber nicht in meiner .ods-Datei (angehängt).
Die aufgeworfenen Fragen sind an Ort & Stelle in den Kommentaren zum Code enthalten.
In der Datei sind die verwendeten Schriftarten nicht eingebettet und es würde mich interessieren, wie die Tabellen bei anderen aussehen.
Auf meinem Rechner präsentiert sich das "Grafik"-Tabellenblatt z.B. so:
Mit den (in der 2. Aprilhälfte) neu (außerhalb der eigentlichen Arbeitsbereiche) in die Tabellen geschriebenen Informationen zur Fehlersuche (und für das bessere Verständnis der zugrunde-liegenden Mechanismen, insbesondere der Tabellenereignisse ⁺⁾) hat sich Punkt ¹) erledigt.nitja hat geschrieben: ↑Di 16. Apr 2024, 13:53Ich ̶d̶e̶n̶k̶e̶ dachte ich habe jetzt alles beieinander, um das Projekt erfolgreich abzuschließen …
- maßgeblich durch "mikele"s Hilfestellung -
…
… fehlt mir noch das grundlegende Verständnis für Modul- vs. "Dokument"-Variablen … (erledigt) ¹⁾
Vermutlich brauche ich nicht mal den Dispatcher, ²⁾
aber das wird sich verlässlich erst beim Wechsel in den Mai zeigen.
²) Für den Dispatcher habe ich keine Verwendung gefunden, nachdem der copyRange-Befehl mit dem neuen Layout des "Grafik"-Tabellenblatts die Form (shape) mitsamt eingebettetem Diagramm (chart)die copy&paste-Aktion genau so erledigt, wie das der Dispatcher in "mikele"s Code macht.
⁺) Die Protokollierung der onSelect-Ergeignisse (mit der Möglichkeit onClick zu zu erkennen und zu verarbeiten) finden sich auf den Tabellenblättern mit den Daten (24·04, 24.03). Im "Grafik"-Tabellenblatt leistet das onClick gute Dienste.
Ich kann aber nicht nachvollziehen, wie "mikele"s Code die Anpassung der chart ranges bewerkstelligt. D.h. ich meine zu verstehen, wie der gemeint ist - er funktioniert aber nicht in meiner .ods-Datei (angehängt).
Die aufgeworfenen Fragen sind an Ort & Stelle in den Kommentaren zum Code enthalten.
In der Datei sind die verwendeten Schriftarten nicht eingebettet und es würde mich interessieren, wie die Tabellen bei anderen aussehen.
Auf meinem Rechner präsentiert sich das "Grafik"-Tabellenblatt z.B. so:
- Dateianhänge
-
- Beispiel für LO-Forum v.44w - ohne eingebette Schriften.ods
- (89.74 KiB) 159-mal heruntergeladen
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.