2017-09-20 8 views
1

Ich schreibe ein Makro, um Kreisdiagramm in OpenOffice Basic zu erzeugen, aber ich kann die Methode nicht finden, um die Farbe der verschiedenen Teile des Kuchens zu ändern.OOo Basic: PieChart, wie man die Farbe des Graphen ändert

Wir als Beispiel das Makro dieses Themas annehmen: OpenOffice Calc macro to add pie chart

Das heißt, meine Daten sind:
enter image description here

Und mein Code:

Sub Macro1 

Dim oRange as Object 
Dim oRangeAddress(1) As New com.sun.star.table.CellRangeAddress 
Dim oRect As New com.sun.star.awt.Rectangle 
Dim cTitle as String 

oRange = thisComponent.getCurrentSelection.getRangeAddress 
oSheets = ThisComponent.getSheets() 
oSheet = oSheets.getByIndex(0) 
oCharts = oSheet.Charts 

oRect.Width = 10000 
oRect.Height = 10000 
oRect.X = 8000 
oRect.Y = 1000 

oRangeAddress(0).Sheet = oRange.Sheet 
oRangeAddress(0).StartColumn = 0 
oRangeAddress(0).StartRow = 0 
oRangeAddress(0).EndColumn = 1 
oRangeAddress(0).EndRow = 2 

cTitle = "Test Results" 
oCharts.addNewByName(cTitle,oRect,oRangeAddress(),TRUE, TRUE) 
oChart = oCharts.getByName(cTitle).embeddedObject 
oChart.Diagram = oChart.createInstance("com.sun.star.chart.PieDiagram") 
oChart.HasMainTitle = True 
oChart.Title.String = cTitle 

End Sub 

Wie kann ich etwas grün in meinem Diagramm, zum Beispiel, anstatt blau?

Vielen Dank für Ihre Hilfe.

+0

Code bitte anzeigen. Und Sie können eine Suche nach "openoffice basic Kreisdiagramm verschiedenen Farben" machen. Wenn das nicht hilft, müssen wir wissen, warum keine dieser Techniken funktioniert hat. – jdv

+0

Mit Code aktualisiert. Ich habe lange nach Google gesucht, aber nichts gefunden. Ich habe keine Techniken zu versuchen, da ich den Namen der Methode nicht kenne. – Xavier

+0

Wow, OpenOffice Docs sind schrecklich. Beginnen Sie mit der Untersuchung der FillColor-Eigenschaft für verschiedene Objekte. – jdv

Antwort

0

Hier ist eine Lösung.

Sub Macro1 
    ... 
    oFirstDiagram = oChart.getFirstDiagram() 
    oColorScheme = CreateUnoListener("XColorScheme_", "com.sun.star.chart2.XColorScheme") 
    oFirstDiagram.setDefaultColorScheme(oColorScheme) 
End Sub 

Function XColorScheme_getColorByIndex(index As Integer) As Long 
    Dim result As Long 
    result = &H0000FF ' blue 
    If index = 0 Then 
     result = &H00FF00 ' green 
    ElseIf index = 1 Then 
     result = &HFFFF00 ' yellow 
    End If 
    XColorScheme_getColorByIndex = result 
End Function 

Die einzige relevante Dokumentation ich für diesen Ansatz finden könnte, ist die API-Dokumentation: https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart2/XDiagram.html.

Eine andere Möglichkeit ist es, die Farben in Spalte C setzen

Status  Count Color 
Unfinished 20  =COLOR(0,255,0) 
Finished 30  =COLOR(255,0,0) 

dann die Bereich Set für Farbe füllen Spalte C verwenden Wenn Sie Code für diesen zweiten Ansatz sehen möchten, schreiben Sie einen Kommentar und ich werde mich darum kümmern. Eine andere Möglichkeit ist von https://forum.openoffice.org/en/forum/viewtopic.php?t=36001.

Dieser letzte Ansatz änderte jedoch nicht die Farbe, wenn ich es versuchte.

+0

Vielen Dank! Der erste Ansatz macht genau das, was ich will! – Xavier

Verwandte Themen