Top > OOoBasic > Calc > charts > Chart

チャートオブジェクト Edit

チャートオブジェクト Edit

チャートコンテナからチャートを取得すると com.sun.star.table.TableChart サービスを実装したコンポーネントのインスタンスですがこれはチャートを埋め込み型オブジェクトとして保持するラッパです。チャートモデルにアクセスするには com.sun.star.document.XEmbeddedObjectSupplier インターフェースを利用して次のようにします。

oCharts = oSheet.getCharts()
sNames = oCharts.getElementNames()

oObj = oCharts.getByName(sNames)
oChart = oObj.getEmbeddedObject()

ドキュメントで選択されたオブジェクトからチャートモデルを取得するには次のようになります。

 oDoc = ThisComponent
 oSelection = oDoc.getCurrentSelection()
 If NOT oSelection.supportsService("com.sun.star.drawing.ShapeCollection") Then exit sub
 oChartShape = oSelection.getByIndex(0)
 If NOT oChartShape.supportsService("com.sun.star.drawing.OLE2Shape") Then exit sub
 If NOT (oChartShape.CLSID = "12DCAE26-281F-416F-a234-c3086127382e") Then exit sub
 
 oChart = oChartShape.Model

チャートは図形描写オブジェクトの OLEShape に埋め込まれています。Chart の CLSID でチャートかどうかを判断できます。

チャートの更新 Edit

チャートのプロパティーを変更しても表示されているチャートが実際に変更されない場合があります。その場合,Calc ドキュメントのセルの内容の再計算を行うと更新されます。

oDoc = ThisComponent

oDoc.calculate()

チャートのデータ範囲 Edit

チャートのデータ範囲を文字列として取得するプロパティがあります。チャートドキュメントオブジェクトの ChartRangeAddress プロパティーです。

チャートの見た目 Edit

全てのチャートに関するタイトルなど見た目に関する内容を取り上げます。

チャートタイトル Edit

チャートのタイトルはチャートドキュメントオブジェクトの Title プロパティーで設定します。

チャートサブタイトル Edit

チャートのサブタイトルはチャートドキュメントオブジェクトの SubTitle プロパティーで設定します。

チャートエリア Edit

チャートエリアの設定はチャートドキュメントオブジェクトの Area プロパティーで行います。

データラベルの有無 Edit

チャートを作成するときにはデータ範囲の最初の行または列をデータラベルとして利用するかどうかを指定できます。これらの設定はチャートドキュメントオブジェクトのプロパティーを使用して設定します。最初の列をデータラベルとして利用するときは DataSourceLabelsInFirstColumn プロパティーを true にします。また,最初の行をデータラベルとして使用するかどうかは DataSourceLabelsInFirstRow プロパティーで設定します。

チャートの位置 Edit

シート上でのチャートの位置はシート上での OLE2Shape の位置になります。設定方法はシート上での図形描写オブジェクトの配置と同じです。

次のようにすると特定のチャートオブジェクトを保持しているシェープを見つけることができます。

sub FindChartShape1
 oDoc = ThisComponent
 oSheet = oDoc.getSheets().getByIndex(0)
 oDrawPage = oSheet.getDrawPage()
 oCharts = oSheet.getCharts()
 
 oObj = oCharts.getByName("Object 3")
 oChart = oObj.getEmbeddedObject()
 
 oShape = FindChartShape(oDrawPage, oChart)
 If NOT IsNull(oShape) Then
   msgbox "found."
 End If
end sub


Function FindChartShape(oDrawPage As Object, oChart As Object) As Object
 Dim oShape As Object
 
 For i = 0 To oDrawPage.getCount() - 1 step 1
   oShape = oDrawPage.getByIndex(i)
   If oShape.supportsService("com.sun.star.drawing.OLE2Shape") Then
     If oShape.CLSID = "12DCAE26-281F-416F-a234-c3086127382e" Then
       If EqualUnoObjects(oShape.Model, oChart) Then
         oShape = oShape
       End If
     End If
   End If
 Next
 FindChartShape = oShape
End Function

プロパティ Edit

プロパティ説明
AdditionalShapescom.sun.star.drawing.XShapes追加図形描写オブジェクト
DataSourceLabelsInFirstColumnboolean
DataSourceLabelsInFirstRowboolean
Modifiedboolean編集状態
NullDatecom.sun.star.util.DateTime
RefreshAddInAllowedboolean
HasLegendboolean凡例の有無
HasMainTitlebooleanタイトルの有無
HasSubTitlebooleanサブタイトルの有無

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes