Seite 1 von 3

Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Do 24. Apr 2014, 19:51
von Caffeelix
Aus Calc-Tabellen möchte ich per Makro Balkendiagramme erstellen:

Code: Alles auswählen

  Diagramme = Docum.Sheets(0).Charts
  RangeAddress(0).StartColumn = Sel.StartColumn
  RangeAddress(0).StartRow = Sel.StartRow
  RangeAddress(0).EndColumn = Sel.EndColumn
  RangeAddress(0).EndRow = Sel.EndRow
  Diagramme.addNewByName("MyChart", Rect, RangeAddress(), True, True)
  Diagramm = Diagramme.getByName("MyChart").EmbeddedObject
  Diagramm.Diagram.Stacked = true
  Diagramm.Diagram.Vertical = true
  Diagramm.HasLegend = false
Soweit funktioniert das. Jetzt möchte ich die Balken(stücke) noch mit anderen als den Standardfarben füllen.
Dafür finde ich aber weder den passenden Befehl noch eine Dokumentation, aus der der Befehl hervorgeht. Die bisher benutzten Befehle habe ich hier gefunden:
https://wiki.openoffice.org/wiki/Docume ... _of_Charts

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Do 24. Apr 2014, 22:03
von F3K Total
Jo, das geht z.B. so:

Code: Alles auswählen

    oembeddedObject = thiscomponent.sheets(0).charts(0).embeddedObject'erstes Diagramm auf der ersten Tabelle
    odiagram = oembeddedObject.diagram
    oDataSequences = oembeddedObject.UsedData.DataSequences
    for i = 0 to ubound (oDataSequences)
       oDataRowProperties = odiagram.getDataRowProperties(i)
       C = INT(255/(ubound (oDataSequences)+1)*(i+1))'Rot-Ton berechnen
       oDataRowProperties.FillColor = RGB(C,0,0)'Farbe setzen
       oDataRowProperties.FillStyle = 1
       wait 100
    next i
anbei ein Beispiel
HTH R

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Fr 25. Apr 2014, 14:19
von Caffeelix
Danke!!! :-) Den Vorschlag konnte ich prima in mein Programm übernehmen:

Code: Alles auswählen

  Diagramme = Docum.Sheets(0).Charts
  RangeAddress(0).StartColumn = Sel.StartColumn
  RangeAddress(0).StartRow = Sel.StartRow
  RangeAddress(0).EndColumn = Sel.EndColumn
  RangeAddress(0).EndRow = Sel.EndRow
  Diagramme.addNewByName("MyChart", Rect, RangeAddress(), True, True)
  Diagramm = Diagramme.getByName("MyChart").EmbeddedObject
  Diagramm.Diagram.Stacked = true
  Diagramm.Diagram.Vertical = true
  Diagramm.HasLegend = false
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(0)
  DatenReihenEigenschaft.FillColor = RGB(255,255,255) 'Damit der erste Teil-Balken jeweils unsichtbar ist
  DatenReihenEigenschaft.FillStyle = 1
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(1)
  DatenReihenEigenschaft.FillColor = RGB(0,0,255)
  DatenReihenEigenschaft.FillStyle = 1
  DatenReihenEigenschaft = Diagramm.diagram.getDataRowProperties(2)
  DatenReihenEigenschaft.FillColor = RGB(255,0,0)    
  DatenReihenEigenschaft.FillStyle = 1
Jetzt bleibt für mich de Frage, ob es irgendwo eine vollständige und systematische Übersicht gibt, wo man alle Befehle, Eigenschaften etc. nachsehen kann. Die habe ich nämlich leider nirgends gefunden.
Zum Beispiel sollen die Balken auch noch einen schwarzen Rand bekommen - und auch die Suchbegriffe diagram, getDataRowProperties und fillstyle haben mich nicht in ein entsprechendes Nachschlagewerk geführt.

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Fr 25. Apr 2014, 20:22
von F3K Total
Hi,
was du suchst, ist dies. Leider funtionieren Introspection-Tools wie MRI oder Xray nicht mehr mit der IDL von LO 4.2, aber in älteren Versionen kann man z.b mit

Code: Alles auswählen

xray oDataRowProperties
direkt hineinschauen und sieht dann dies:
Xray_mit_lokalem_SKD.png
Xray_mit_lokalem_SKD.png (71.65 KiB) 6454 mal betrachtet
und kann nun diese Zeile schreiben:

Code: Alles auswählen

oDataRowProperties.LineStyle = com.sun.star.drawing.LineStyle.SOLID
HTH

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: So 27. Apr 2014, 23:53
von balu
Hallo R,
F3K Total hat geschrieben: Leider funtionieren Introspection-Tools wie MRI oder Xray nicht mehr mit der IDL von LO 4.2
Worauf beruht diese deine Aussage? Denn ich habe

Version: 4.2.1.1
Build-ID: d7dbbd7842e6a58b0f521599204e827654e1fb8b

mir selber portable gemacht und da funktioniert die 6.0 Version von Xray. Oder habe ich dich jetzt irgendwie falsch verstanden?



Gruß
balu

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Mo 28. Apr 2014, 06:18
von F3K Total
Hallo Balu,
Xray funktioniert, aber ein Druck auf API doc, bei lokal installiertem SDK, öffnet die IDL nicht, oder hast Du dies hinbekommen?

Gruß Rik

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Mo 28. Apr 2014, 13:35
von balu
Mahlzeit R,
aber ein Druck auf API doc, bei lokal installiertem SDK, öffnet die IDL nicht, oder hast Du dies hinbekommen?
Bild Jetzt versteh ich was Du meinst.
Ich hatte anfang des Jahres schon mal nach der passenden SDK für LO gesucht, aber aus irgendwelchen Gründen sie nicht gefunden, hatte dann aber auch nicht mehr weiter danach gesucht.

Da ich aber OOo 3.2.1 fest installiert hatte, habe ich für die ebenfalls fest installierte AOO 4.0.1 auf die SDK von OOo zugegriffen. Und das funktioniert auch. Die installierte SDK ist die OOo-SDK_3.2.1_Win_x86_install_en-US.exe. In AOO habe ich keine Probleme.

Nun hatte ich mir gedacht, das dies eventuell auch mit LO funktioniert. Also den Pfad der SDK für OOo ausgewählt, kopiert, in Xray in LO an der richtigen Stelle (Pfad auswählen) eingefügt, und fertig. Die einzigen "Problemchen" die ich dabei in LO habe sind folgende:
- manchmal kommt von Xray die Meldung 'Broken', wenn ich in den Properties auf 'API DOC' klicke, aber nach einem Klick auf OK komm ich dann doch zu dem Ziel.
- und je nach dem was ich per 'API DOC' untersuchen will, muss ich im Browser erst das richtige aussuchen:
This property is not found in the services supported by the object, but it exists in other services.

Check that the obtained information suits your context.

AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCell
AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCellRange
AbsoluteName - property in service ::com::sun::star::sheet:: .SheetCellRanges
In AOO werde ich aber bei der gleichen Auswahl in Xray direkt zu "service SheetCellRange --> AbsoluteName" geführt. Das sind aber bis jetzt nur zwei kleinigkeiten womit es sich leben lässt.

Hilft dir das weiter, oder muss ich das ganze prozedere noch genauer beschreiben? Was ich natürlich dann machen kann.



Gruß
balu

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Mo 28. Apr 2014, 19:53
von F3K Total
Hallo Balu,
balu hat geschrieben:Hilft dir das weiter, oder muss ich das ganze prozedere noch genauer beschreiben? Was ich natürlich dann machen kann.
leider nein. Das die älteren SDK's noch funktionieren ist mir klar, und wie ich darauf zugreifen müsste, auch.
Es geht darum, dass das aktuelle, z.B. von LO 4.2.3, nicht mehr funktioniert, weil es die .html-Seiten, die Xray und Mri bisher zur Anzeige verwendent haben, nicht mehr beinhaltet.

Gruß R

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Do 1. Mai 2014, 02:35
von balu
Hallo R,
Es geht darum, dass das aktuelle, z.B. von LO 4.2.3, nicht mehr funktioniert, weil es die .html-Seiten, die Xray und Mri bisher zur Anzeige verwendent haben, nicht mehr beinhaltet.
Da bin ich momentan echt überfordert, da ich das aktuelle SDK (das meinst Du doch mit 'das aktuelle') nicht habe. Das müsste ich mir erstmal besorgen um weiter zu schauen.



Gruß
balu

Re: Calc: Balkenfarbe in einem Diagramm per Makro ändern

Verfasst: Do 1. Mai 2014, 08:58
von karolus
Hallo
Der Unterschied besteht darin das in Lo die SDK-dokumentation nicht mehr durch `Autodoc` generiert wird sondern per
doxygen

In LO liegt die Dokumentation jetzt im Pfad .../sdk/docs/idl/ref/. und nicht mehr unter .../sdk/docs/common/ref/. - das alleine wäre in 5 Minuten bei Xray und Mri gefixt, leider ist die Ordnerstruktur und die Dateinamen-konvention darunter völlig unterschiedlich.

Karolus