🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> 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:] Beschriftung x-Achse in XY-Diagramm anpassen

Alles zur Programmierung im LibreOffice.
gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von gogo » Di 12. Jan 2016, 10:46

Lösung:

... Das Diagrammobjekt muss korrekt formatiert vorliegen (am besten in Calc erstellen, da sind richtige xy-Diagramme einfach zu erstellen)
... Die neuen Daten müssen korrekt formatiert sein (ehklar - siehe Code unten)
... Dieses DataXArray wird per .DataProvider.setData(DataXArray()) in das EmeddedObject eingefügt

... was noch bleibt: die Ansicht wird nicht aktualisiert
Wenn man aber das oEvent.Source.Model.Parent.Parent.Parent.EmbeddedObjects.getByIndex(0) mit xray öffnet und das "Component"-Objekt inspiziert, dann wird im Moment der Inspektion das Diagramm neu gerendert!
Falls da jemand was deichseln kann ist das Problem gelöst - zumindest für xy-(Double/Double)-Diagramme

Code: Alles auswählen

sub ChangeTempDataOK(oEvent)

	dim NewData(8)
	dim aTmp(1) as double
	for i = 0 to 8
		redim aTmp(1) as double
		aTmp(0)=cdbl(sin(i))
		aTmp(1)=cdbl(i*i)
		NewData(i) = aTmp()
	next i
	
	oEvent.Source.Model.Parent.Parent.Parent.EmbeddedObjects.getByIndex(0).model.DataProvider.setData(NewData)
end sub
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von RobertG » Di 12. Jan 2016, 17:04

Hallo gogo,

mit dem Code bekomme ich die korrekte Einstellung hin. Nur hapert es natürlich jetzt an der Darstellung. Wenn ich mit xray von

Code: Alles auswählen

xray oEvent.Source.Model.Parent.Parent.Parent.EmbeddedObjects.getByIndex(0)
mich nach "Component" weiterklicke erscheint auch der neue Inhalt im Diagramm.

Ich habe im Moment nicht die Zeit, das weiter zu verfolgen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von F3K Total » Di 12. Jan 2016, 19:13

Hallo zusammen,
ich habe diesen Thread mit Interesse verfolgt, und selbst parallel versucht eine Lösung zu finden.
Über den Dataprovider bis zum Verhalten, wenn XRAY gestartet wird.
Genau an dieser Stelle bin ich auch nicht weitergekommen. Das Diagramm wurde einfach nicht nicht aktualisiert.
gogo hat geschrieben:Falls da jemand was deichseln kann ist das Problem gelöst - zumindest für xy-(Double/Double)-Diagramme
Denke, hier ist eine mögliche Lösung, die ich auch nur durch herumprobieren herausgefunden habe.

Vielleicht erstmal:

Code: Alles auswählen

oEvent.Source.Model.Parent.Parent.Parent
entspricht im Formular

Code: Alles auswählen

ThisComponent
also dem Formulardokument selbst, nur um die Sache etwas zu verkürzen;-)
Wenn man dem DiagramObjekt über Rechtsklick->Objekt->Reiter Optionen einen Namen, z.B. Diagram 1, gibt, geht es mit zwei Makros.
Das erste Makro dient anscheinend nur dazu, das Diagramm zu aktivieren, muss beim Öffnen des Formulares einmal ausgeführt werden, ich habe es über Extras/Anpassen an das Ereignis Dokument öffnen gehängt, geht aber auch innerhalb des strukturellen Formulares Beim Laden.

Code: Alles auswählen

Sub S_activate_Diagram
    oDiagram = thisComponent.embeddedObjects.getbyname("Diagram 1")
    XCOEO = oDiagram.ExtendedControlOverEmbeddedObject
    XCOEO.changeState(4)'(com.sun.star.embed.EmbedStates.UI_ACTIVE)LOADED = 0,RUNNING = 1,ACTIVE = 2,INPLACE_ACTIVE = 3,UI_ACTIVE = 4
    XCOEO.changeState(0)
end sub
EDIT XCOEO.changeState(1) in XCOEO.changeState(0) geändert, funktionierte zwar unter AOO aber bei LO flackerte der Bildschirm.

Damit wird das Diagramm einmal kurz aktiviert.
Ab jetzt reagiert es z.B. so:

Code: Alles auswählen

Sub Update_Diagram
    oDiagram = thisComponent.embeddedObjects.getbyname("Diagram 1")
    oDiaComp = oDiagram.Component
    aData = oDiaComp.Dataprovider.data
    ...
    Programmteil zum Füllen von aData
    ...
    oDiaComp.Dataprovider.data = aData' zurückschreiben
    oDiaComp.setmodified(true)'tadaaa das ist nun der Clou.
End Sub
Viel Erfolg beim Ausprobieren
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von gogo » Di 12. Jan 2016, 19:48

na denn - hier die finale Version... zumindest für numberische Werte:
Dateianhänge
Base_mit_Diagramm_final.zip
(15.8 KiB) 127-mal heruntergeladen
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von RobertG » Di 12. Jan 2016, 21:58

Hallo gogo, Hallo R.

ich habe das Beispiel von gogo runter geladen und getestet - funktioniert erst einmal. Dann habe ich das Ganze abgewandelt, damit die Daten aus der Tabelle eingelesen werden funktionierte anfänglich. Nachdem ich anfangen wollte die Variablen zu deklarieren war plötzlich nichts mehr los mit dem Aktualisieren.
Das Beispiel von gogo funktioniert hier weiterhin erst einmal einwandfrei, auch ohne die Parametereingabe. Jetzt suche ich weiter, was denn die Kreise stören könnte ...
---
gefunden: In gogos Beispiel ist irgendwie
XCOEO.changeState(4)
unter die Räder gekommen. Jetzt läuft es auch mit dem eingebauten Diagramm. Werde das, wenn ich entsprechend Zeit habe, dann wieder auf der Base-Seite weitergeben, da jetzt ja mit Datenbankanschluss.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von gogo » Di 12. Jan 2016, 23:40

...hab ich weggelassen, da bei mir unter LO 4.3.2 das XCOEO.changeState(0) ausreicht, und ich F3K's Edit zu spät bemerkte ... könnte natürlich sein, dass in anderen Office-Versionen das Diagramm zuerst aktiviert werden muss (UI_ACTIVE = 4) und dann erst als LOADED = 0 "sensibel" ist.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Beschriftung x-Achse in XY-Diagramm anpassen

Beitrag von RobertG » Mi 13. Jan 2016, 07:47

Hallo gogo,

Dein Beispiel funktionierte ja auch bei mir und LO 4.4.7.2 anstandslos. Nur wenn ich da noch eine Abfrage für die Ermittlung der Werte mit einbaute, dann blieb die Aktualisierung irgendwo hängen. Jetzt kann ich das Diagramm direkt beim Formularstart mit den Daten der Tabelle laden und bei jeder Datensatzänderung wird das Diagramm angepasst - natürlich jetzt mit der Zeitachse. Muss nur noch schön verpackt werden (Deklaration der Variablen, Kommentare ...) und dann transportiere ich das weiter.

----
Nachtrag: Steht jetzt hier im Unterforum "Base" zum Download
http://www.libreoffice-forum.de/viewtop ... 864#p39864

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


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.



Antworten